public T match(int desiredWeight, IdentValue style) { if (_fontDescriptions == null) { throw new RuntimeException("fontDescriptions is null"); } List<T> candidates = new ArrayList<T>(); for (T description : _fontDescriptions) { if (description.getStyle() == style) { candidates.add(description); } } if (candidates.size() == 0) { if (style == IdentValue.ITALIC) { return match(desiredWeight, IdentValue.OBLIQUE); } else if (style == IdentValue.OBLIQUE) { return match(desiredWeight, IdentValue.NORMAL); } else { candidates.addAll(_fontDescriptions); } } T result = findByWeight(candidates, desiredWeight, SM_EXACT); if (result != null) { return result; } else { if (desiredWeight <= 500) { return findByWeight(candidates, desiredWeight, SM_LIGHTER_OR_DARKER); } else { return findByWeight(candidates, desiredWeight, SM_DARKER_OR_LIGHTER); } } }
private static void addSymbol(Map<String, FontFamily<FontDescription>> result) throws IOException { FontFamily<FontDescription> fontFamily = new FontFamily<FontDescription>(); fontFamily.setName("Symbol"); fontFamily.addFontDescription(new FontDescription(createFont(PDType1Font.SYMBOL), IdentValue.NORMAL, 400)); result.put("Symbol", fontFamily); }
@Deprecated public void flushFontFaceFonts() { _fontCache = new HashMap<String, FontDescription>(); for (Iterator<FontFamily<FontDescription>> i = _fontFamilies.values().iterator(); i.hasNext(); ) { FontFamily<FontDescription> family = i.next(); for (Iterator<FontDescription> j = family.getFontDescriptions().iterator(); j.hasNext(); ) { FontDescription d = j.next(); if (d.isFromFontFace()) { j.remove(); } } if (family.getFontDescriptions().size() == 0) { i.remove(); } } }
/** * Add a font with a lazy loaded PDFont */ private void addFontLazy(FSSupplier<PDFont> font, String fontFamilyNameOverride, Integer fontWeightOverride, IdentValue fontStyleOverride, boolean subset) { FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyNameOverride); FontDescription descr = new FontDescription( _doc, font, normalizeFontStyle(fontStyleOverride), normalizeFontWeight(fontWeightOverride), fontFamilyNameOverride, false, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (descr.realizeFont()) { fontFamily.addFontDescription(descr); } } else { fontFamily.addFontDescription(descr); } }
private Font resolveFontFaceBaseFont(String normalizedFontFamily, float size, IdentValue weight, IdentValue style) { FontFamily<FontDescription> fontFamily = _fontFamilies.get(normalizedFontFamily); if (fontFamily != null) { FontDescription result = fontFamily.match(FontResolverHelper.convertWeightToInt(weight), style); if (result != null) { if (result.realizeFont()) { return result.getBaseFont(); } } } return null; }
private FontFamily<FontDescription> getFontFamily(String fontFamilyName) { FontFamily<FontDescription> fontFamily = _fontFamilies.get(fontFamilyName); if (fontFamily == null) { fontFamily = new FontFamily<FontDescription>(); _fontFamilies.put(fontFamilyName, fontFamily); } return fontFamily; }
/** * Add a font using a InputStream. The given file must be a TrueType Font * (.ttf). If you know the underlying stream is a .ttc file you should use * {@link #addFontCollection(FSSupplier, String, Integer, IdentValue, boolean)} */ public void addFont(FSSupplier<InputStream> supplier, String fontFamilyNameOverride, Integer fontWeightOverride, IdentValue fontStyleOverride, boolean subset) { FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyNameOverride); FontDescription descr = new FontDescription( _doc, supplier, normalizeFontWeight(fontWeightOverride), normalizeFontStyle(fontStyleOverride), fontFamilyNameOverride, false, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (descr.realizeFont()) { fontFamily.addFontDescription(descr); } } else { fontFamily.addFontDescription(descr); } }
private FontDescription resolveFont(SharedContext ctx, String fontFamily, float size, IdentValue weight, IdentValue style, IdentValue variant) { String normalizedFontFamily = normalizeFontFamily(fontFamily); String cacheKey = getHashName(normalizedFontFamily, weight, style); FontDescription result = _fontCache.get(cacheKey); if (result != null) { return result; } FontFamily<FontDescription> family = _fontFamilies.get(normalizedFontFamily); if (family != null) { result = family.match(FontResolverHelper.convertWeightToInt(weight), style); if (result != null) { _fontCache.put(cacheKey, result); return result; } } return null; }
private FontFamily<FontDescription> getFontFamily(String fontFamilyName) { FontFamily<FontDescription> fontFamily = _fontFamilies.get(fontFamilyName); if (fontFamily == null) { fontFamily = new FontFamily<FontDescription>(); _fontFamilies.put(fontFamilyName, fontFamily); } return fontFamily; }
private static void addZapfDingbats(Map<String, FontFamily<FontDescription>> result) throws IOException { FontFamily<FontDescription> fontFamily = new FontFamily<FontDescription>(); fontFamily.setName("ZapfDingbats"); fontFamily.addFontDescription(new FontDescription(createFont(PDType1Font.ZAPF_DINGBATS), IdentValue.NORMAL, 400)); result.put("ZapfDingbats", fontFamily); }
/** * Add a font using a InputStream. The given file must be a TrueType Font * (.ttf). If you know the underlying stream is a .ttc file you should use * {@link #addFontCollection(FSSupplier, String, Integer, IdentValue, boolean)} */ public void addFont(FSSupplier<InputStream> supplier, String fontFamilyNameOverride, Integer fontWeightOverride, IdentValue fontStyleOverride, boolean subset) { FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyNameOverride); FontDescription descr = new FontDescription( _doc, supplier, normalizeFontWeight(fontWeightOverride), normalizeFontStyle(fontStyleOverride), fontFamilyNameOverride, false, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (descr.realizeFont()) { fontFamily.addFontDescription(descr); } } else { fontFamily.addFontDescription(descr); } }
private FontDescription resolveFont(SharedContext ctx, String fontFamily, float size, IdentValue weight, IdentValue style, IdentValue variant) { String normalizedFontFamily = normalizeFontFamily(fontFamily); String cacheKey = getHashName(normalizedFontFamily, weight, style); FontDescription result = _fontCache.get(cacheKey); if (result != null) { return result; } FontFamily<FontDescription> family = _fontFamilies.get(normalizedFontFamily); if (family != null) { result = family.match(FontResolverHelper.convertWeightToInt(weight), style); if (result != null) { _fontCache.put(cacheKey, result); return result; } } return null; }
private FontFamily<FontDescription> getFontFamily(String fontFamilyName) { FontFamily<FontDescription> fontFamily = _fontFamilies.get(fontFamilyName); if (fontFamily == null) { fontFamily = new FontFamily<FontDescription>(); _fontFamilies.put(fontFamilyName, fontFamily); } return fontFamily; }
@Deprecated public void flushFontFaceFonts() { _fontCache = new HashMap<String, FontDescription>(); for (Iterator<FontFamily<FontDescription>> i = _fontFamilies.values().iterator(); i.hasNext(); ) { FontFamily<FontDescription> family = i.next(); for (Iterator<FontDescription> j = family.getFontDescriptions().iterator(); j.hasNext(); ) { FontDescription d = j.next(); if (d.isFromFontFace()) { j.remove(); } } if (family.getFontDescriptions().size() == 0) { i.remove(); } } }
private static void addSymbol(Map<String, FontFamily<FontDescription>> result) throws IOException { FontFamily<FontDescription> fontFamily = new FontFamily<FontDescription>(); fontFamily.setName("Symbol"); fontFamily.addFontDescription(new FontDescription(createFont(PDType1Font.SYMBOL), IdentValue.NORMAL, 400)); result.put("Symbol", fontFamily); }
/** * Add a font with a lazy loaded PDFont */ private void addFontLazy(FSSupplier<PDFont> font, String fontFamilyNameOverride, Integer fontWeightOverride, IdentValue fontStyleOverride, boolean subset) { FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyNameOverride); FontDescription descr = new FontDescription( _doc, font, normalizeFontStyle(fontStyleOverride), normalizeFontWeight(fontWeightOverride), fontFamilyNameOverride, false, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (descr.realizeFont()) { fontFamily.addFontDescription(descr); } } else { fontFamily.addFontDescription(descr); } }
private static void addZapfDingbats(Map<String, FontFamily<FontDescription>> result) throws IOException { FontFamily<FontDescription> fontFamily = new FontFamily<FontDescription>(); fontFamily.setName("ZapfDingbats"); fontFamily.addFontDescription(new FontDescription(createFont(PDType1Font.ZAPF_DINGBATS), IdentValue.NORMAL, 400)); result.put("ZapfDingbats", fontFamily); }
private void addFontFaceFont(String fontFamilyName, IdentValue fontWeight, IdentValue fontStyle, String uri, boolean subset) { FSSupplier<InputStream> fontSupplier = new FontFaceFontSupplier(_sharedContext, uri); FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyName); FontDescription description = new FontDescription( _doc, fontSupplier, normalizeFontWeight(fontWeight), normalizeFontStyle(fontStyle), fontFamilyName, true, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (description.realizeFont()) { fontFamily.addFontDescription(description); } } else { fontFamily.addFontDescription(description); } }
private static void addHelvetica(HashMap<String, FontFamily<FontDescription>> result) throws IOException { FontFamily<FontDescription> helvetica = new FontFamily<FontDescription>(); helvetica.setName("Helvetica"); helvetica.addFontDescription(new FontDescription( createFont(PDType1Font.HELVETICA_BOLD_OBLIQUE), IdentValue.OBLIQUE, 700)); helvetica.addFontDescription(new FontDescription( createFont(PDType1Font.HELVETICA_OBLIQUE), IdentValue.OBLIQUE, 400)); helvetica.addFontDescription(new FontDescription( createFont(PDType1Font.HELVETICA_BOLD), IdentValue.NORMAL, 700)); helvetica.addFontDescription(new FontDescription( createFont(PDType1Font.HELVETICA), IdentValue.NORMAL, 400)); result.put("Dialog", helvetica); result.put("SansSerif", helvetica); result.put("Helvetica", helvetica); }
private void addFontFaceFont(String fontFamilyName, IdentValue fontWeight, IdentValue fontStyle, String uri, boolean subset) { FSSupplier<InputStream> fontSupplier = new FontFaceFontSupplier(_sharedContext, uri); FontFamily<FontDescription> fontFamily = getFontFamily(fontFamilyName); FontDescription description = new FontDescription( _doc, fontSupplier, normalizeFontWeight(fontWeight), normalizeFontStyle(fontStyle), fontFamilyName, true, // isFromFontFace subset, _fontMetricsCache); if (!subset) { if (description.realizeFont()) { fontFamily.addFontDescription(description); } } else { fontFamily.addFontDescription(description); } }