diff --git a/src/core/fonts.js b/src/core/fonts.js index ba025edc3..1554ff894 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2575,6 +2575,10 @@ var Font = (function FontClosure() { if (subtype === 'OpenType') { type = 'OpenType'; } + // Some CIDFontType0C fonts by mistake claim CIDFontType0. + if (type === 'CIDFontType0') { + subtype = isType1File(file) ? 'CIDFontType0' : 'CIDFontType0C'; + } var data; switch (type) { @@ -2655,6 +2659,20 @@ var Font = (function FontClosure() { return readUint32(header, 0) === 0x00010000; } + function isType1File(file) { + var header = file.peekBytes(2); + // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21). + if (header[0] === 0x25 && header[1] === 0x21) { + return true; + } + // ... obviously some fonts violate that part of the specification, + // please refer to the comment in |Type1Font| below. + if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header. + return true; + } + return false; + } + /** * Helper function for |adjustMapping|. * @return {boolean} diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index d65b22c82..354444578 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -64,6 +64,7 @@ !bug868745.pdf !mmtype1.pdf !issue5704.pdf +!issue5751.pdf !bug893730.pdf !bug864847.pdf !issue1002.pdf diff --git a/test/pdfs/issue5751.pdf b/test/pdfs/issue5751.pdf new file mode 100644 index 000000000..763de9d2b Binary files /dev/null and b/test/pdfs/issue5751.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 1eba029ec..e136ebcfc 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1128,6 +1128,13 @@ "link": true, "type": "eq" }, + { "id": "issue5751", + "file": "pdfs/issue5751.pdf", + "md5": "9334a52dc85747f1e3422767e0cd3ee9", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "bug867484", "file": "pdfs/bug867484.pdf", "md5": "347af7b0ef7279b1a7f43b03bfda4548",