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 class
private static class
A potential match for a font substitution. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final FontCache
private FontProvider
private final TrueTypeFont
private static final org.apache.commons.logging.Log
Map of PostScript name substitutes, in priority order. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addSubstitute
(String match, String replace) Adds a top-priority substitute for the given font.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 FontBoxFont
findFont
(FontFormat format, String postScriptName) Finds a font with the given PostScript name, or a suitable substitute, or null.private FontBoxFont
findFontBoxFont
(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 String
getFallbackFontName
(PDFontDescriptor fontDescriptor) Attempts to find a good fallback based on the font descriptor.private FontInfo
getFont
(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 boolean
isCharSetMatch
(PDCIDSystemInfo cidSystemInfo, FontInfo info) Returns true if the character set described by CIDSystemInfo is present in the given font.private FontMapperImpl.FontMatch
For debugging.private boolean
probablyBarcodeFont
(PDFontDescriptor fontDescriptor) void
setProvider
(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
-
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:
getTrueTypeFont
in 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:
getFontBoxFont
in 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:
getCIDFont
in 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.
-