From 932eceb3efe9d7ab1b15916aaf84f7d6ae14a01d Mon Sep 17 00:00:00 2001 From: Tilman Hausherr Date: Thu, 7 Dec 2023 17:18:56 +0000 Subject: [PATCH] PDFBOX-5729: add debug output about missing features git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1914437 13f79535-47bb-0310-9956-ffa450edef68 --- .../fontbox/ttf/GlyphSubstitutionTable.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java b/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java index 5d71a1816f0..aa1526adbed 100644 --- a/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java +++ b/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java @@ -101,6 +101,28 @@ void read(TrueTypeFont ttf, TTFDataStream data) throws IOException featureListTable = readFeatureList(data, start + featureListOffset); lookupListTable = readLookupList(data, start + lookupListOffset); + LookupTable[] lookupTable = lookupListTable.getLookups(); + for (FeatureRecord rec : featureListTable.getFeatureRecords()) + { + FeatureTable tab = rec.getFeatureTable(); + String tag = rec.getFeatureTag(); + int[] indices = tab.getLookupListIndices(); + for (int i = 0; i < indices.length; ++i) + { + int lookupType = lookupTable[indices[i]].getLookupType(); + + LookupSubTable[] lst = lookupTable[indices[i]].getSubTables(); + if (lst.length == 0 || lst[0] == null) + { + for (int j = 0; j < lst.length; ++j) + { + LOG.debug("Type {} GSUB feature '{}' at index {} unavailable", + lookupType, tag, indices[i]); + } + } + } + } + GlyphSubstitutionDataExtractor glyphSubstitutionDataExtractor = new GlyphSubstitutionDataExtractor(); gsubData = glyphSubstitutionDataExtractor