Package org.apache.pdfbox.pdmodel.font
Class FontMapperImpl
java.lang.Object
org.apache.pdfbox.pdmodel.font.FontMapperImpl
- All Implemented Interfaces:
FontMapper
Font mapper, locates non-embedded fonts via a pluggable FontProvider.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static classA potential match for a font substitution. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final FontCacheprivate FontProviderprivate final TrueTypeFontprivate static final org.apache.commons.logging.LogMap of PostScript name substitutes, in priority order. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSubstitute(String match, String replace) Adds a top-priority substitute for the given font.private voidaddSubstitutes(String match, List<String> replacements) copySubstitutes(String postScriptName) Copies a list of font substitutes, adding the original font at the start of the list.createFontInfoByName(List<? extends FontInfo> fontInfoList) private FontBoxFontfindFont(FontFormat format, String postScriptName) Finds a font with the given PostScript name, or a suitable substitute, or null.private FontBoxFontfindFontBoxFont(String postScriptName) Finds a font with the given PostScript name, or a suitable substitute, or null.getCIDFont(String baseFont, PDFontDescriptor fontDescriptor, PDCIDSystemInfo cidSystemInfo) Finds a CFF CID-Keyed font with the given PostScript name, or a suitable substitute, or null.private StringgetFallbackFontName(PDFontDescriptor fontDescriptor) Attempts to find a good fallback based on the font descriptor.private FontInfogetFont(FontFormat format, String postScriptName) Finds the named font with the given format.getFontBoxFont(String baseFont, PDFontDescriptor fontDescriptor) Finds a font with the given PostScript name, or a suitable substitute, or null.Returns the font cache associated with this FontMapper.private PriorityQueue<FontMapperImpl.FontMatch>getFontMatches(PDFontDescriptor fontDescriptor, PDCIDSystemInfo cidSystemInfo) Returns a list of matching fonts, scored by suitability.getPostScriptNames(String postScriptName) Gets alternative names, as seen in some PDFs, e.g.Returns the font service provider.getSubstitutes(String postScriptName) Returns the substitutes for a given font.getTrueTypeFont(String baseFont, PDFontDescriptor fontDescriptor) Finds a TrueType font with the given PostScript name, or a suitable substitute, or null.private booleanisCharSetMatch(PDCIDSystemInfo cidSystemInfo, FontInfo info) Returns true if the character set described by CIDSystemInfo is present in the given font.private FontMapperImpl.FontMatchFor debugging.private booleanprobablyBarcodeFont(PDFontDescriptor fontDescriptor) voidsetProvider(FontProvider fontProvider) Sets the font service provider.
-
Field Details
-
LOG
private static final org.apache.commons.logging.Log LOG -
fontCache
-
fontProvider
-
fontInfoByName
-
lastResortFont
-
substitutes
Map of PostScript name substitutes, in priority order.
-
-
Constructor Details
-
FontMapperImpl
FontMapperImpl()
-
-
Method Details
-
setProvider
Sets the font service provider. -
getProvider
Returns the font service provider. Defaults to using FileSystemFontProvider. -
getFontCache
Returns the font cache associated with this FontMapper. This method is needed by FontProvider subclasses. -
createFontInfoByName
-
getPostScriptNames
Gets alternative names, as seen in some PDFs, e.g. PDFBOX-142. -
copySubstitutes
Copies a list of font substitutes, adding the original font at the start of the list. -
addSubstitute
Adds a top-priority substitute for the given font.- Parameters:
match- PostScript name of the font to matchreplace- PostScript name of the font to use as a replacement
-
addSubstitutes
-
getSubstitutes
Returns the substitutes for a given font. -
getFallbackFontName
Attempts to find a good fallback based on the font descriptor. -
getTrueTypeFont
Finds a TrueType font with the given PostScript name, or a suitable substitute, or null.- Specified by:
getTrueTypeFontin interfaceFontMapper- Parameters:
fontDescriptor- FontDescriptor
-
getFontBoxFont
Finds a font with the given PostScript name, or a suitable substitute, or null. This allows any font to be substituted with a PFB, TTF or OTF.- Specified by:
getFontBoxFontin interfaceFontMapper- Parameters:
fontDescriptor- the FontDescriptor of the font to find
-
findFontBoxFont
Finds a font with the given PostScript name, or a suitable substitute, or null.- Parameters:
postScriptName- PostScript font name
-
findFont
Finds a font with the given PostScript name, or a suitable substitute, or null.- Parameters:
postScriptName- PostScript font name
-
getFont
Finds the named font with the given format. -
getCIDFont
public CIDFontMapping getCIDFont(String baseFont, PDFontDescriptor fontDescriptor, PDCIDSystemInfo cidSystemInfo) Finds a CFF CID-Keyed font with the given PostScript name, or a suitable substitute, or null. This method can also map CJK fonts via their CIDSystemInfo (ROS).- Specified by:
getCIDFontin interfaceFontMapper- Parameters:
fontDescriptor- FontDescriptorcidSystemInfo- the CID system info, e.g. "Adobe-Japan1", if any.
-
getFontMatches
private PriorityQueue<FontMapperImpl.FontMatch> getFontMatches(PDFontDescriptor fontDescriptor, PDCIDSystemInfo cidSystemInfo) Returns a list of matching fonts, scored by suitability. Positive scores indicate matches for certain attributes, while negative scores indicate mismatches. Zero scores are neutral.- Parameters:
fontDescriptor- FontDescriptor, always present.cidSystemInfo- Font's CIDSystemInfo, may be null.
-
probablyBarcodeFont
-
isCharSetMatch
Returns true if the character set described by CIDSystemInfo is present in the given font. Only applies to Adobe-GB1, Adobe-CNS1, Adobe-Japan1, Adobe-Korea1, as per the PDF spec. -
printMatches
For debugging. Prints all matches and returns the best match.
-