Author: ssteiner
Date: Wed May 25 14:12:42 2016
New Revision: 1745490

URL: http://svn.apache.org/viewvc?rev=1745490&view=rev
Log:
FOP-2608: Allow more than 256 glyphs for CFF to Type1

Modified:
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
    
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
    
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
    
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
    
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/CFFToType1Font.java
 Wed May 25 14:12:42 2016
@@ -22,6 +22,10 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.fontbox.cff.CFFFont;
@@ -43,16 +47,49 @@ public class CFFToType1Font extends Mult
     }
 
     public InputStream getInputStream() throws IOException {
+        return null;
+    }
+
+    public List<InputStream> getInputStreams() throws IOException {
         InputStream cff = super.getInputStream();
         return convertOTFToType1(cff);
     }
 
-    private InputStream convertOTFToType1(InputStream in) throws IOException {
+    private List<InputStream> convertOTFToType1(InputStream in) throws 
IOException {
         CFFFont f = new CFFParser().parse(IOUtils.toByteArray(in)).get(0);
         if (!(f instanceof  CFFType1Font)) {
             throw new IOException(getEmbedFileURI() + ": only OTF CFF Type1 
font can be converted to Type1");
         }
-        byte[] t1 = new Type1FontFormatter(cidSet.getGlyphs(), 
eventListener).format((CFFType1Font) f);
+        List<InputStream> fonts = new ArrayList<InputStream>();
+        Map<Integer, Integer> glyphs = cidSet.getGlyphs();
+        int i = 0;
+        for (Map<Integer, Integer> x : splitGlyphs(glyphs)) {
+            String iStr = "." + i;
+            fonts.add(convertOTFToType1(x, f, iStr));
+            i++;
+        }
+        return fonts;
+    }
+
+    private List<Map<Integer, Integer>> splitGlyphs(Map<Integer, Integer> 
glyphs) {
+        List<Map<Integer, Integer>> allGlyphs = new ArrayList<Map<Integer, 
Integer>>();
+        for (Map.Entry<Integer, Integer> x : glyphs.entrySet()) {
+            int k = x.getKey();
+            int v = x.getValue();
+            int pot = v / 256;
+            v =  v % 256;
+            while (allGlyphs.size() < pot + 1) {
+                Map<Integer, Integer> glyphsPerFont = new HashMap<Integer, 
Integer>();
+                glyphsPerFont.put(0, 0);
+                allGlyphs.add(glyphsPerFont);
+            }
+            allGlyphs.get(pot).put(k, v);
+        }
+        return allGlyphs;
+    }
+
+    private InputStream convertOTFToType1(Map<Integer, Integer> glyphs, 
CFFFont f, String i) throws IOException {
+        byte[] t1 = new Type1FontFormatter(glyphs).format((CFFType1Font) f, i);
         PFBData pfb = new PFBParser().parsePFB(new ByteArrayInputStream(t1));
         ByteArrayOutputStream s1 = new ByteArrayOutputStream();
         s1.write(pfb.getHeaderSegment());

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventAdapter.java
 Wed May 25 14:12:42 2016
@@ -66,10 +66,6 @@ public class FontEventAdapter implements
         getEventProducer().fontDirectoryNotFound(source, dir);
     }
 
-    public void fontType1MaxGlyphs(Object source, String fontName) {
-        getEventProducer().fontType1MaxGlyphs(source, fontName);
-    }
-
     /** {@inheritDoc} */
     public void svgTextStrokedAsShapes(Object source, String fontFamily) {
         getEventProducer().svgTextStrokedAsShapes(source, fontFamily);

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventListener.java
 Wed May 25 14:12:42 2016
@@ -61,6 +61,4 @@ public interface FontEventListener {
      * @param fontFamily the family name of the font that is being stroked
      */
     void svgTextStrokedAsShapes(Object source, String fontFamily);
-
-    void fontType1MaxGlyphs(Object source, String fontName);
 }

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/FontEventProducer.java
 Wed May 25 14:12:42 2016
@@ -87,11 +87,4 @@ public interface FontEventProducer exten
      */
     void svgTextStrokedAsShapes(Object source, String fontFamily);
 
-    /**
-     * A method to warn the user that the font has too many glyphs
-     * @param source
-     * @param fontName
-     * @event.severity ERROR
-     */
-    void fontType1MaxGlyphs(Object source, String fontName);
 }

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/fonts/truetype/OFFontLoader.java
 Wed May 25 14:12:42 2016
@@ -139,8 +139,8 @@ public class OFFontLoader extends FontLo
                 multiFont = new CFFToType1Font(resourceResolver, 
embeddingMode);
             } else {
                 multiFont = new MultiByteFont(resourceResolver, embeddingMode);
-                multiFont.setIsOTFFile(otf instanceof OTFFile);
             }
+            multiFont.setIsOTFFile(otf instanceof OTFFile);
             returnFont = multiFont;
             multiFont.setTTCName(ttcFontName);
         } else {

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSFontUtils.java
 Wed May 25 14:12:42 2016
@@ -22,8 +22,10 @@ package org.apache.fop.render.ps;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
@@ -40,6 +42,7 @@ import org.apache.xmlgraphics.ps.PSResou
 import org.apache.xmlgraphics.ps.dsc.ResourceTracker;
 
 import org.apache.fop.fonts.Base14Font;
+import org.apache.fop.fonts.CFFToType1Font;
 import org.apache.fop.fonts.CIDFontType;
 import org.apache.fop.fonts.CIDSet;
 import org.apache.fop.fonts.CMapSegment;
@@ -138,8 +141,7 @@ public class PSFontUtils extends org.apa
         Map fontResources = new HashMap();
         for (String key : fonts.keySet()) {
             Typeface tf = getTypeFace(fontInfo, fonts, key);
-            PSResource fontRes = new PSResource(PSResource.TYPE_FONT, 
tf.getEmbedFontName());
-            PSFontResource fontResource = embedFont(gen, tf, fontRes, 
eventProducer);
+            PSFontResource fontResource = embedFont(gen, tf, eventProducer);
             fontResources.put(key, fontResource);
 
             if (tf instanceof SingleByteFont) {
@@ -239,11 +241,12 @@ public class PSFontUtils extends org.apa
         return tf;
     }
 
-    private static PSFontResource embedFont(PSGenerator gen, Typeface tf, 
PSResource fontRes,
-            PSEventProducer eventProducer) throws IOException {
+    private static PSFontResource embedFont(PSGenerator gen, Typeface tf, 
PSEventProducer eventProducer)
+            throws IOException {
         boolean embeddedFont = false;
         FontType fontType = tf.getFontType();
         PSFontResource fontResource = null;
+        PSResource fontRes = new PSResource(PSResource.TYPE_FONT, 
tf.getEmbedFontName());
         if (!(fontType == FontType.TYPE1 || fontType == FontType.TRUETYPE
                 || fontType == FontType.TYPE0) || !(tf instanceof CustomFont)) 
{
             gen.writeDSCComment(DSCConstants.INCLUDE_RESOURCE, fontRes);
@@ -252,42 +255,51 @@ public class PSFontUtils extends org.apa
         }
         CustomFont cf = (CustomFont)tf;
         if (isEmbeddable(cf)) {
-            InputStream in = getInputStreamOnFont(gen, cf);
-            if (in != null) {
-                if (fontType == FontType.TYPE0) {
-                    if (((MultiByteFont)tf).isOTFFile()) {
-                        checkPostScriptLevel3(gen, eventProducer, "OpenType 
CFF");
-                        embedType2CFF(gen, (MultiByteFont) tf, in);
-                    } else {
-                        if (gen.embedIdentityH()) {
-                            checkPostScriptLevel3(gen, eventProducer, 
"TrueType");
+            List<InputStream> ins = getInputStreamOnFont(gen, cf);
+            if (ins != null) {
+                int i = 0;
+                for (InputStream in : ins) {
+                    if (i > 0) {
+                        fontRes = new PSResource(PSResource.TYPE_FONT, 
tf.getEmbedFontName()  + "." + i);
+                    }
+                    if (fontType == FontType.TYPE0) {
+                        if (((MultiByteFont) tf).isOTFFile()) {
+                            checkPostScriptLevel3(gen, eventProducer, 
"OpenType CFF");
+                            embedType2CFF(gen, (MultiByteFont) tf, in);
+                        } else {
+                            if (gen.embedIdentityH()) {
+                                checkPostScriptLevel3(gen, eventProducer, 
"TrueType");
                             /*
                              * First CID-keyed font to be embedded; add
                              * %%IncludeResource: comment for ProcSet CIDInit.
                              */
-                            gen.includeProcsetCIDInitResource();
+                                gen.includeProcsetCIDInitResource();
+                            }
+                            PSResource cidFontResource;
+                            cidFontResource = embedType2CIDFont(gen,
+                                    (MultiByteFont) tf, in);
+                            fontResource = 
PSFontResource.createFontResource(fontRes,
+                                    gen.getProcsetCIDInitResource(), 
gen.getIdentityHCMapResource(),
+                                    cidFontResource);
                         }
-                        PSResource cidFontResource;
-                        cidFontResource = embedType2CIDFont(gen,
-                                (MultiByteFont) tf, in);
-                        fontResource = 
PSFontResource.createFontResource(fontRes,
-                                gen.getProcsetCIDInitResource(), 
gen.getIdentityHCMapResource(),
-                                cidFontResource);
                     }
+                    gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, fontRes);
+                    if (fontType == FontType.TYPE1) {
+                        embedType1Font(gen, (CustomFont) tf, in);
+                        if (fontResource == null) {
+                            fontResource = 
PSFontResource.createFontResource(fontRes);
+                        }
+                    } else if (fontType == FontType.TRUETYPE) {
+                        embedTrueTypeFont(gen, (SingleByteFont) tf, in);
+                        fontResource = 
PSFontResource.createFontResource(fontRes);
+                    } else if (!((MultiByteFont) tf).isOTFFile()) {
+                        composeType0Font(gen, (MultiByteFont) tf);
+                    }
+                    gen.writeDSCComment(DSCConstants.END_RESOURCE);
+                    gen.getResourceTracker().registerSuppliedResource(fontRes);
+                    embeddedFont = true;
+                    i++;
                 }
-                gen.writeDSCComment(DSCConstants.BEGIN_RESOURCE, fontRes);
-                if (fontType == FontType.TYPE1) {
-                    embedType1Font(gen, (CustomFont) tf, in);
-                    fontResource = PSFontResource.createFontResource(fontRes);
-                } else if (fontType == FontType.TRUETYPE) {
-                    embedTrueTypeFont(gen, (SingleByteFont) tf, in);
-                    fontResource = PSFontResource.createFontResource(fontRes);
-                } else {
-                   composeType0Font(gen, (MultiByteFont) tf, in);
-                }
-                gen.writeDSCComment(DSCConstants.END_RESOURCE);
-                gen.getResourceTracker().registerSuppliedResource(fontRes);
-                embeddedFont = true;
             } else {
                 gen.commentln("%WARNING: Could not embed font: " + 
cf.getEmbedFontName());
                 log.warn("Font " + cf.getEmbedFontName() + " is marked as 
supplied in the"
@@ -297,7 +309,6 @@ public class PSFontUtils extends org.apa
         if (!embeddedFont) {
             gen.writeDSCComment(DSCConstants.INCLUDE_RESOURCE, fontRes);
             fontResource = PSFontResource.createFontResource(fontRes);
-            return fontResource;
         }
         return fontResource;
     }
@@ -502,8 +513,7 @@ public class PSFontUtils extends org.apa
         return 0;
     }
 
-    private static void composeType0Font(PSGenerator gen, MultiByteFont font,
-            InputStream fontStream) throws IOException {
+    private static void composeType0Font(PSGenerator gen, MultiByteFont font) 
throws IOException {
         String psName = font.getEmbedFontName();
         gen.write("/");
         gen.write(psName);
@@ -724,18 +734,23 @@ public class PSFontUtils extends org.apa
         return font.isEmbeddable();
     }
 
-    private static InputStream getInputStreamOnFont(PSGenerator gen, 
CustomFont font)
+    private static List<InputStream> getInputStreamOnFont(PSGenerator gen, 
CustomFont font)
                 throws IOException {
         if (isEmbeddable(font)) {
+            List<InputStream> fonts = new ArrayList<InputStream>();
             InputStream in = font.getInputStream();
             if (in == null) {
+                if (font instanceof CFFToType1Font) {
+                    return ((CFFToType1Font) font).getInputStreams();
+                }
                 return null;
             }
             //Make sure the InputStream is decorated with a BufferedInputStream
             if (!(in instanceof java.io.BufferedInputStream)) {
                 in = new java.io.BufferedInputStream(in);
             }
-            return in;
+            fonts.add(in);
+            return fonts;
         } else {
             return null;
         }

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/PSPainter.java
 Wed May 25 14:12:42 2016
@@ -40,7 +40,6 @@ import org.apache.xmlgraphics.image.load
 import org.apache.xmlgraphics.ps.PSGenerator;
 import org.apache.xmlgraphics.ps.PSResource;
 
-import org.apache.fop.fonts.CFFToType1Font;
 import org.apache.fop.fonts.EmbeddingMode;
 import org.apache.fop.fonts.Font;
 import org.apache.fop.fonts.FontTriplet;
@@ -429,8 +428,7 @@ public class PSPainter extends AbstractI
                                         true);
                                 start = i;
                             }
-                            generator.writeln("/" + res.getName() + "." + 
encoding + " "
-                                    + generator.formatDouble(sizeMillipoints / 
1000f) + " F");
+                            generator.useFont("/" + res.getName() + "." + 
encoding, sizeMillipoints / 1000f);
                             curEncoding = encoding;
                         }
                     }
@@ -459,7 +457,7 @@ public class PSPainter extends AbstractI
         int lineStart = 0;
         StringBuffer accText = new StringBuffer(initialSize);
         StringBuffer sb = new StringBuffer(initialSize);
-        boolean isOTF = multiByte && ((MultiByteFont)tf).isOTFFile() || tf 
instanceof CFFToType1Font;
+        boolean isOTF = multiByte && ((MultiByteFont)tf).isOTFFile();
         for (int i = start; i < end; i++) {
             char orgChar = text.charAt(i);
             char ch;
@@ -580,13 +578,11 @@ public class PSPainter extends AbstractI
     private void useFont(String key, int size, boolean otf) throws IOException 
{
         PSFontResource res = getDocumentHandler().getPSResourceForFontKey(key);
         PSGenerator generator = getGenerator();
+        String name = "/" + res.getName();
         if (otf) {
-            String name = "/" + res.getName() + ".0";
-            generator.getCurrentState().useFont(name, size);
-            generator.writeln(name + ' ' + generator.formatDouble(size / 
1000f) + " F");
-        } else {
-            generator.useFont("/" + res.getName(), size / 1000f);
+            name += ".0";
         }
+        generator.useFont(name, size / 1000f);
         res.notifyResourceUsageOnPage(generator.getResourceTracker());
     }
 }

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/render/ps/Type1FontFormatter.java
 Wed May 25 14:12:42 2016
@@ -28,8 +28,6 @@ import org.apache.fontbox.cff.CFFType1Fo
 import org.apache.fontbox.cff.DataOutput;
 import org.apache.fontbox.cff.Type1FontUtil;
 
-import org.apache.fop.fonts.FontEventListener;
-
 /**
  * This class represents a formatter for a given Type1 font.
  * author Villu Ruusmann
@@ -37,31 +35,30 @@ import org.apache.fop.fonts.FontEventLis
  */
 public final class Type1FontFormatter {
     private Map<Integer, Integer> gids;
-    private FontEventListener eventListener;
 
-    public Type1FontFormatter(Map<Integer, Integer> gids, FontEventListener 
eventListener) {
+    public Type1FontFormatter(Map<Integer, Integer> gids) {
         this.gids = gids;
-        this.eventListener = eventListener;
     }
 
     /**
      * Read and convert a given CFFFont.
      * @param font the given CFFFont
+     * @param i
      * @return the Type1 font
      * @throws IOException if an error occurs during reading the given font
      */
-    public byte[] format(CFFType1Font font) throws IOException {
+    public byte[] format(CFFType1Font font, String i) throws IOException {
         DataOutput output = new DataOutput();
-        printFont(font, output);
+        printFont(font, output, i);
         return output.getBytes();
     }
 
-    private void printFont(CFFType1Font font, DataOutput output)
+    private void printFont(CFFType1Font font, DataOutput output, String iStr)
             throws IOException {
-        output.println("%!FontType1-1.0 " + font.getName() + " "
+        output.println("%!FontType1-1.0 " + font.getName() + iStr + " "
                 + font.getTopDict().get("version"));
 
-        printFontDictionary(font, output);
+        printFontDictionary(font, output, iStr);
 
         for (int i = 0; i < 8; i++) {
             StringBuilder sb = new StringBuilder();
@@ -76,7 +73,7 @@ public final class Type1FontFormatter {
         output.println("cleartomark");
     }
 
-    private void printFontDictionary(CFFType1Font font, DataOutput output)
+    private void printFontDictionary(CFFType1Font font, DataOutput output, 
String iStr)
             throws IOException {
         output.println("10 dict begin");
         output.println("/FontInfo 10 dict dup begin");
@@ -99,7 +96,7 @@ public final class Type1FontFormatter {
         output.println("/UnderlineThickness "
                 + font.getTopDict().get("UnderlineThickness") + " def");
         output.println("end readonly def");
-        output.println("/FontName /" + font.getName() + " def");
+        output.println("/FontName /" + font.getName() + iStr + " def");
         output.println("/PaintType " + font.getTopDict().get("PaintType") + " 
def");
         output.println("/FontType 1 def");
         NumberFormat matrixFormat = new DecimalFormat("0.########", new 
DecimalFormatSymbols(Locale.US));
@@ -119,9 +116,6 @@ public final class Type1FontFormatter {
             sb.append(String.format("dup %d /%s put", gid.getValue(), 
name)).append('\n');
             max = Math.max(max, gid.getValue());
         }
-        if (max > 255) {
-            eventListener.fontType1MaxGlyphs(this, font.getName());
-        }
         output.println("/Encoding " + (max + 1) + " array");
         output.println("0 1 " + max + " {1 index exch /.notdef put} for");
         output.print(sb.toString());

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/tools/fontlist/FontListMain.java
 Wed May 25 14:12:42 2016
@@ -154,10 +154,6 @@ public final class FontListMain {
             public void svgTextStrokedAsShapes(Object source, String 
fontFamily) {
                 // ignore
             }
-
-            public void fontType1MaxGlyphs(Object source, String fontName) {
-                //ignore
-            }
         };
 
         FontListGenerator listGenerator = new FontListGenerator();

Modified: 
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/main/resources/org/apache/fop/fonts/FontEventProducer.xml
 Wed May 25 14:12:42 2016
@@ -22,5 +22,4 @@
   <message key="glyphNotAvailable">Glyph "{ch}" (0x{ch,hex}[, 
{ch,glyph-name}]) not available in font "{fontName}".</message>
   <message key="fontDirectoryNotFound">The font directory {dir} could not be 
found.</message>
   <message key="svgTextStrokedAsShapes">The SVG text for font {fontFamily} 
will be stroked as shapes.</message>
-  <message key="fontType1MaxGlyphs">Font "{fontName}" encoding has more than 
256 glyphs may cause wrong output, enable font subsetting or disable 
'embed-as-type1'.</message>
 </catalogue>

Modified: 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/fonts/truetype/OTFToType1TestCase.java
 Wed May 25 14:12:42 2016
@@ -29,6 +29,7 @@ import org.apache.fontbox.type1.Type1Fon
 
 import org.apache.fop.apps.io.InternalResourceResolver;
 import org.apache.fop.apps.io.ResourceResolverFactory;
+import org.apache.fop.fonts.CFFToType1Font;
 import org.apache.fop.fonts.CustomFont;
 import org.apache.fop.fonts.EmbeddingMode;
 import org.apache.fop.fonts.EncodingMode;
@@ -40,10 +41,10 @@ public class OTFToType1TestCase {
     @Test
     public void testFont() throws IOException {
         Type1Font t1 = 
getFont("test/resources/fonts/otf/SourceSansProBold.otf");
-        Assert.assertEquals(t1.getFontName(), "SourceSansPro-Bold");
+        Assert.assertEquals(t1.getFontName(), "SourceSansPro-Bold.0");
         Assert.assertEquals(t1.getCharStringsDict().keySet().toString(), 
"[.notdef, d]");
         t1 = getFont("test/resources/fonts/otf/AlexBrushRegular.otf");
-        Assert.assertEquals(t1.getFontName(), "AlexBrush-Regular");
+        Assert.assertEquals(t1.getFontName(), "AlexBrush-Regular.0");
     }
 
     private Type1Font getFont(String s) throws IOException {
@@ -52,7 +53,7 @@ public class OTFToType1TestCase {
         CustomFont realFont = FontLoader.loadFont(new FontUris(new 
File(s).toURI(), null), null, true,
                 EmbeddingMode.SUBSET, EncodingMode.AUTO, true, true, rr, true);
         realFont.mapChar('d');
-        InputStream is = realFont.getInputStream();
+        InputStream is = ((CFFToType1Font)realFont).getInputStreams().get(0);
         return Type1Font.createWithPFB(is);
     }
 }

Modified: 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java?rev=1745490&r1=1745489&r2=1745490&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
 (original)
+++ 
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ps/PSPainterTestCase.java
 Wed May 25 14:12:42 2016
@@ -220,7 +220,6 @@ public class PSPainterTestCase {
                 + "/OTFFont.0 0.01 F\n"
                 + "1 0 0 -1 0 0 Tm\n"
                 + "<FFFFFFFFFF> t\n"
-                + "/OTFFont.0 0.01 F\n"
                 + "1 0 0 -1 0 0 Tm\n"
                 + "<FFFFFFFFFF> t\n"
                 + "/TTFFont 0.01 F\n"



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to