Class CMap

java.lang.Object
org.apache.fontbox.cmap.CMap

public class CMap extends Object
This class represents a CMap file.
  • Field Details

    • LOG

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

      private int wmode
    • cmapName

      private String cmapName
    • cmapVersion

      private String cmapVersion
    • cmapType

      private int cmapType
    • registry

      private String registry
    • ordering

      private String ordering
    • supplement

      private int supplement
    • minCodeLength

      private int minCodeLength
    • maxCodeLength

      private int maxCodeLength
    • minCidLength

      private int minCidLength
    • maxCidLength

      private int maxCidLength
    • codespaceRanges

      private final List<CodespaceRange> codespaceRanges
    • charToUnicodeOneByte

      private final Map<Integer,String> charToUnicodeOneByte
    • charToUnicodeTwoBytes

      private final Map<Integer,String> charToUnicodeTwoBytes
    • codeToCid

      private final Map<Integer,Map<Integer,Integer>> codeToCid
    • codeToCidRanges

      private final List<CIDRange> codeToCidRanges
    • unicodeToByteCodes

      private final Map<String,byte[]> unicodeToByteCodes
    • SPACE

      private static final String SPACE
      See Also:
    • spaceMapping

      private int spaceMapping
  • Constructor Details

    • CMap

      CMap()
      Creates a new instance of CMap.
  • Method Details

    • hasCIDMappings

      public boolean hasCIDMappings()
      This will tell if this cmap has any CID mappings.
      Returns:
      true If there are any CID mappings, false otherwise.
    • hasUnicodeMappings

      public boolean hasUnicodeMappings()
      This will tell if this cmap has any Unicode mappings.
      Returns:
      true If there are any Unicode mappings, false otherwise.
    • toUnicode

      public String toUnicode(int code)
      Returns the sequence of Unicode characters for the given character code. This method exists for convenience. It may return false values as the origin byte length of the input value is unknown and the mapping for some input values aren't unique.
      Example:
      The two byte value 0x00, 0x65 maps to 0x20
      An input value of 0x65 always returns 0x20 even if the value has an origin byte length of 1.
      Parameters:
      code - character code
      Returns:
      Unicode characters (may be more than one, e.g "fi" ligature)
    • toUnicode

      public String toUnicode(int code, int length)
      Returns the sequence of Unicode characters for the given character code.
      Parameters:
      code - character code
      length - code length
      Returns:
      Unicode characters (may be more than one, e.g "fi" ligature)
    • toUnicode

      public String toUnicode(byte[] code)
      Returns the sequence of Unicode characters for the given character code.
      Parameters:
      code - bytes of the character code
      Returns:
      Unicode characters (may be more than one, e.g "fi" ligature)
    • readCode

      public int readCode(InputStream in) throws IOException
      Reads a character code from a string in the content stream.

      See "CMap Mapping" and "Handling Undefined Characters" in PDF32000 for more details.

      Parameters:
      in - string stream
      Returns:
      character code
      Throws:
      IOException - if there was an error reading the stream or CMap
    • toInt

      static int toInt(byte[] data)
      Returns an int for the given byte array
    • toInt

      private static int toInt(byte[] data, int dataLen)
      Returns an int for the given byte array
    • toCID

      public int toCID(byte[] code)
      Returns the CID for the given character code.
      Parameters:
      code - character code as byte array
      Returns:
      CID
    • toCID

      public int toCID(int code)
      Returns the CID for the given character code. This method exists for convenience. It may return false values as the origin byte length of the input value is unknown and the mapping for some input values aren't unique.
      Example:
      The two byte value 0x00, 0x65 maps to 0x20
      An input value of 0x65 always returns 0x20 even if the value has an origin byte length of 1.
      Parameters:
      code - character code
      Returns:
      CID
    • toCID

      public int toCID(int code, int length)
      Returns the CID for the given character code.
      Parameters:
      code - character code
      length - the origin byte length of the code
      Returns:
      CID
    • toCIDFromRanges

      private int toCIDFromRanges(int code, int length)
      Returns the CID for the given character code.
      Parameters:
      code - character code
      Returns:
      CID
    • toCIDFromRanges

      private int toCIDFromRanges(byte[] code)
      Returns the CID for the given character code.
      Parameters:
      code - character code
      Returns:
      CID
    • getCodeFromArray

      private int getCodeFromArray(byte[] data, int offset, int length)
      Convert the given part of a byte array to an integer.
      Parameters:
      data - the byte array
      offset - The offset into the byte array.
      length - The length of the data we are getting.
      Returns:
      the resulting integer
    • addCharMapping

      void addCharMapping(byte[] codes, String unicode)
      This will add a character code to Unicode character sequence mapping.
      Parameters:
      codes - The character codes to map from.
      unicode - The Unicode characters to map to.
    • getCodesFromUnicode

      public byte[] getCodesFromUnicode(String unicode)
      Get the code bytes for an unicode string.
      Parameters:
      unicode - The unicode string.
      Returns:
      the code bytes or null if there is none.
    • addCIDMapping

      void addCIDMapping(byte[] code, int cid)
      This will add a CID mapping.
      Parameters:
      code - character code
      cid - CID
    • addCIDRange

      void addCIDRange(byte[] from, byte[] to, int cid)
      This will add a CID Range.
      Parameters:
      from - starting character of the CID range.
      to - ending character of the CID range.
      cid - the cid to be started with.
    • addCIDRange

      private void addCIDRange(List<CIDRange> cidRanges, int from, int to, int cid, int length)
    • addCodespaceRange

      void addCodespaceRange(CodespaceRange range)
      This will add a codespace range.
      Parameters:
      range - A single codespace range.
    • useCmap

      void useCmap(CMap cmap)
      Implementation of the usecmap operator. This will copy all of the mappings from one cmap to another.
      Parameters:
      cmap - The cmap to load mappings from.
    • getWMode

      public int getWMode()
      Returns the WMode of a CMap. 0 represents a horizontal and 1 represents a vertical orientation.
      Returns:
      the wmode
    • setWMode

      public void setWMode(int newWMode)
      Sets the WMode of a CMap.
      Parameters:
      newWMode - the new WMode.
    • getName

      public String getName()
      Returns the name of the CMap.
      Returns:
      the CMap name.
    • setName

      public void setName(String name)
      Sets the name of the CMap.
      Parameters:
      name - the CMap name.
    • getVersion

      public String getVersion()
      Returns the version of the CMap.
      Returns:
      the CMap version.
    • setVersion

      public void setVersion(String version)
      Sets the version of the CMap.
      Parameters:
      version - the CMap version.
    • getType

      public int getType()
      Returns the type of the CMap.
      Returns:
      the CMap type.
    • setType

      public void setType(int type)
      Sets the type of the CMap.
      Parameters:
      type - the CMap type.
    • getRegistry

      public String getRegistry()
      Returns the registry of the CIDSystemInfo.
      Returns:
      the registry.
    • setRegistry

      public void setRegistry(String newRegistry)
      Sets the registry of the CIDSystemInfo.
      Parameters:
      newRegistry - the registry.
    • getOrdering

      public String getOrdering()
      Returns the ordering of the CIDSystemInfo.
      Returns:
      the ordering.
    • setOrdering

      public void setOrdering(String newOrdering)
      Sets the ordering of the CIDSystemInfo.
      Parameters:
      newOrdering - the ordering.
    • getSupplement

      public int getSupplement()
      Returns the supplement of the CIDSystemInfo.
      Returns:
      the supplement.
    • setSupplement

      public void setSupplement(int newSupplement)
      Sets the supplement of the CIDSystemInfo.
      Parameters:
      newSupplement - the supplement.
    • getSpaceMapping

      public int getSpaceMapping()
      Returns the mapping for the space character.
      Returns:
      the mapped code for the space character
    • toString

      public String toString()
      Overrides:
      toString in class Object