You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2021/02/06 11:59:54 UTC

svn commit: r1886254 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java

Author: lehmi
Date: Sat Feb  6 11:59:53 2021
New Revision: 1886254

URL: http://svn.apache.org/viewvc?rev=1886254&view=rev
Log:
PDFBOX-5094: removed first attempt for a fix, rearranged existing code to meet the spec

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1886254&r1=1886253&r2=1886254&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sat Feb  6 11:59:53 2021
@@ -549,8 +549,7 @@ public class PDTrueTypeFont extends PDSi
         extractCmapTable();
         int gid = 0;
 
-        if (!isSymbolic() // non-symbolic
-                || encoding instanceof WinAnsiEncoding || encoding instanceof MacRomanEncoding)
+        if (!isSymbolic()) // non-symbolic
         {
             String name = encoding.getName(code);
             if (".notdef".equals(name))
@@ -589,6 +588,30 @@ public class PDTrueTypeFont extends PDSi
         }
         else // symbolic
         {
+            // PDFBOX-4755 / PDF.js #5501
+            // PDFBOX-3965: fallback for font has that the symbol flag but isn't
+            if (gid == 0 && cmapWinUnicode != null)
+            {
+                if (encoding instanceof WinAnsiEncoding || encoding instanceof MacRomanEncoding)
+                {
+                    String name = encoding.getName(code);
+                    if (".notdef".equals(name))
+                    {
+                        return 0;
+                    }
+                    String unicode = GlyphList.getAdobeGlyphList().toUnicode(name);
+                    if (unicode != null)
+                    {
+                        int uni = unicode.codePointAt(0);
+                        gid = cmapWinUnicode.getGlyphId(uni);
+                    }
+                }
+                else
+                {
+                    gid = cmapWinUnicode.getGlyphId(code);
+                }
+            }
+
             // (3, 0) - (Windows, Symbol)
             if (cmapWinSymbol != null)
             {
@@ -621,30 +644,7 @@ public class PDTrueTypeFont extends PDSi
             {
                 gid = cmapMacRoman.getGlyphId(code);
             }
-
-            // PDFBOX-4755 / PDF.js #5501
-            if (gid == 0 && cmapWinUnicode != null)
-            {
-                gid = cmapWinUnicode.getGlyphId(code);
-            }
-
-            // PDFBOX-3965: fallback for font has that the symbol flag but isn't
-            if (gid == 0 && cmapWinUnicode != null && encoding != null)
-            {
-                String name = encoding.getName(code);
-                if (".notdef".equals(name))
-                {
-                    return 0;
-                }
-                String unicode = GlyphList.getAdobeGlyphList().toUnicode(name);
-                if (unicode != null)
-                {
-                    int uni = unicode.codePointAt(0);
-                    gid = cmapWinUnicode.getGlyphId(uni);
-                }
-            }            
         }
-
         return gid;
     }