]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2759: NPE converting OTF to Type1
authorSimon Steiner <ssteiner@apache.org>
Mon, 27 Nov 2017 10:43:26 +0000 (10:43 +0000)
committerSimon Steiner <ssteiner@apache.org>
Mon, 27 Nov 2017 10:43:26 +0000 (10:43 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1816422 13f79535-47bb-0310-9956-ffa450edef68

fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java

index a0060ccb6defea46cc102f5df181fae9c61c9b5b..0634957debf465d7372f28cc02b2595edf7e425d 100644 (file)
@@ -182,7 +182,7 @@ public class OFFontLoader extends FontLoader {
         returnFont.setWeight(otf.getWeightClass());
         if (isCid) {
             if (otf instanceof OTFFile) {
-                if (((OTFFile) otf).isType1() && embeddingMode == EmbeddingMode.SUBSET) {
+                if (((OTFFile) otf).isType1() && embeddingMode == EmbeddingMode.SUBSET && !embedAsType1) {
                     multiFont.setFontType(FontType.TYPE1C);
                     copyGlyphMetricsSingleByte(otf);
                 }
index c0a5ed721e21faae0e35658b3f7cd94bf5fe6799..adea1d128b592930507d220233aed800d2b955b9 100644 (file)
@@ -34,6 +34,7 @@ import org.apache.fop.fonts.CustomFont;
 import org.apache.fop.fonts.EmbeddingMode;
 import org.apache.fop.fonts.EncodingMode;
 import org.apache.fop.fonts.FontLoader;
+import org.apache.fop.fonts.FontType;
 import org.apache.fop.fonts.FontUris;
 
 public class OTFToType1TestCase {
@@ -47,13 +48,23 @@ public class OTFToType1TestCase {
         Assert.assertEquals(t1.getFontName(), "AlexBrush-Regular.0");
     }
 
+    @Test
+    public void testFontType() throws IOException {
+        CustomFont t1 = getRealFont("test/resources/fonts/otf/SourceSansProBold.otf");
+        Assert.assertEquals(t1.getFontType(), FontType.TYPE1);
+    }
+
     private Type1Font getFont(String s) throws IOException {
+        InputStream is = ((CFFToType1Font)getRealFont(s)).getInputStreams().get(0);
+        return Type1Font.createWithPFB(is);
+    }
+
+    private CustomFont getRealFont(String s) throws IOException {
         InternalResourceResolver rr = ResourceResolverFactory.createDefaultInternalResourceResolver(
                 new File(".").toURI());
         CustomFont realFont = FontLoader.loadFont(new FontUris(new File(s).toURI(), null), null, true,
                 EmbeddingMode.SUBSET, EncodingMode.AUTO, true, true, rr, false, true);
         realFont.mapChar('d');
-        InputStream is = ((CFFToType1Font)realFont).getInputStreams().get(0);
-        return Type1Font.createWithPFB(is);
+        return realFont;
     }
 }