Class PDType3Font
- java.lang.Object
-
- org.apache.pdfbox.pdmodel.font.PDFont
-
- org.apache.pdfbox.pdmodel.font.PDSimpleFont
-
- org.apache.pdfbox.pdmodel.font.PDType3Font
-
- All Implemented Interfaces:
COSObjectable
,PDFontLike
public class PDType3Font extends PDSimpleFont
A PostScript Type 3 Font.
-
-
Field Summary
Fields Modifier and Type Field Description private COSDictionary
charProcs
private BoundingBox
fontBBox
private Matrix
fontMatrix
private static org.apache.commons.logging.Log
LOG
Log instance.private ResourceCache
resourceCache
private PDResources
resources
-
Fields inherited from class org.apache.pdfbox.pdmodel.font.PDSimpleFont
encoding, glyphList
-
Fields inherited from class org.apache.pdfbox.pdmodel.font.PDFont
DEFAULT_FONT_MATRIX, dict
-
-
Constructor Summary
Constructors Constructor Description PDType3Font(COSDictionary fontDictionary)
Constructor.PDType3Font(COSDictionary fontDictionary, ResourceCache resourceCache)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected byte[]
encode(int unicode)
Encodes the given Unicode code point for use in a PDF content stream.private BoundingBox
generateBoundingBox()
BoundingBox
getBoundingBox()
Returns the font's bounding box.PDType3CharProc
getCharProc(int code)
Returns the stream of the glyph for the given character codeCOSDictionary
getCharProcs()
Returns the dictionary containing all streams to be used to render the glyphs.Vector
getDisplacement(int code)
Returns the displacement vector (w0, w1) in text space, for the given character.PDRectangle
getFontBBox()
This will get the fonts bounding box from its dictionary.FontBoxFont
getFontBoxFont()
Returns the embedded or system font used for rendering.Matrix
getFontMatrix()
Returns the font matrix, which represents the transformation from glyph space to text space.float
getHeight(int code)
Returns the height of the given character, in glyph space.java.lang.String
getName()
Returns the name of this font, either the PostScript "BaseName" or the Type 3 "Name".java.awt.geom.GeneralPath
getPath(java.lang.String name)
Returns the path for the character with the given name.PDResources
getResources()
Returns the optional resources of the type3 stream.float
getWidth(int code)
Returns the advance width of the given character, in glyph space.float
getWidthFromFont(int code)
Returns the width of a glyph in the embedded font file.boolean
hasGlyph(java.lang.String name)
Returns true if the font contains the character with the given name.boolean
isDamaged()
Returns true if the embedded font file is damaged.boolean
isEmbedded()
Returns true if the font file is embedded in the PDF.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.int
readCode(java.io.InputStream in)
Reads a character code from a content stream string.protected void
readEncoding()
Reads the Encoding from the Font dictionary or the embedded or substituted font file.protected Encoding
readEncodingFromFont()
Called by readEncoding() if the encoding needs to be extracted from the font file.-
Methods inherited from class org.apache.pdfbox.pdmodel.font.PDSimpleFont
addToSubset, getEncoding, getGlyphList, getStandard14Width, getSymbolicFlag, hasExplicitWidth, isSymbolic, isVertical, subset, toUnicode, toUnicode, willBeSubset
-
Methods inherited from class org.apache.pdfbox.pdmodel.font.PDFont
encode, equals, getAverageFontWidth, getCOSObject, getFontDescriptor, getPositionVector, getSpaceWidth, getStandard14AFM, getStringWidth, getSubType, getType, getWidths, hashCode, readCMap, setFontDescriptor, toString
-
-
-
-
Field Detail
-
LOG
private static final org.apache.commons.logging.Log LOG
Log instance.
-
resources
private PDResources resources
-
charProcs
private COSDictionary charProcs
-
fontMatrix
private Matrix fontMatrix
-
fontBBox
private BoundingBox fontBBox
-
resourceCache
private final ResourceCache resourceCache
-
-
Constructor Detail
-
PDType3Font
public PDType3Font(COSDictionary fontDictionary) throws java.io.IOException
Constructor.- Parameters:
fontDictionary
- The font dictionary according to the PDF specification.- Throws:
java.io.IOException
-
PDType3Font
public PDType3Font(COSDictionary fontDictionary, ResourceCache resourceCache) throws java.io.IOException
Constructor.- Parameters:
fontDictionary
- The font dictionary according to the PDF specification.resourceCache
- Resource cache, can be null.- Throws:
java.io.IOException
-
-
Method Detail
-
getName
public java.lang.String getName()
Description copied from interface:PDFontLike
Returns the name of this font, either the PostScript "BaseName" or the Type 3 "Name".
-
readEncoding
protected final void readEncoding() throws java.io.IOException
Description copied from class:PDSimpleFont
Reads the Encoding from the Font dictionary or the embedded or substituted font file. Must be called at the end of any subclass constructors.- Overrides:
readEncoding
in classPDSimpleFont
- Throws:
java.io.IOException
- if the font file could not be read
-
readEncodingFromFont
protected Encoding readEncodingFromFont() throws java.io.IOException
Description copied from class:PDSimpleFont
Called by readEncoding() if the encoding needs to be extracted from the font file.- Specified by:
readEncodingFromFont
in classPDSimpleFont
- Throws:
java.io.IOException
- if the font file could not be read.
-
isFontSymbolic
protected java.lang.Boolean isFontSymbolic()
Description copied from class:PDSimpleFont
Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.- Overrides:
isFontSymbolic
in classPDSimpleFont
-
getPath
public java.awt.geom.GeneralPath getPath(java.lang.String name) throws java.io.IOException
Description copied from class:PDSimpleFont
Returns the path for the character with the given name. For some fonts, GIDs may be used instead of names when calling this method.- Specified by:
getPath
in classPDSimpleFont
- Returns:
- glyph path
- Throws:
java.io.IOException
- if the path could not be read
-
hasGlyph
public boolean hasGlyph(java.lang.String name) throws java.io.IOException
Description copied from class:PDSimpleFont
Returns true if the font contains the character with the given name.- Specified by:
hasGlyph
in classPDSimpleFont
- Throws:
java.io.IOException
- if the path could not be read
-
getFontBoxFont
public FontBoxFont getFontBoxFont()
Description copied from class:PDSimpleFont
Returns the embedded or system font used for rendering. This is never null.- Specified by:
getFontBoxFont
in classPDSimpleFont
-
getDisplacement
public Vector getDisplacement(int code) throws java.io.IOException
Description copied from class:PDFont
Returns the displacement vector (w0, w1) in text space, for the given character. For horizontal text only the x component is used, for vertical text only the y component.- Overrides:
getDisplacement
in classPDFont
- Parameters:
code
- character code- Returns:
- displacement vector
- Throws:
java.io.IOException
-
getWidth
public float getWidth(int code) throws java.io.IOException
Description copied from interface:PDFontLike
Returns the advance width of the given character, in glyph space.If you want the visual bounds of the glyph then call getPath(..) on the appropriate PDFont subclass to retrieve the glyph outline as a GeneralPath instead. See the cyan rectangles in the DrawPrintTextLocations.java example to see this in action.
- Specified by:
getWidth
in interfacePDFontLike
- Overrides:
getWidth
in classPDFont
- Parameters:
code
- character code- Throws:
java.io.IOException
-
getWidthFromFont
public float getWidthFromFont(int code) throws java.io.IOException
Description copied from interface:PDFontLike
Returns the width of a glyph in the embedded font file.- Parameters:
code
- character code- Returns:
- width in glyph space
- Throws:
java.io.IOException
- if the font could not be read
-
isEmbedded
public boolean isEmbedded()
Description copied from interface:PDFontLike
Returns true if the font file is embedded in the PDF.
-
getHeight
public float getHeight(int code) throws java.io.IOException
Description copied from interface:PDFontLike
Returns the height of the given character, in glyph space. This can be expensive to calculate. Results are only approximate.Warning: This method is deprecated in PDFBox 2.0 because there is no meaningful value which it can return. The
PDFontLike.getWidth(int)
method returns the advance width of a glyph, but there is no corresponding advance height. The logical height of a character is the same for every character in a font, so if you want that, retrieve the font bbox's height. Otherwise if you want the visual bounds of the glyph then call getPath(..) on the appropriate PDFont subclass to retrieve the glyph outline as a GeneralPath. See the cyan rectangles in the DrawPrintTextLocations.java example to see this in action.- Parameters:
code
- character code- Throws:
java.io.IOException
-
encode
protected byte[] encode(int unicode) throws java.io.IOException
Description copied from class:PDFont
Encodes the given Unicode code point for use in a PDF content stream. Content streams use a multi-byte encoding with 1 to 4 bytes.This method is called when embedding text in PDFs and when filling in fields.
-
readCode
public int readCode(java.io.InputStream in) throws java.io.IOException
Description copied from class:PDFont
Reads a character code from a content stream string. Codes may be up to 4 bytes long.
-
getFontMatrix
public Matrix getFontMatrix()
Description copied from interface:PDFontLike
Returns the font matrix, which represents the transformation from glyph space to text space.- Specified by:
getFontMatrix
in interfacePDFontLike
- Overrides:
getFontMatrix
in classPDFont
-
isDamaged
public boolean isDamaged()
Description copied from interface:PDFontLike
Returns true if the embedded font file is damaged.
-
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 classPDSimpleFont
-
getResources
public PDResources getResources()
Returns the optional resources of the type3 stream.- Returns:
- the resources bound to be used when parsing the type3 stream
-
getFontBBox
public PDRectangle getFontBBox()
This will get the fonts bounding box from its dictionary.- Returns:
- The fonts bounding box.
-
getBoundingBox
public BoundingBox getBoundingBox()
Description copied from interface:PDFontLike
Returns the font's bounding box.
-
generateBoundingBox
private BoundingBox generateBoundingBox()
-
getCharProcs
public COSDictionary getCharProcs()
Returns the dictionary containing all streams to be used to render the glyphs.- Returns:
- the dictionary containing all glyph streams.
-
getCharProc
public PDType3CharProc getCharProc(int code)
Returns the stream of the glyph for the given character code- Parameters:
code
- character code- Returns:
- the stream to be used to render the glyph
-
-