Adjust the heuristics to recognize more cases of unknown glyphs for |toUnicode| (issue 5070)

This commit is contained in:
Jonas Jenwald 2014-07-28 18:41:47 +02:00
parent b918df3547
commit 8ecbb4da05
4 changed files with 22 additions and 0 deletions

View File

@ -4300,6 +4300,7 @@ var Font = (function FontClosure() {
if (!properties.composite /* is simple font */) { if (!properties.composite /* is simple font */) {
toUnicode = []; toUnicode = [];
var encoding = properties.defaultEncoding.slice(); var encoding = properties.defaultEncoding.slice();
var baseEncodingName = properties.baseEncodingName;
// Merge in the differences array. // Merge in the differences array.
var differences = properties.differences; var differences = properties.differences;
for (charcode in differences) { for (charcode in differences) {
@ -4328,12 +4329,25 @@ var Font = (function FontClosure() {
} }
break; break;
case 'C': // Cddd glyph case 'C': // Cddd glyph
case 'c': // cddd glyph
if (glyphName.length >= 3) { if (glyphName.length >= 3) {
code = +glyphName.substr(1); code = +glyphName.substr(1);
} }
break; break;
} }
if (code) { if (code) {
// If |baseEncodingName| is one the predefined encodings,
// and |code| equals |charcode|, using the glyph defined in the
// baseEncoding seems to yield a better |toUnicode| mapping
// (fixes issue 5070).
if (baseEncodingName && code === +charcode) {
var baseEncoding = Encodings[baseEncodingName];
if (baseEncoding && (glyphName = baseEncoding[charcode])) {
toUnicode[charcode] =
String.fromCharCode(GlyphsUnicode[glyphName]);
continue;
}
}
toUnicode[charcode] = String.fromCharCode(code); toUnicode[charcode] = String.fromCharCode(code);
} }
continue; continue;

View File

@ -56,6 +56,7 @@
!issue925.pdf !issue925.pdf
!issue4668.pdf !issue4668.pdf
!issue5039.pdf !issue5039.pdf
!issue5070.pdf
!gradientfill.pdf !gradientfill.pdf
!bug903856.pdf !bug903856.pdf
!bug850854.pdf !bug850854.pdf

BIN
test/pdfs/issue5070.pdf Normal file

Binary file not shown.

View File

@ -1067,6 +1067,13 @@
"rounds": 1, "rounds": 1,
"type": "eq" "type": "eq"
}, },
{ "id": "issue5070",
"file": "pdfs/issue5070.pdf",
"md5": "ec2ca0b4954c8390a5b3b0ffd79a8e92",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue1257", { "id": "issue1257",
"file": "pdfs/issue1257.pdf", "file": "pdfs/issue1257.pdf",
"md5": "9111533826bc21ed774e8e01603a2f54", "md5": "9111533826bc21ed774e8e01603a2f54",