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 2023/12/11 12:54:13 UTC

svn commit: r1914536 - /pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java

Author: tilman
Date: Mon Dec 11 12:54:13 2023
New Revision: 1914536

URL: http://svn.apache.org/viewvc?rev=1914536&view=rev
Log:
PDFBOX-5733: assign extensionLookupType to lookupType and check that they remain the same

Modified:
    pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java

Modified: pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java?rev=1914536&r1=1914535&r2=1914536&view=diff
==============================================================================
--- pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java (original)
+++ pdfbox/branches/3.0/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java Mon Dec 11 12:54:13 2023
@@ -323,6 +323,16 @@ public class GlyphSubstitutionTable exte
                 long baseOffset = data.getCurrentPosition();
                 int substFormat = data.readUnsignedShort(); // always 1
                 int extensionLookupType = data.readUnsignedShort();
+                if (lookupType != 7 && lookupType != extensionLookupType)
+                {
+                    // "If a lookup table uses extension subtables, then all of the extension
+                    //  subtables must have the same extensionLookupType"
+                    LOG.error("extensionLookupType changed from " +
+                            lookupType + " to " + extensionLookupType);
+                    data.seek(baseOffset + 8);
+                    continue;
+                }
+                lookupType = extensionLookupType;
                 long extensionOffset = data.readUnsignedInt();
                 if (substFormat != 1)
                 {