You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/11/26 14:01:53 UTC

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

Author: tilman
Date: Fri Nov 26 14:01:53 2021
New Revision: 1895355

URL: http://svn.apache.org/viewvc?rev=1895355&view=rev
Log:
PDFBOX-5324, PDFBOX-5331: Get unicode from TrueTypeFont cmap for non-embedded font

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

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1895355&r1=1895354&r2=1895355&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Fri Nov 26 14:01:53 2021
@@ -503,7 +503,7 @@ public class PDType0Font extends PDFont
         }
 
         // PDFBOX-5324: try to get unicode from font cmap
-        if (descendantFont instanceof PDCIDFontType2 && descendantFont.isEmbedded())
+        if (descendantFont instanceof PDCIDFontType2)
         {
             TrueTypeFont font = ((PDCIDFontType2) descendantFont).getTrueTypeFont();
             if (font != null)
@@ -513,7 +513,18 @@ public class PDType0Font extends PDFont
                     CmapLookup cmap = font.getUnicodeCmapLookup(false);
                     if (cmap != null)
                     {
-                        int gid = descendantFont.codeToGID(code);
+                        int gid;
+                        if (descendantFont.isEmbedded())
+                        {
+                            // original PDFBOX-5324 supported only embedded fonts
+                            gid = descendantFont.codeToGID(code);
+                        }
+                        else
+                        {
+                            // PDFBOX-5331: this bypasses the fallback attempt in
+                            // PDCIDFontType2.codeToGID() which would bring a stackoverflow
+                            gid = descendantFont.codeToCID(code);
+                        }
                         List<Integer> codes = cmap.getCharCodes(gid);
                         if (codes != null && !codes.isEmpty())
                         {