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/28 21:09:01 UTC

svn commit: r1621184 - /pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java

Author: jahewson
Date: Thu Aug 28 19:09:00 2014
New Revision: 1621184

URL: http://svn.apache.org/r1621184
Log:
PDFBOX-2262/PDFBOX-2091: Fallback to 'post' table for nonsymbolic TTFs

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

Modified: pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1621184&r1=1621183&r2=1621184&view=diff
==============================================================================
--- pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/branches/no-awt/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Thu Aug 28 19:09:00 2014
@@ -203,43 +203,37 @@ public class PDTrueTypeFont extends PDSi
             }
             else
             {
-                if (cmapWinUnicode != null) // (3, 1)
+                // (3, 1) - (Windows, Unicode)
+                if (cmapWinUnicode != null)
                 {
                     String unicode = GlyphList.toUnicode(name);
                     if (unicode != null)
                     {
-                        if (unicode.isEmpty())
-                        {
-                            LOG.error("getCharacterForName for code " + code +
-                                    ", characterName '" + name +
-                                    "' is empty");
-                        }
-                        else
-                        {
-                            gid = unicode.codePointAt(0);
-                        }
+                        gid = unicode.codePointAt(0);
                     }
                     gid = cmapWinUnicode.getGlyphId(gid);
                 }
-                else if (cmapMacRoman != null) // (1, 0)
+
+                // (1, 0) - (Macintosh, Roman)
+                if (gid == 0 && cmapMacRoman != null)
                 {
                     Integer macCode = INVERTED_MACOS_ROMAN.get(name);
-                    if (macCode == null)
+                    if (macCode != null)
                     {
-                        macCode = 0;
+                        gid = cmapMacRoman.getGlyphId(macCode);
                     }
-                    gid = cmapMacRoman.getGlyphId(macCode);
                 }
-                else if (cmapWinSymbol != null)
+
+                // 'post' table
+                if (gid == 0)
                 {
-                    // fallback scenario if the glyph can't be found yet, maybe the (3, 0) cmap
-                    // provides a suitable mapping, see PDFBOX-2091
-                    gid = cmapWinSymbol.getGlyphId(code);
+                    gid = ttf.nameToGID(name);
                 }
             }
         }
         else // symbolic
         {
+            // (3, 0) - (Windows, Symbol)
             if (cmapWinSymbol != null)
             {
                 gid = cmapWinSymbol.getGlyphId(code);
@@ -265,7 +259,9 @@ public class PDTrueTypeFont extends PDSi
                     }
                 }
             }
-            else if (cmapMacRoman != null)
+
+            // (1, 0) - (Mac, Roman)
+            if (gid == 0 && cmapMacRoman != null)
             {
                 gid = cmapMacRoman.getGlyphId(code);
             }