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:
parent
4399d01169
commit
896e390285
@ -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).
|
||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -14,6 +14,7 @@
|
||||
!issue5946.pdf
|
||||
!issue5972.pdf
|
||||
!issue5874.pdf
|
||||
!issue6782.pdf
|
||||
!filled-background.pdf
|
||||
!ArabicCIDTrueType.pdf
|
||||
!ThuluthFeatures.pdf
|
||||
|
BIN
test/pdfs/issue6782.pdf
Normal file
BIN
test/pdfs/issue6782.pdf
Normal file
Binary file not shown.
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user