Class PDFFont

java.lang.Object
com.sun.pdfview.font.PDFFont
Direct Known Subclasses:
OutlineFont, Type0Font, Type3Font

public abstract class PDFFont extends Object
a Font definition for PDF files
  • Field Details

    • subtype

      private String subtype
      the font SubType of this font
    • baseFont

      private String baseFont
      the postscript name of this font
    • encoding

      private PDFFontEncoding encoding
      the font encoding (maps character ids to glyphs)
    • descriptor

      private PDFFontDescriptor descriptor
      the font descriptor
    • unicodeMap

      private PDFCMap unicodeMap
      the CMap that maps this font to unicode values
    • charCache

      private Map<Character,PDFGlyph> charCache
      a cache of glyphs indexed by character
  • Constructor Details

    • PDFFont

      protected PDFFont(String baseFont, PDFFontDescriptor descriptor)
      Create a PDFFont given the base font name and the font descriptor
      Parameters:
      baseFont - the postscript name of this font
      descriptor - the descriptor for the font
  • Method Details

    • getFont

      public static PDFFont getFont(PDFObject obj, HashMap<String,PDFObject> resources) throws IOException
      get the PDFFont corresponding to the font described in a PDFObject. The object is actually a dictionary containing the following keys:
      Type = "Font"
      Subtype = (Type1 | TrueType | Type3 | Type0 | MMType1 | CIDFontType0 | CIDFontType2)
      FirstChar = #
      LastChar = #
      Widths = array of #
      Encoding = (some name representing a dictionary in the resources | an inline dictionary)

      For Type1 and TrueType fonts, the dictionary also contains:
      BaseFont = (some name, or XXXXXX+Name as a subset of font Name)

      For Type3 font, the dictionary contains:
      FontBBox = (rectangle)
      FontMatrix = (array, typically [0.001, 0, 0, 0.001, 0, 0])
      CharProcs = (dictionary) Resources = (dictionary)

      Throws:
      IOException
    • getSubtype

      public String getSubtype()
      Get the subtype of this font.
      Returns:
      the subtype, one of: Type0, Type1, TrueType or Type3
    • setSubtype

      public void setSubtype(String subtype)
      Set the font subtype
    • getBaseFont

      public String getBaseFont()
      Get the postscript name of this font
      Returns:
      the postscript name of this font
    • setBaseFont

      public void setBaseFont(String baseFont)
      Set the postscript name of this font
      Parameters:
      baseFont - the postscript name of the font
    • getEncoding

      public PDFFontEncoding getEncoding()
      Get the encoding for this font
      Returns:
      the encoding which maps from this font to actual characters
    • setEncoding

      public void setEncoding(PDFFontEncoding encoding)
      Set the encoding for this font
    • getDescriptor

      public PDFFontDescriptor getDescriptor()
      Get the descriptor for this font
      Returns:
      the font descriptor
    • setDescriptor

      public void setDescriptor(PDFFontDescriptor descriptor)
      Set the descriptor font descriptor
    • getUnicodeMap

      public PDFCMap getUnicodeMap()
      Get the CMap which maps the characters in this font to unicode names
    • setUnicodeMap

      public void setUnicodeMap(PDFCMap unicodeMap)
      Set the CMap which maps the characters in this font to unicode names
    • getGlyphs

      public List<PDFGlyph> getGlyphs(String text)
      Get the glyphs associated with a given String in this font
      Parameters:
      text - the text to translate into glyphs
    • getCachedGlyph

      public PDFGlyph getCachedGlyph(char src, String name)
      Get a glyph for a given character code. The glyph is returned from the cache if available, or added to the cache if not
      Parameters:
      src - the character code of this glyph
      name - the name of the glyph, or null if the name is unknown
      Returns:
      a glyph for this character
    • getGlyph

      protected abstract PDFGlyph getGlyph(char src, String name)
      Get the glyph for a given character code and name The preferred method of getting the glyph should be by name. If the name is null or not valid, then the character code should be used. If the both the code and the name are invalid, the undefined glyph should be returned. Note this method must *always* return a glyph.
      Parameters:
      src - the character code of this glyph
      name - the name of this glyph or null if unknown
      Returns:
      a glyph for this character
    • toString

      public String toString()
      Turn this font into a pretty String
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Compare two fonts base on the baseFont
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Hash a font based on its base font
      Overrides:
      hashCode in class Object