diff --git a/src/core/evaluator.js b/src/core/evaluator.js index e75fdff9ca7f0..5384db2b47afb 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -4558,9 +4558,22 @@ class PartialEvaluator { throw new FormatError("invalid font name"); } - let fontFile, subtype, length1, length2, length3; + let fontFile, fontFileN, subtype, length1, length2, length3; try { - fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3"); + fontFile = descriptor.get("FontFile"); + if (fontFile) { + fontFileN = 1; + } else { + fontFile = descriptor.get("FontFile2"); + if (fontFile) { + fontFileN = 2; + } else { + fontFile = descriptor.get("FontFile3"); + if (fontFile) { + fontFileN = 3; + } + } + } if (fontFile) { if (!(fontFile instanceof BaseStream)) { @@ -4662,6 +4675,7 @@ class PartialEvaluator { name: fontName.name, subtype, file: fontFile, + fontFileN, length1, length2, length3, diff --git a/src/core/fonts.js b/src/core/fonts.js index a155ac70283ab..ab92840fd2530 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2642,7 +2642,8 @@ class Font { if (!isTrueType) { // OpenType font (skip composite fonts with non-default glyph mapping). if ( - (header.version === "OTTO" && !properties.composite) || + (header.version === "OTTO" && + (!properties.composite || properties.fontFileN === 3)) || !tables.head || !tables.hhea || !tables.maxp || diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 6080768c93f9e..89ce5d446ca79 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -768,3 +768,4 @@ !issue20513.pdf !issue20516.pdf !issue20489.pdf +!Embedded_font.pdf diff --git a/test/pdfs/Embedded_font.pdf b/test/pdfs/Embedded_font.pdf new file mode 100644 index 0000000000000..448715103bb47 Binary files /dev/null and b/test/pdfs/Embedded_font.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 860497c72ebc9..06dfaef6720a6 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -13131,5 +13131,12 @@ "rounds": 1, "link": true, "type": "eq" + }, + { + "id": "Embedded_font.pdf", + "file": "pdfs/Embedded_font.pdf", + "md5": "5625dc05630ca728f45b02baf11dc540", + "rounds": 1, + "type": "eq" } ]