Merge pull request #5923 from Snuffleupagus/bug-911034
Don't map glyphs to certain problematic General Punctuation Unicode locations (bug 911034)
This commit is contained in:
commit
63aaf1b969
@ -2655,6 +2655,38 @@ var Font = (function FontClosure() {
|
|||||||
return readUint32(header, 0) === 0x00010000;
|
return readUint32(header, 0) === 0x00010000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function for |adjustMapping|.
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
function isProblematicUnicodeLocation(code) {
|
||||||
|
if (code <= 0x1F) { // Control chars
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (code >= 0x80 && code <= 0x9F) { // Control chars
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((code >= 0x2000 && code <= 0x200F) || // General punctuation chars
|
||||||
|
(code >= 0x2028 && code <= 0x202F) ||
|
||||||
|
(code >= 0x2060 && code <= 0x206F)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials Unicode block
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
switch (code) {
|
||||||
|
case 0x7F: // Control char
|
||||||
|
case 0xA0: // Non breaking space
|
||||||
|
case 0xAD: // Soft hyphen
|
||||||
|
case 0x0E33: // Thai character SARA AM
|
||||||
|
case 0x2011: // Non breaking hyphen
|
||||||
|
case 0x205F: // Medium mathematical space
|
||||||
|
case 0x25CC: // Dotted circle (combining mark)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rebuilds the char code to glyph ID map by trying to replace the char codes
|
* Rebuilds the char code to glyph ID map by trying to replace the char codes
|
||||||
* with their unicode value. It also moves char codes that are in known
|
* with their unicode value. It also moves char codes that are in known
|
||||||
@ -2694,15 +2726,7 @@ var Font = (function FontClosure() {
|
|||||||
// characters probably aren't in the correct position (fixes an issue
|
// characters probably aren't in the correct position (fixes an issue
|
||||||
// with firefox and thuluthfont).
|
// with firefox and thuluthfont).
|
||||||
if ((usedFontCharCodes[fontCharCode] !== undefined ||
|
if ((usedFontCharCodes[fontCharCode] !== undefined ||
|
||||||
fontCharCode <= 0x1f || // Control chars
|
isProblematicUnicodeLocation(fontCharCode) ||
|
||||||
fontCharCode === 0x7F || // Control char
|
|
||||||
fontCharCode === 0xAD || // Soft hyphen
|
|
||||||
fontCharCode === 0xA0 || // Non breaking space
|
|
||||||
fontCharCode === 0x0E33 || // Thai character SARA AM
|
|
||||||
fontCharCode === 0x25CC || // Dotted circle (combining mark)
|
|
||||||
(fontCharCode >= 0x80 && fontCharCode <= 0x9F) || // Control chars
|
|
||||||
// Prevent drawing characters in the specials unicode block.
|
|
||||||
(fontCharCode >= 0xFFF0 && fontCharCode <= 0xFFFF) ||
|
|
||||||
(isSymbolic && isIdentityUnicode)) &&
|
(isSymbolic && isIdentityUnicode)) &&
|
||||||
nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END) { // Room left.
|
nextAvailableFontCharCode <= PRIVATE_USE_OFFSET_END) { // Room left.
|
||||||
// Loop to try and find a free spot in the private use area.
|
// Loop to try and find a free spot in the private use area.
|
||||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -30,6 +30,7 @@
|
|||||||
!bug847420.pdf
|
!bug847420.pdf
|
||||||
!bug860632.pdf
|
!bug860632.pdf
|
||||||
!bug894572.pdf
|
!bug894572.pdf
|
||||||
|
!bug911034.pdf
|
||||||
!bug1108301.pdf
|
!bug1108301.pdf
|
||||||
!pdfjsbad1586.pdf
|
!pdfjsbad1586.pdf
|
||||||
!freeculture.pdf
|
!freeculture.pdf
|
||||||
|
BIN
test/pdfs/bug911034.pdf
Normal file
BIN
test/pdfs/bug911034.pdf
Normal file
Binary file not shown.
@ -52,6 +52,13 @@
|
|||||||
"type": "eq",
|
"type": "eq",
|
||||||
"about": "Fonts referenced only by name and not by an object identifier."
|
"about": "Fonts referenced only by name and not by an object identifier."
|
||||||
},
|
},
|
||||||
|
{ "id": "bug911034",
|
||||||
|
"file": "pdfs/bug911034.pdf",
|
||||||
|
"md5": "54ee432a4e16b26b242fbf549cdad177",
|
||||||
|
"rounds": 1,
|
||||||
|
"link": false,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
{ "id": "bug921760",
|
{ "id": "bug921760",
|
||||||
"file": "pdfs/bug921760.pdf",
|
"file": "pdfs/bug921760.pdf",
|
||||||
"md5": "1aa136d786a65b0d7cce7bdb3c58c6c3",
|
"md5": "1aa136d786a65b0d7cce7bdb3c58c6c3",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user