private Font2D getFont2D() { FontManager fm = FontManagerFactory.getInstance(); if (fm.usingPerAppContextComposites() && font2DHandle != null && font2DHandle.font2D instanceof CompositeFont && ((CompositeFont)(font2DHandle.font2D)).isStdComposite()) { return fm.findFont2D(name, style, FontManager.LOGICAL_FALLBACK); } else if (font2DHandle == null) { font2DHandle = fm.findFont2D(name, style, FontManager.LOGICAL_FALLBACK).handle; } /* Do not cache the de-referenced font2D. It must be explicitly * de-referenced to pick up a valid font in the event that the * original one is marked invalid */ return font2DHandle.font2D; }
private Font(String name, int style, float sizePts, boolean created, Font2DHandle handle) { this(name, style, sizePts); this.createdFont = created; /* Fonts created from a stream will use the same font2D instance * as the parent. * One exception is that if the derived font is requested to be * in a different style, then also check if its a CompositeFont * and if so build a new CompositeFont from components of that style. * CompositeFonts can only be marked as "created" if they are used * to add fall backs to a physical font. And non-composites are * always from "Font.createFont()" and shouldn't get this treatment. */ if (created) { if (handle.font2D instanceof CompositeFont && handle.font2D.getStyle() != style) { FontManager fm = FontManagerFactory.getInstance(); this.font2DHandle = fm.getNewComposite(null, style, handle); } else { this.font2DHandle = handle; } } }
@Override protected FontUIResource getFontConfigFUIR(String family, int style, int size) { CompositeFont font2D = getFontConfigManager().getFontConfigFont(family, style); if (font2D == null) { // Not expected, just a precaution. return new FontUIResource(family, style, size); } /* The name of the font will be that of the physical font in slot, * but by setting the handle to that of the CompositeFont it * renders as that CompositeFont. * It also needs to be marked as a created font which is the * current mechanism to signal that deriveFont etc must copy * the handle from the original font. */ FontUIResource fuir = new FontUIResource(font2D.getFamilyName(null), style, size); FontAccess.getFontAccess().setFont2D(fuir, font2D.handle); FontAccess.getFontAccess().setCreatedFont(fuir); return fuir; }
private Font2D getFont2D() { if (FontManager.usingPerAppContextComposites && font2DHandle != null && font2DHandle.font2D instanceof CompositeFont && ((CompositeFont)(font2DHandle.font2D)).isStdComposite()) { return FontManager.findFont2D(name, style, FontManager.LOGICAL_FALLBACK); } else if (font2DHandle == null) { font2DHandle = FontManager.findFont2D(name, style, FontManager.LOGICAL_FALLBACK).handle; } /* Do not cache the de-referenced font2D. It must be explicitly * de-referenced to pick up a valid font in the event that the * original one is marked invalid */ return font2DHandle.font2D; }
private Font(String name, int style, float sizePts, boolean created, Font2DHandle handle) { this(name, style, sizePts); this.createdFont = created; /* Fonts created from a stream will use the same font2D instance * as the parent. * One exception is that if the derived font is requested to be * in a different style, then also check if its a CompositeFont * and if so build a new CompositeFont from components of that style. * CompositeFonts can only be marked as "created" if they are used * to add fall backs to a physical font. And non-composites are * always from "Font.createFont()" and shouldn't get this treatment. */ if (created) { if (handle.font2D instanceof CompositeFont && handle.font2D.getStyle() != style) { this.font2DHandle = FontManager.getNewComposite(null, style, handle); } else { this.font2DHandle = handle; } } }