Class CMap


  • public class CMap
    extends java.lang.Object
    This class represents a CMap file.
    • Constructor Summary

      Constructors 
      Constructor Description
      CMap()
      Creates a new instance of CMap.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) void addCharMapping​(byte[] codes, java.lang.String unicode)
      This will add a character code to Unicode character sequence mapping.
      (package private) void addCIDMapping​(int code, int cid)
      This will add a CID mapping.
      (package private) void addCIDRange​(char from, char to, int cid)
      This will add a CID Range.
      (package private) void addCodespaceRange​(CodespaceRange range)
      This will add a codespace range.
      private int getCodeFromArray​(byte[] data, int offset, int length)
      Convert the given part of a byte array to an integer.
      java.lang.String getName()
      Returns the name of the CMap.
      java.lang.String getOrdering()
      Returns the ordering of the CIDSystemInfo.
      java.lang.String getRegistry()
      Returns the registry of the CIDSystemInfo.
      int getSpaceMapping()
      Returns the mapping for the space character.
      int getSupplement()
      Returns the supplement of the CIDSystemInfo.
      int getType()
      Returns the type of the CMap.
      java.lang.String getVersion()
      Returns the version of the CMap.
      int getWMode()
      Returns the WMode of a CMap.
      boolean hasCIDMappings()
      This will tell if this cmap has any CID mappings.
      boolean hasUnicodeMappings()
      This will tell if this cmap has any Unicode mappings.
      int readCode​(java.io.InputStream in)
      Reads a character code from a string in the content stream.
      void setName​(java.lang.String name)
      Sets the name of the CMap.
      void setOrdering​(java.lang.String newOrdering)
      Sets the ordering of the CIDSystemInfo.
      void setRegistry​(java.lang.String newRegistry)
      Sets the registry of the CIDSystemInfo.
      void setSupplement​(int newSupplement)
      Sets the supplement of the CIDSystemInfo.
      void setType​(int type)
      Sets the type of the CMap.
      void setVersion​(java.lang.String version)
      Sets the version of the CMap.
      void setWMode​(int newWMode)
      Sets the WMode of a CMap.
      int toCID​(int code)
      Returns the CID for the given character code.
      (package private) static int toInt​(byte[] data, int dataLen)
      Returns an int for the given byte array
      java.lang.String toString()  
      java.lang.String toUnicode​(int code)
      Returns the sequence of Unicode characters for the given character code.
      (package private) void useCmap​(CMap cmap)
      Implementation of the usecmap operator.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • LOG

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

        private int wmode
      • cmapName

        private java.lang.String cmapName
      • cmapVersion

        private java.lang.String cmapVersion
      • cmapType

        private int cmapType
      • registry

        private java.lang.String registry
      • ordering

        private java.lang.String ordering
      • supplement

        private int supplement
      • minCodeLength

        private int minCodeLength
      • maxCodeLength

        private int maxCodeLength
      • codespaceRanges

        private final java.util.List<CodespaceRange> codespaceRanges
      • charToUnicode

        private final java.util.Map<java.lang.Integer,​java.lang.String> charToUnicode
      • codeToCid

        private final java.util.Map<java.lang.Integer,​java.lang.Integer> codeToCid
      • codeToCidRanges

        private final java.util.List<CIDRange> codeToCidRanges
      • spaceMapping

        private int spaceMapping
    • Constructor Detail

      • CMap

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

      • 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 java.lang.String toUnicode​(int code)
        Returns the sequence of Unicode characters for the given character code.
        Parameters:
        code - character code
        Returns:
        Unicode characters (may be more than one, e.g "fi" ligature)
      • readCode

        public int readCode​(java.io.InputStream in)
                     throws java.io.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:
        java.io.IOException - if there was an error reading the stream or CMap
      • toInt

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

        public int toCID​(int 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,
                            java.lang.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.
      • addCIDMapping

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

        void addCIDRange​(char from,
                         char 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.
      • 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 java.lang.String getName()
        Returns the name of the CMap.
        Returns:
        the CMap name.
      • setName

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

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

        public void setVersion​(java.lang.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 java.lang.String getRegistry()
        Returns the registry of the CIDSystemInfo.
        Returns:
        the registry.
      • setRegistry

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

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

        public void setOrdering​(java.lang.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object