Class PDCIDFont

java.lang.Object
org.apache.pdfbox.pdmodel.font.PDCIDFont
All Implemented Interfaces:
COSObjectable, PDFontLike, PDVectorFont
Direct Known Subclasses:
PDCIDFontType0, PDCIDFontType2

public abstract class PDCIDFont extends Object implements COSObjectable, PDFontLike, PDVectorFont
A CIDFont. A CIDFont is a PDF object that contains information about a CIDFont program. Although its Type value is Font, a CIDFont is not actually a font.

It is not usually necessary to use this class directly, prefer PDType0Font.

Author:
Ben Litchfield
  • Field Details

  • Method Details

    • getCOSObject

      public COSDictionary getCOSObject()
      Description copied from interface: COSObjectable
      Convert this standard java object to a COS object.
      Specified by:
      getCOSObject in interface COSObjectable
      Returns:
      The cos object that matches this Java object.
    • getBaseFont

      public String getBaseFont()
      The PostScript name of the font.
      Returns:
      The postscript name of the font.
    • getName

      public String getName()
      Description copied from interface: PDFontLike
      Returns the name of this font, either the PostScript "BaseName" or the Type 3 "Name".
      Specified by:
      getName in interface PDFontLike
    • getFontDescriptor

      public PDFontDescriptor getFontDescriptor()
      Description copied from interface: PDFontLike
      Returns the font descriptor, may be null.
      Specified by:
      getFontDescriptor in interface PDFontLike
    • getParent

      public final PDType0Font getParent()
      Returns the Type 0 font which is the parent of this font.
      Returns:
      parent Type 0 font
    • hasExplicitWidth

      public boolean hasExplicitWidth(int code) throws 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.
      Specified by:
      hasExplicitWidth in interface PDFontLike
      Parameters:
      code - character code
      Throws:
      IOException - if the font could not be read
    • getPositionVector

      public Vector getPositionVector(int code)
      Description copied from interface: PDFontLike
      Returns the position vector (v), in text space, for the given character. This represents the position of vertical origin relative to horizontal origin, for horizontal writing it will always be (0, 0). For vertical writing both x and y are set.
      Specified by:
      getPositionVector in interface PDFontLike
      Parameters:
      code - character code
      Returns:
      position vector
    • getVerticalDisplacementVectorY

      public float getVerticalDisplacementVectorY(int code)
      Returns the y-component of the vertical displacement vector (w1).
      Parameters:
      code - character code
      Returns:
      w1y
    • 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
      Parameters:
      code - character code
      Throws:
      IOException
    • getAverageFontWidth

      public float getAverageFontWidth()
      Description copied from interface: PDFontLike
      This will get the average font width for all characters.
      Specified by:
      getAverageFontWidth in interface PDFontLike
      Returns:
      The width is in 1000 unit of text space, ie 333 or 777
    • getCIDSystemInfo

      public PDCIDSystemInfo getCIDSystemInfo()
      Returns the CIDSystemInfo, or null if it is missing (which isn't allowed but could happen).
    • codeToCID

      public abstract int codeToCID(int code)
      Returns the CID for the given character code. If not found then CID 0 is returned.
      Parameters:
      code - character code
      Returns:
      CID
    • codeToGID

      public abstract int codeToGID(int code) throws IOException
      Returns the GID for the given character code.
      Parameters:
      code - character code
      Returns:
      GID
      Throws:
      IOException
    • encode

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

      Parameters:
      unicode - Unicode code point.
      Returns:
      Array of 1 to 4 PDF content stream bytes.
      Throws:
      IOException - If the text could not be encoded.