Class PDType3Font

All Implemented Interfaces:
COSObjectable, PDFontLike

public class PDType3Font extends PDSimpleFont
A PostScript Type 3 Font.
  • Field Details

    • 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 Details

    • PDType3Font

      public PDType3Font(COSDictionary fontDictionary) throws IOException
      Constructor.
      Parameters:
      fontDictionary - The font dictionary according to the PDF specification.
      Throws:
      IOException
    • PDType3Font

      public PDType3Font(COSDictionary fontDictionary, ResourceCache resourceCache) throws IOException
      Constructor.
      Parameters:
      fontDictionary - The font dictionary according to the PDF specification.
      resourceCache - Resource cache, can be null.
      Throws:
      IOException
  • Method Details

    • getName

      public 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 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 class PDSimpleFont
      Throws:
      IOException - if the font file could not be read
    • readEncodingFromFont

      protected Encoding readEncodingFromFont() throws IOException
      Description copied from class: PDSimpleFont
      Called by readEncoding() if the encoding needs to be extracted from the font file.
      Specified by:
      readEncodingFromFont in class PDSimpleFont
      Throws:
      IOException - if the font file could not be read.
    • isFontSymbolic

      protected Boolean isFontSymbolic()
      Description copied from class: PDSimpleFont
      Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.
      Overrides:
      isFontSymbolic in class PDSimpleFont
    • getPath

      public GeneralPath getPath(String name) throws 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 class PDSimpleFont
      Returns:
      glyph path
      Throws:
      IOException - if the path could not be read
    • hasGlyph

      public boolean hasGlyph(String name) throws IOException
      Description copied from class: PDSimpleFont
      Returns true if the font contains the character with the given name.
      Specified by:
      hasGlyph in class PDSimpleFont
      Throws:
      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 class PDSimpleFont
    • getDisplacement

      public Vector getDisplacement(int code) throws 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 class PDFont
      Parameters:
      code - character code
      Returns:
      displacement vector
      Throws:
      IOException
    • getWidth

      public float getWidth(int code) throws 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 interface PDFontLike
      Overrides:
      getWidth in class PDFont
      Parameters:
      code - character code
      Throws:
      IOException
    • getWidthFromFont

      public float getWidthFromFont(int code) throws 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:
      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 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:
      IOException
    • encode

      protected byte[] encode(int unicode) throws 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.

      Specified by:
      encode in class PDFont
      Parameters:
      unicode - Unicode code point.
      Returns:
      Array of 1 to 4 PDF content stream bytes.
      Throws:
      IOException - If the text could not be encoded.
    • readCode

      public int readCode(InputStream in) throws IOException
      Description copied from class: PDFont
      Reads a character code from a content stream string. Codes may be up to 4 bytes long.
      Specified by:
      readCode in class PDFont
      Parameters:
      in - string stream
      Returns:
      character code
      Throws:
      IOException - if the CMap or stream cannot be read
    • 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 interface PDFontLike
      Overrides:
      getFontMatrix in class PDFont
    • 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 class PDSimpleFont
    • 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