Package org.apache.pdfbox.pdmodel.font
Class PDSimpleFont
- java.lang.Object
-
- org.apache.pdfbox.pdmodel.font.PDFont
-
- org.apache.pdfbox.pdmodel.font.PDSimpleFont
-
- All Implemented Interfaces:
COSObjectable
,PDFontLike
- Direct Known Subclasses:
PDTrueTypeFont
,PDType1CFont
,PDType1Font
,PDType3Font
public abstract class PDSimpleFont extends PDFont
A simple font. Simple fonts use a PostScript encoding vector.
-
-
Field Summary
Fields Modifier and Type Field Description protected Encoding
encoding
protected GlyphList
glyphList
private java.lang.Boolean
isSymbolic
private static org.apache.commons.logging.Log
LOG
private java.util.Set<java.lang.Integer>
noUnicode
-
Fields inherited from class org.apache.pdfbox.pdmodel.font.PDFont
DEFAULT_FONT_MATRIX, dict
-
-
Constructor Summary
Constructors Constructor Description PDSimpleFont()
Constructor for embedding.PDSimpleFont(java.lang.String baseFont)
Constructor for Standard 14.PDSimpleFont(COSDictionary fontDictionary)
Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addToSubset(int codePoint)
Adds the given Unicode point to the subset.private void
assignGlyphList(java.lang.String baseFont)
Encoding
getEncoding()
Returns the Encoding vector.abstract FontBoxFont
getFontBoxFont()
Returns the embedded or system font used for rendering.GlyphList
getGlyphList()
Returns the Encoding vector.abstract java.awt.geom.GeneralPath
getPath(java.lang.String name)
Returns the path for the character with the given name.protected float
getStandard14Width(int code)
Returns the glyph width from the AFM if this is a Standard 14 font.protected java.lang.Boolean
getSymbolicFlag()
Returns the value of the symbolic flag, allowing for the fact that the result may be indeterminate.boolean
hasExplicitWidth(int code)
Returns true if the Font dictionary specifies an explicit width for the given glyph.abstract boolean
hasGlyph(java.lang.String name)
Returns true if the font contains the character with the given name.protected java.lang.Boolean
isFontSymbolic()
Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.boolean
isStandard14()
Returns true if this font is one of the "Standard 14" fonts and receives special handling.boolean
isSymbolic()
Returns true the font is a symbolic (that is, it does not use the Adobe Standard Roman character set).boolean
isVertical()
Returns true if the font uses vertical writing mode.protected void
readEncoding()
Reads the Encoding from the Font dictionary or the embedded or substituted font file.protected abstract Encoding
readEncodingFromFont()
Called by readEncoding() if the encoding needs to be extracted from the font file.void
subset()
Replaces this font with a subset containing only the given Unicode characters.java.lang.String
toUnicode(int code)
Returns the Unicode character sequence which corresponds to the given character code.java.lang.String
toUnicode(int code, GlyphList customGlyphList)
Returns the Unicode character sequence which corresponds to the given character code.boolean
willBeSubset()
Returns true if this font will be subset when embedded.-
Methods inherited from class org.apache.pdfbox.pdmodel.font.PDFont
encode, encode, equals, getAverageFontWidth, getCOSObject, getDisplacement, getFontDescriptor, getFontMatrix, getPositionVector, getSpaceWidth, getStandard14AFM, getStringWidth, getSubType, getToUnicodeCMap, getType, getWidth, getWidths, hashCode, readCMap, readCode, setFontDescriptor, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.pdfbox.pdmodel.font.PDFontLike
getBoundingBox, getHeight, getName, getWidthFromFont, isDamaged, isEmbedded
-
-
-
-
Constructor Detail
-
PDSimpleFont
PDSimpleFont()
Constructor for embedding.
-
PDSimpleFont
PDSimpleFont(java.lang.String baseFont)
Constructor for Standard 14.
-
PDSimpleFont
PDSimpleFont(COSDictionary fontDictionary) throws java.io.IOException
Constructor.- Parameters:
fontDictionary
- Font dictionary.- Throws:
java.io.IOException
-
-
Method Detail
-
readEncoding
protected void readEncoding() throws java.io.IOException
Reads the Encoding from the Font dictionary or the embedded or substituted font file. Must be called at the end of any subclass constructors.- Throws:
java.io.IOException
- if the font file could not be read
-
readEncodingFromFont
protected abstract Encoding readEncodingFromFont() throws java.io.IOException
Called by readEncoding() if the encoding needs to be extracted from the font file.- Throws:
java.io.IOException
- if the font file could not be read.
-
getEncoding
public Encoding getEncoding()
Returns the Encoding vector.
-
getGlyphList
public GlyphList getGlyphList()
Returns the Encoding vector.
-
isSymbolic
public final boolean isSymbolic()
Returns true the font is a symbolic (that is, it does not use the Adobe Standard Roman character set).
-
isFontSymbolic
protected java.lang.Boolean isFontSymbolic()
Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.
-
getSymbolicFlag
protected final java.lang.Boolean getSymbolicFlag()
Returns the value of the symbolic flag, allowing for the fact that the result may be indeterminate.
-
toUnicode
public java.lang.String toUnicode(int code) throws java.io.IOException
Description copied from class:PDFont
Returns the Unicode character sequence which corresponds to the given character code.
-
toUnicode
public java.lang.String toUnicode(int code, GlyphList customGlyphList) throws java.io.IOException
Description copied from class:PDFont
Returns the Unicode character sequence which corresponds to the given character code.
-
isVertical
public boolean isVertical()
Description copied from class:PDFont
Returns true if the font uses vertical writing mode.- Specified by:
isVertical
in classPDFont
-
getStandard14Width
protected final float getStandard14Width(int code)
Description copied from class:PDFont
Returns the glyph width from the AFM if this is a Standard 14 font.- Specified by:
getStandard14Width
in classPDFont
- Parameters:
code
- character code- Returns:
- width in 1/1000 text space
-
isStandard14
public boolean isStandard14()
Description copied from class:PDFont
Returns true if this font is one of the "Standard 14" fonts and receives special handling.- Overrides:
isStandard14
in classPDFont
-
getPath
public abstract java.awt.geom.GeneralPath getPath(java.lang.String name) throws java.io.IOException
Returns the path for the character with the given name. For some fonts, GIDs may be used instead of names when calling this method.- Returns:
- glyph path
- Throws:
java.io.IOException
- if the path could not be read
-
hasGlyph
public abstract boolean hasGlyph(java.lang.String name) throws java.io.IOException
Returns true if the font contains the character with the given name.- Throws:
java.io.IOException
- if the path could not be read
-
getFontBoxFont
public abstract FontBoxFont getFontBoxFont()
Returns the embedded or system font used for rendering. This is never null.
-
addToSubset
public void addToSubset(int codePoint)
Description copied from class:PDFont
Adds the given Unicode point to the subset.- Specified by:
addToSubset
in classPDFont
- Parameters:
codePoint
- Unicode code point
-
subset
public void subset() throws java.io.IOException
Description copied from class:PDFont
Replaces this font with a subset containing only the given Unicode characters.
-
willBeSubset
public boolean willBeSubset()
Description copied from class:PDFont
Returns true if this font will be subset when embedded.- Specified by:
willBeSubset
in classPDFont
-
hasExplicitWidth
public boolean hasExplicitWidth(int code) throws java.io.IOException
Description copied from interface:PDFontLike
Returns true if the Font dictionary specifies an explicit width for the given glyph. This includes Width, W but not default widths entries.- Parameters:
code
- character code- Throws:
java.io.IOException
- if the font could not be read
-
assignGlyphList
private void assignGlyphList(java.lang.String baseFont)
-
-