You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2015/08/11 19:52:28 UTC

svn commit: r1695342 - /pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java

Author: lehmi
Date: Tue Aug 11 17:52:28 2015
New Revision: 1695342

URL: http://svn.apache.org/r1695342
Log:
PDFBOX-2916: fixed subtype 6 processing

Modified:
    pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java

Modified: pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java?rev=1695342&r1=1695341&r2=1695342&view=diff
==============================================================================
--- pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java (original)
+++ pdfbox/branches/1.8/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java Tue Aug 11 17:52:28 2015
@@ -315,13 +315,19 @@ public class CMAPEncodingEntry
     {
         int firstCode = data.readUnsignedShort();
         int entryCount = data.readUnsignedShort();
-        glyphIdToCharacterCode = new int[numGlyphs];
+        Map<Integer, Integer> tmpGlyphToChar = new HashMap<Integer, Integer>();
         int[] glyphIdArray = data.readUnsignedShortArray(entryCount);
         for (int i = 0; i < entryCount; i++)
         {
-            glyphIdToCharacterCode[glyphIdArray[i]] = firstCode + i;
+            tmpGlyphToChar.put(glyphIdArray[i], firstCode + i);
             characterCodeToGlyphId.put((firstCode + i), glyphIdArray[i]);
         }
+        glyphIdToCharacterCode = new int[Collections.max(tmpGlyphToChar.keySet())+1];
+        for (Entry<Integer, Integer> entry : tmpGlyphToChar.entrySet())
+        {
+            // link the glyphId with the right character code
+            glyphIdToCharacterCode[entry.getKey()] = entry.getValue();
+        }
     }
 
     /**