You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/06/14 16:21:55 UTC

svn commit: r1748435 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java

Author: tilman
Date: Tue Jun 14 16:21:55 2016
New Revision: 1748435

URL: http://svn.apache.org/viewvc?rev=1748435&view=rev
Log:
PDFBOX-2854: modify for missing .notdef entry

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java?rev=1748435&r1=1748434&r2=1748435&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/TTFSubsetter.java Tue Jun 14 16:21:55 2016
@@ -433,12 +433,8 @@ public final class TTFSubsetter
 
         out.write(os2.getAchVendId().getBytes("US-ASCII"));
 
-        Iterator<Entry<Integer, Integer>> it = uniToGID.entrySet().iterator();
-        it.next();
-        Entry<Integer, Integer> first = it.next();
-
         writeUint16(out, os2.getFsSelection());
-        writeUint16(out, first.getKey());
+        writeUint16(out, uniToGID.firstKey());
         writeUint16(out, uniToGID.lastKey());
         writeUint16(out, os2.getTypoAscender());
         writeUint16(out, os2.getTypoDescender());
@@ -705,14 +701,14 @@ public final class TTFSubsetter
 
         // build Format 4 subtable (Unicode BMP)
         Iterator<Entry<Integer, Integer>> it = uniToGID.entrySet().iterator();
-        it.next();
         Entry<Integer, Integer> lastChar = it.next();
         Entry<Integer, Integer> prevChar = lastChar;
         int lastGid = getNewGlyphId(lastChar.getValue());
 
-        int[] startCode = new int[uniToGID.size()];
-        int[] endCode = new int[uniToGID.size()];
-        int[] idDelta = new int[uniToGID.size()];
+        // +1 because .notdef is missing in uniToGID
+        int[] startCode = new int[uniToGID.size()+1];
+        int[] endCode = new int[uniToGID.size()+1];
+        int[] idDelta = new int[uniToGID.size()+1];
         int segCount = 0;
         while(it.hasNext())
         {