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 2023/07/02 08:49:00 UTC

svn commit: r1910739 - in /pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf: OpenTypeFont.java TTFParser.java

Author: lehmi
Date: Sun Jul  2 08:48:59 2023
New Revision: 1910739

URL: http://svn.apache.org/viewvc?rev=1910739&view=rev
Log:
PDFBOX-5632: improve code handling loca-tables for fonts using CFF outlines

Modified:
    pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/OpenTypeFont.java
    pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFParser.java

Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/OpenTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/OpenTypeFont.java?rev=1910739&r1=1910738&r2=1910739&view=diff
==============================================================================
--- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/OpenTypeFont.java (original)
+++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/OpenTypeFont.java Sun Jul  2 08:48:59 2023
@@ -80,7 +80,7 @@ public class OpenTypeFont extends TrueTy
      */
     public boolean isPostScript()
     {
-        return tables.containsKey(CFFTable.TAG);
+        return isPostScript || tables.containsKey(CFFTable.TAG) || tables.containsKey("CFF2");
     }
 
     /**

Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFParser.java?rev=1910739&r1=1910738&r2=1910739&view=diff
==============================================================================
--- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFParser.java (original)
+++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/TTFParser.java Sun Jul  2 08:48:59 2023
@@ -190,7 +190,8 @@ public class TTFParser
         }
         
         boolean hasCFF = font.tables.containsKey(CFFTable.TAG);
-        boolean isPostScript = allowCFF() && hasCFF;
+        boolean isOTF = font instanceof OpenTypeFont;
+        boolean isPostScript = isOTF ? ((OpenTypeFont) font).isPostScript() : hasCFF;
         
         HeaderTable head = font.getHeader();
         if (head == null)
@@ -219,20 +220,13 @@ public class TTFParser
 
         if (!isPostScript)
         {
-            String messageSuffix = "";
-            if (hasCFF)
+            if (font.getIndexToLocation() == null)
             {
-                messageSuffix = "; this an OpenType CFF font, but we expected a TrueType font here";
+                throw new IOException("'loca' table is mandatory");
             }
-            IndexToLocationTable loc = font.getIndexToLocation();
-            if (loc == null)
-            {
-                throw new IOException("'loca' table is mandatory" + messageSuffix);
-            }
-
             if (font.getGlyph() == null)
             {
-                throw new IOException("'glyf' table is mandatory" + messageSuffix);
+                throw new IOException("'glyf' table is mandatory");
             }
         }