]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2322: Type1 Font with Custom Encoding not visible in Postscript output; Patch...
authorRobert Meyer <rmeyer@apache.org>
Thu, 5 Dec 2013 09:57:19 +0000 (09:57 +0000)
committerRobert Meyer <rmeyer@apache.org>
Thu, 5 Dec 2013 09:57:19 +0000 (09:57 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1548054 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
src/java/org/apache/fop/render/ps/PSFontUtils.java

index dddf2a3a30de828f13b19de79379de16173590fb..716faa61e347805eafad77c9bf9d330d23745a5e 100644 (file)
@@ -173,7 +173,21 @@ public class Type1FontLoader extends FontLoader {
                 addUnencodedBasedOnAFM(afm);
             }
         } else {
-            if (pfm.getCharSet() >= 0 && pfm.getCharSet() <= 2) {
+            if (pfm.getCharSet() == 2 && !pfm.getCharSetName().equals("Symbol")) {
+                int[] table = new int[256];
+                String[] charNameMap = new String[256];
+                int j = 0;
+                for (int i = pfm.getFirstChar(); i < pfm.getLastChar(); i++) {
+                    if (j < table.length) {
+                        table[j] = i;
+                        table[j + 1] = i;
+                        j += 2;
+                    }
+                    charNameMap[i] = String.format("x%03o", i);
+                }
+                CodePointMapping mapping  = new CodePointMapping("custom", table, charNameMap);
+                singleFont.setEncoding(mapping);
+            } else if (pfm.getCharSet() >= 0 && pfm.getCharSet() <= 2) {
                 singleFont.setEncoding(pfm.getCharSetName() + "Encoding");
             } else {
                 log.warn("The PFM reports an unsupported encoding ("
index c22a3ba28fda47503e85222bf3ec211b42ad5973..06191f84d62b666776c8df782d4664e43b79cb75 100644 (file)
@@ -175,6 +175,15 @@ public class PSFontUtils extends org.apache.xmlgraphics.ps.PSFontUtils {
 
         if (!tracker.isResourceSupplied(WINANSI_ENCODING_RESOURCE)) {
             //Only out Base 14 fonts still use that
+            for (Typeface tf : fonts.values()) {
+                if (tf instanceof LazyFont) {
+                    tf = ((LazyFont)tf).getRealFont();
+                    if (tf instanceof SingleByteFont
+                            && ((SingleByteFont) tf).getEncoding().getName().equals("custom")) {
+                        defineEncoding(gen, ((SingleByteFont) tf).getEncoding());
+                    }
+                }
+            }
             defineWinAnsiEncoding(gen);
         }
         gen.commentln("%FOPBeginFontReencode");