diff --git a/src/core/fonts.js b/src/core/fonts.js index 95ee7fdb8..cdb08c74b 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2666,7 +2666,14 @@ var Font = (function FontClosure() { } // Some CIDFontType0C fonts by mistake claim CIDFontType0. if (type === 'CIDFontType0') { - subtype = isType1File(file) ? 'CIDFontType0' : 'CIDFontType0C'; + if (isType1File(file)) { + subtype = 'CIDFontType0'; + } else if (isOpenTypeFile(file)) { + // Sometimes the type/subtype can be a complete lie (see issue6782.pdf). + type = subtype = 'OpenType'; + } else { + subtype = 'CIDFontType0C'; + } } var data; @@ -2750,6 +2757,11 @@ var Font = (function FontClosure() { return readUint32(header, 0) === 0x00010000; } + function isOpenTypeFile(file) { + var header = file.peekBytes(4); + return bytesToString(header) === 'OTTO'; + } + function isType1File(file) { var header = file.peekBytes(2); // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21). diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 74aa95331..e6b2b9c2e 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -14,6 +14,7 @@ !issue5946.pdf !issue5972.pdf !issue5874.pdf +!issue6782.pdf !filled-background.pdf !ArabicCIDTrueType.pdf !ThuluthFeatures.pdf diff --git a/test/pdfs/issue6782.pdf b/test/pdfs/issue6782.pdf new file mode 100644 index 000000000..d86458e89 Binary files /dev/null and b/test/pdfs/issue6782.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 694509251..1a1454483 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1472,6 +1472,13 @@ "link": false, "type": "eq" }, + { "id": "issue6782", + "file": "pdfs/issue6782.pdf", + "md5": "b423f709600daa5745cc6d8234f7c608", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "bug867484", "file": "pdfs/bug867484.pdf", "md5": "347af7b0ef7279b1a7f43b03bfda4548",