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 Details

    • LOG

      private static final org.apache.commons.logging.Log LOG
    • encoding

      protected Encoding encoding
    • glyphList

      protected GlyphList glyphList
    • isSymbolic

      private Boolean isSymbolic
    • noUnicode

      private final Set<Integer> noUnicode
  • Constructor Details

    • PDSimpleFont

      PDSimpleFont()
      Constructor for embedding.
    • PDSimpleFont

      PDSimpleFont(String baseFont)
      Constructor for Standard 14.
    • PDSimpleFont

      PDSimpleFont(COSDictionary fontDictionary) throws IOException
      Constructor.
      Parameters:
      fontDictionary - Font dictionary.
      Throws:
      IOException
  • Method Details

    • readEncoding

      protected void readEncoding() throws 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:
      IOException - if the font file could not be read
    • readEncodingFromFont

      protected abstract Encoding readEncodingFromFont() throws IOException
      Called by readEncoding() if the encoding needs to be extracted from the font file.
      Throws:
      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 Boolean isFontSymbolic()
      Internal implementation of isSymbolic, allowing for the fact that the result may be indeterminate.
    • getSymbolicFlag

      protected final Boolean getSymbolicFlag()
      Returns the value of the symbolic flag, allowing for the fact that the result may be indeterminate.
    • toUnicode

      public String toUnicode(int code) throws IOException
      Description copied from class: PDFont
      Returns the Unicode character sequence which corresponds to the given character code.
      Overrides:
      toUnicode in class PDFont
      Parameters:
      code - character code
      Returns:
      Unicode character(s)
      Throws:
      IOException
    • toUnicode

      public String toUnicode(int code, GlyphList customGlyphList) throws IOException
      Description copied from class: PDFont
      Returns the Unicode character sequence which corresponds to the given character code.
      Overrides:
      toUnicode in class PDFont
      Parameters:
      code - character code
      customGlyphList - a custom glyph list to use instead of the Adobe Glyph List
      Returns:
      Unicode character(s)
      Throws:
      IOException
    • isVertical

      public boolean isVertical()
      Description copied from class: PDFont
      Returns true if the font uses vertical writing mode.
      Specified by:
      isVertical in class PDFont
    • 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 class PDFont
      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 class PDFont
    • getPath

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

      public abstract boolean hasGlyph(String name) throws IOException
      Returns true if the font contains the character with the given name.
      Throws:
      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 class PDFont
      Parameters:
      codePoint - Unicode code point
    • subset

      public void subset() throws IOException
      Description copied from class: PDFont
      Replaces this font with a subset containing only the given Unicode characters.
      Specified by:
      subset in class PDFont
      Throws:
      IOException - if the subset could not be written
    • willBeSubset

      public boolean willBeSubset()
      Description copied from class: PDFont
      Returns true if this font will be subset when embedded.
      Specified by:
      willBeSubset in class PDFont
    • 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.
      Parameters:
      code - character code
      Throws:
      IOException - if the font could not be read
    • assignGlyphList

      private void assignGlyphList(String baseFont)