]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2697: Adobe Reader error with Adobe Kozuka Mincho font
authorSimon Steiner <ssteiner@apache.org>
Wed, 8 Mar 2017 13:58:08 +0000 (13:58 +0000)
committerSimon Steiner <ssteiner@apache.org>
Wed, 8 Mar 2017 13:58:08 +0000 (13:58 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1785969 13f79535-47bb-0310-9956-ffa450edef68

fop-core/src/main/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java
fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFSubSetFileTestCase.java

index 5ee54eaa88e28f8f1fdbb7c40d416a204b10f7db..bb5c489101e0c1cd503e17656b9e84e2be3982c8 100644 (file)
@@ -172,7 +172,7 @@ public class OTFSubSetFile extends OTFFile {
         writeBytes(cffReader.getHeader());
 
         //Name Index
-        writeIndex(Arrays.asList(embeddedName.getBytes()));
+        writeIndex(Arrays.asList(embedFontName.getBytes()));
 
         //Keep offset of the topDICT so it can be updated once all data has been written
         int topDictOffset = currentPos;
index d87d19be5c2972b2358bc71ac99c7e6cf73fb72f..e653f7f9cf27568694b6370d8b948560099c6d9d 100644 (file)
@@ -37,6 +37,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import org.apache.fontbox.cff.CFFFont;
+import org.apache.fontbox.cff.CFFParser;
 
 import org.apache.fop.fonts.cff.CFFDataReader;
 import org.apache.fop.fonts.cff.CFFDataReader.CFFIndexData;
@@ -435,8 +436,8 @@ public class OTFSubSetFileTestCase extends OTFFileTestCase {
 
     @Test
     public void testFDSelect() throws IOException {
-        Assert.assertEquals(getSubset(1).length, 39);
-        Assert.assertEquals(getSubset(2).length, 46);
+        Assert.assertEquals(getSubset(1).length, 41);
+        Assert.assertEquals(getSubset(2).length, 48);
     }
 
     private byte[] getSubset(final int opLen) throws IOException {
@@ -468,4 +469,19 @@ public class OTFSubSetFileTestCase extends OTFFileTestCase {
         otfSubSetFile.readFont(reader, "StandardOpenType", header, new HashMap<Integer, Integer>());
         return otfSubSetFile.getFontSubset();
     }
+
+    @Test
+    public void testOffsets() throws IOException {
+        Map<Integer, Integer> glyphs = new HashMap<Integer, Integer>();
+        for (int i = 0; i < 256; i++) {
+            glyphs.put(i, i);
+        }
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < 2048; i++) {
+            sb.append("SourceSansProBold");
+        }
+        OTFSubSetFile otfSubSetFile = new OTFSubSetFile();
+        otfSubSetFile.readFont(sourceSansReader, sb.toString(), null, glyphs);
+        new CFFParser().parse(otfSubSetFile.getFontSubset());
+    }
 }