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
    • 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