You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/08/19 05:23:38 UTC

svn commit: r1618787 - in /pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: ExternalFonts.java PDFont.java

Author: jahewson
Date: Tue Aug 19 03:23:38 2014
New Revision: 1618787

URL: http://svn.apache.org/r1618787
Log:
PDFBOX-2262: Fix TTF symbolic mapping

Modified:
    pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
    pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java?rev=1618787&r1=1618786&r2=1618787&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/ExternalFonts.java Tue Aug 19 03:23:38 2014
@@ -171,6 +171,14 @@ public final class ExternalFonts
     }
 
     /**
+     * Windows name (ArialNarrow,Bold) to PostScript name (ArialNarrow-Bold)
+     */
+    private static String windowsToPs(String windowsName)
+    {
+        return windowsName.replace(",", "-");
+    }
+
+    /**
      * Returns the fallback font, used for rendering when no other fonts are available.
      */
     public static TrueTypeFont getFallbackFont()
@@ -197,9 +205,11 @@ public final class ExternalFonts
                 ttf = getProvider().getTrueTypeFont(substituteName);
                 if (ttf != null)
                 {
-                    break;
+                    return ttf;
                 }
             }
+            // then Windows name
+            ttf = getProvider().getTrueTypeFont(windowsToPs(postScriptName));
         }
         return ttf;
     }
@@ -221,9 +231,11 @@ public final class ExternalFonts
                 t1 = getProvider().getType1Font(substituteName);
                 if (t1 != null)
                 {
-                    break;
+                    return t1;
                 }
             }
+            // then Windows name
+            t1 = getProvider().getType1Font(windowsToPs(postScriptName));
         }
         return t1;
     }
@@ -275,9 +287,11 @@ public final class ExternalFonts
                 cff = getProvider().getCFFFont(substituteName);
                 if (cff != null)
                 {
-                    break;
+                    return cff;
                 }
             }
+            // then Windows name
+            cff = getProvider().getCFFFont(windowsToPs(postScriptName));
         }
         return cff;
     }

Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1618787&r1=1618786&r2=1618787&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Tue Aug 19 03:23:38 2014
@@ -619,12 +619,8 @@ public abstract class PDFont implements 
     {
         if (getFontDescriptor() != null)
         {
-            // fixme: isSymbolic() defaults to false if the flag is missing, which isn't useful!
-            // todo: what about isNonSymbolic()?
-            if (getFontDescriptor().isSymbolic()) // we can trust "true", but not "false"
-            {
-                return true;
-            }
+            // fixme: isSymbolic() defaults to false if the flag is missing so we can't trust this
+            return getFontDescriptor().isSymbolic();
         }
 
         // fixme: this heuristic is a starting point only