Class TrueTypeFont

java.lang.Object
org.apache.fontbox.ttf.TrueTypeFont
All Implemented Interfaces:
Closeable, AutoCloseable, FontBoxFont
Direct Known Subclasses:
OpenTypeFont

public class TrueTypeFont extends Object implements FontBoxFont, Closeable
A TrueType font file.
  • Field Details

    • version

      private float version
    • numberOfGlyphs

      private int numberOfGlyphs
    • unitsPerEm

      private int unitsPerEm
    • tables

      protected Map<String,TTFTable> tables
    • data

      private final TTFDataStream data
    • postScriptNames

      private Map<String,Integer> postScriptNames
    • enabledGsubFeatures

      private final List<String> enabledGsubFeatures
  • Constructor Details

    • TrueTypeFont

      TrueTypeFont(TTFDataStream fontData)
      Constructor. Clients should use the TTFParser to create a new TrueTypeFont object.
      Parameters:
      fontData - The font data.
  • Method Details

    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • getVersion

      public float getVersion()
      Returns:
      Returns the version.
    • setVersion

      void setVersion(float versionValue)
      Set the version. Package-private, used by TTFParser only.
      Parameters:
      versionValue - The version to set.
    • addTable

      void addTable(TTFTable table)
      Add a table definition. Package-private, used by TTFParser only.
      Parameters:
      table - The table to add.
    • getTables

      public Collection<TTFTable> getTables()
      Get all of the tables.
      Returns:
      All of the tables.
    • getTableMap

      public Map<String,TTFTable> getTableMap()
      Get all of the tables.
      Returns:
      All of the tables.
    • getTableBytes

      public byte[] getTableBytes(TTFTable table) throws IOException
      Returns the raw bytes of the given table.
      Parameters:
      table - the table to read.
      Throws:
      IOException - if there was an error accessing the table.
    • getTable

      protected TTFTable getTable(String tag) throws IOException
      This will get the table for the given tag.
      Parameters:
      tag - the name of the table to be returned
      Returns:
      The table with the given tag.
      Throws:
      IOException - if there was an error reading the table.
    • getNaming

      public NamingTable getNaming() throws IOException
      This will get the naming table for the true type font.
      Returns:
      The naming table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getPostScript

      public PostScriptTable getPostScript() throws IOException
      Get the postscript table for this TTF.
      Returns:
      The postscript table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getOS2Windows

      public OS2WindowsMetricsTable getOS2Windows() throws IOException
      Get the OS/2 table for this TTF.
      Returns:
      The OS/2 table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getMaximumProfile

      public MaximumProfileTable getMaximumProfile() throws IOException
      Get the maxp table for this TTF.
      Returns:
      The maxp table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getHeader

      public HeaderTable getHeader() throws IOException
      Get the head table for this TTF.
      Returns:
      The head table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getHorizontalHeader

      public HorizontalHeaderTable getHorizontalHeader() throws IOException
      Get the hhea table for this TTF.
      Returns:
      The hhea table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getHorizontalMetrics

      public HorizontalMetricsTable getHorizontalMetrics() throws IOException
      Get the hmtx table for this TTF.
      Returns:
      The hmtx table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getIndexToLocation

      public IndexToLocationTable getIndexToLocation() throws IOException
      Get the loca table for this TTF.
      Returns:
      The loca table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getGlyph

      public GlyphTable getGlyph() throws IOException
      Get the glyf table for this TTF.
      Returns:
      The glyf table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getCmap

      public CmapTable getCmap() throws IOException
      Get the "cmap" table for this TTF.
      Returns:
      The "cmap" table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getVerticalHeader

      public VerticalHeaderTable getVerticalHeader() throws IOException
      Get the vhea table for this TTF.
      Returns:
      The vhea table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getVerticalMetrics

      public VerticalMetricsTable getVerticalMetrics() throws IOException
      Get the vmtx table for this TTF.
      Returns:
      The vmtx table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getVerticalOrigin

      public VerticalOriginTable getVerticalOrigin() throws IOException
      Get the VORG table for this TTF.
      Returns:
      The VORG table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getKerning

      public KerningTable getKerning() throws IOException
      Get the "kern" table for this TTF.
      Returns:
      The "kern" table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getGsub

      public GlyphSubstitutionTable getGsub() throws IOException
      Get the "gsub" table for this TTF.
      Returns:
      The "gsub" table or null if it doesn't exist.
      Throws:
      IOException - if there was an error reading the table.
    • getOriginalData

      public InputStream getOriginalData() throws IOException
      Get the data of the TrueType Font program representing the stream used to build this object (normally from the TTFParser object).
      Returns:
      COSStream TrueType font program stream
      Throws:
      IOException - If there is an error getting the font data.
    • getOriginalDataSize

      public long getOriginalDataSize()
      Get the data size of the TrueType Font program representing the stream used to build this object (normally from the TTFParser object).
      Returns:
      the size.
    • readTable

      void readTable(TTFTable table) throws IOException
      Read the given table if necessary. Package-private, used by TTFParser only.
      Parameters:
      table - the table to be initialized
      Throws:
      IOException - if there was an error reading the table.
    • getNumberOfGlyphs

      public int getNumberOfGlyphs() throws IOException
      Returns the number of glyphs (MaximumProfile.numGlyphs).
      Returns:
      the number of glyphs
      Throws:
      IOException - if there was an error reading the table.
    • getUnitsPerEm

      public int getUnitsPerEm() throws IOException
      Returns the units per EM (Header.unitsPerEm).
      Returns:
      units per EM
      Throws:
      IOException - if there was an error reading the table.
    • getAdvanceWidth

      public int getAdvanceWidth(int gid) throws IOException
      Returns the width for the given GID.
      Parameters:
      gid - the GID
      Returns:
      the width
      Throws:
      IOException - if there was an error reading the metrics table.
    • getAdvanceHeight

      public int getAdvanceHeight(int gid) throws IOException
      Returns the height for the given GID.
      Parameters:
      gid - the GID
      Returns:
      the height
      Throws:
      IOException - if there was an error reading the metrics table.
    • getName

      public String getName() throws IOException
      Description copied from interface: FontBoxFont
      The PostScript name of the font.
      Specified by:
      getName in interface FontBoxFont
      Throws:
      IOException
    • readPostScriptNames

      private void readPostScriptNames() throws IOException
      Throws:
      IOException
    • getUnicodeCmap

      @Deprecated public CmapSubtable getUnicodeCmap() throws IOException
      Deprecated.
      Returns the best Unicode from the font (the most general). The PDF spec says that "The means by which this is accomplished are implementation-dependent."
      Throws:
      IOException - if the font could not be read
    • getUnicodeCmap

      @Deprecated public CmapSubtable getUnicodeCmap(boolean isStrict) throws IOException
      Deprecated.
      Returns the best Unicode from the font (the most general). The PDF spec says that "The means by which this is accomplished are implementation-dependent."
      Parameters:
      isStrict - False if we allow falling back to any cmap, even if it's not Unicode.
      Throws:
      IOException - if the font could not be read, or there is no Unicode cmap
    • getUnicodeCmapLookup

      public CmapLookup getUnicodeCmapLookup() throws IOException
      Returns the best Unicode from the font (the most general). The PDF spec says that "The means by which this is accomplished are implementation-dependent." The returned cmap will perform glyph substitution.
      Throws:
      IOException - if the font could not be read
    • getUnicodeCmapLookup

      public CmapLookup getUnicodeCmapLookup(boolean isStrict) throws IOException
      Returns the best Unicode from the font (the most general). The PDF spec says that "The means by which this is accomplished are implementation-dependent." The returned cmap will perform glyph substitution.
      Parameters:
      isStrict - False if we allow falling back to any cmap, even if it's not Unicode.
      Throws:
      IOException - if the font could not be read, or there is no Unicode cmap
    • getUnicodeCmapImpl

      private CmapSubtable getUnicodeCmapImpl(boolean isStrict) throws IOException
      Throws:
      IOException
    • nameToGID

      public int nameToGID(String name) throws IOException
      Returns the GID for the given PostScript name, if the "post" table is present.
      Parameters:
      name - the PostScript name.
      Throws:
      IOException
    • parseUniName

      private int parseUniName(String name)
      Parses a Unicode PostScript name in the format uniXXXX.
    • getPath

      public GeneralPath getPath(String name) throws IOException
      Description copied from interface: FontBoxFont
      Returns the path for the character with the given name.
      Specified by:
      getPath in interface FontBoxFont
      Returns:
      glyph path
      Throws:
      IOException - if the path could not be read
    • getWidth

      public float getWidth(String name) throws IOException
      Description copied from interface: FontBoxFont
      Returns the advance width for the character with the given name.
      Specified by:
      getWidth in interface FontBoxFont
      Returns:
      glyph advance width
      Throws:
      IOException - if the path could not be read
    • hasGlyph

      public boolean hasGlyph(String name) throws IOException
      Description copied from interface: FontBoxFont
      Returns true if the font contains the given glyph.
      Specified by:
      hasGlyph in interface FontBoxFont
      Parameters:
      name - PostScript glyph name
      Throws:
      IOException
    • getFontBBox

      public BoundingBox getFontBBox() throws IOException
      Description copied from interface: FontBoxFont
      Returns the font's bounding box in PostScript units.
      Specified by:
      getFontBBox in interface FontBoxFont
      Throws:
      IOException
    • getFontMatrix

      public List<Number> getFontMatrix() throws IOException
      Description copied from interface: FontBoxFont
      Returns the FontMatrix in PostScript units.
      Specified by:
      getFontMatrix in interface FontBoxFont
      Throws:
      IOException
    • enableGsubFeature

      public void enableGsubFeature(String featureTag)
      Enable a particular glyph substitution feature. This feature might not be supported by the font, or might not be implemented in PDFBox yet.
      Parameters:
      featureTag - The GSUB feature to enable
    • disableGsubFeature

      public void disableGsubFeature(String featureTag)
      Disable a particular glyph substitution feature.
      Parameters:
      featureTag - The GSUB feature to disable
    • enableVerticalSubstitutions

      public void enableVerticalSubstitutions()
      Enable glyph substitutions for vertical writing.
    • toString

      public String toString()
      Overrides:
      toString in class Object