1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-22 16:18:08 +02:00

Check that CIDFontType0 fonts does not actually contain OpenType font files (issue 6782)

*This patch follows a similar idea as PR 5756.*

The patch is based on the nice debugging done by Brendan in the referenced issue 6782.
A better way to handle this, and similar issues, would probably be to completely ignore what the PDF file claims about font type/subtype, and just check the actual data. But until that kind of rewrite happens, this patch should help.

Fixes 6782.
This commit is contained in:
Jonas Jenwald 2016-01-06 02:07:21 +01:00
parent 4399d01169
commit 896e390285
4 changed files with 21 additions and 1 deletions

View file

@ -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).