Class CmapSubtable

java.lang.Object
org.apache.fontbox.ttf.CmapSubtable
All Implemented Interfaces:
CmapLookup

public class CmapSubtable extends Object implements CmapLookup
A "cmap" subtable.
  • Field Details

    • LOG

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

      private static final long LEAD_OFFSET
      See Also:
    • SURROGATE_OFFSET

      private static final long SURROGATE_OFFSET
      See Also:
    • platformId

      private int platformId
    • platformEncodingId

      private int platformEncodingId
    • subTableOffset

      private long subTableOffset
    • glyphIdToCharacterCode

      private int[] glyphIdToCharacterCode
    • glyphIdToCharacterCodeMultiple

      private final Map<Integer,List<Integer>> glyphIdToCharacterCodeMultiple
    • characterCodeToGlyphId

      private Map<Integer,Integer> characterCodeToGlyphId
  • Constructor Details

    • CmapSubtable

      public CmapSubtable()
  • Method Details

    • initData

      void initData(TTFDataStream data) throws IOException
      This will read the required data from the stream.
      Parameters:
      data - The stream to read the data from.
      Throws:
      IOException - If there is an error reading the data.
    • initSubtable

      void initSubtable(CmapTable cmap, int numGlyphs, TTFDataStream data) throws IOException
      This will read the required data from the stream.
      Parameters:
      cmap - the CMAP this encoding belongs to.
      numGlyphs - number of glyphs.
      data - The stream to read the data from.
      Throws:
      IOException - If there is an error reading the data.
    • processSubtype8

      void processSubtype8(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 8 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype10

      void processSubtype10(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 10 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype12

      void processSubtype12(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 12 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype13

      void processSubtype13(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 13 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype14

      void processSubtype14(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 14 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype6

      void processSubtype6(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 6 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype4

      void processSubtype4(TTFDataStream data, int numGlyphs) throws IOException
      Reads a format 4 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • buildGlyphIdToCharacterCodeLookup

      private void buildGlyphIdToCharacterCodeLookup(int maxGlyphId)
    • processSubtype2

      void processSubtype2(TTFDataStream data, int numGlyphs) throws IOException
      Read a format 2 subtable.
      Parameters:
      data - the data stream of the to be parsed ttf font
      numGlyphs - number of glyphs to be read
      Throws:
      IOException - If there is an error parsing the true type font.
    • processSubtype0

      void processSubtype0(TTFDataStream data) throws IOException
      Initialize the CMapEntry when it is a subtype 0.
      Parameters:
      data - the data stream of the to be parsed ttf font
      Throws:
      IOException - If there is an error parsing the true type font.
    • newGlyphIdToCharacterCode

      private int[] newGlyphIdToCharacterCode(int size)
      Workaround for the fact that glyphIdToCharacterCode doesn't distinguish between missing character codes and code 0.
    • getPlatformEncodingId

      public int getPlatformEncodingId()
      Returns:
      Returns the platformEncodingId.
    • setPlatformEncodingId

      public void setPlatformEncodingId(int platformEncodingIdValue)
      Parameters:
      platformEncodingIdValue - The platformEncodingId to set.
    • getPlatformId

      public int getPlatformId()
      Returns:
      Returns the platformId.
    • setPlatformId

      public void setPlatformId(int platformIdValue)
      Parameters:
      platformIdValue - The platformId to set.
    • getGlyphId

      public int getGlyphId(int characterCode)
      Returns the GlyphId linked with the given character code.
      Specified by:
      getGlyphId in interface CmapLookup
      Parameters:
      characterCode - the given character code to be mapped
      Returns:
      glyphId the corresponding glyph id for the given character code
    • getCharacterCode

      @Deprecated public Integer getCharacterCode(int gid)
      Deprecated.
      the mapping may be ambiguous, see getCharCodes(int). The first mapped value is returned by default.
      Returns the character code for the given GID, or null if there is none.
      Parameters:
      gid - glyph id
      Returns:
      character code
    • getCharCode

      private int getCharCode(int gid)
    • getCharCodes

      public List<Integer> getCharCodes(int gid)
      Returns all possible character codes for the given gid, or null if there is none.
      Specified by:
      getCharCodes in interface CmapLookup
      Parameters:
      gid - glyph id
      Returns:
      a list with all character codes the given gid maps to
    • toString

      public String toString()
      Overrides:
      toString in class Object