Re-factor heuristics to recognize unknown glyphs for |toUnicode|
This commit is contained in:
parent
3fc746cf7c
commit
b918df3547
@ -4310,26 +4310,30 @@ var Font = (function FontClosure() {
|
|||||||
var glyphName = encoding[charcode];
|
var glyphName = encoding[charcode];
|
||||||
// b) Look up the character name in the Adobe Glyph List (see the
|
// b) Look up the character name in the Adobe Glyph List (see the
|
||||||
// Bibliography) to obtain the corresponding Unicode value.
|
// Bibliography) to obtain the corresponding Unicode value.
|
||||||
if (glyphName === '' || !(glyphName in GlyphsUnicode)) {
|
if (glyphName === '') {
|
||||||
|
continue;
|
||||||
|
} else if (GlyphsUnicode[glyphName] === undefined) {
|
||||||
// (undocumented) c) Few heuristics to recognize unknown glyphs
|
// (undocumented) c) Few heuristics to recognize unknown glyphs
|
||||||
// NOTE: Adobe Reader does not do this step, but OSX Preview does
|
// NOTE: Adobe Reader does not do this step, but OSX Preview does
|
||||||
var code;
|
var code = 0;
|
||||||
// Gxx glyph
|
switch (glyphName[0]) {
|
||||||
if (glyphName.length === 3 &&
|
case 'G': // Gxx glyph
|
||||||
glyphName[0] === 'G' &&
|
if (glyphName.length === 3) {
|
||||||
(code = parseInt(glyphName.substr(1), 16))) {
|
code = parseInt(glyphName.substr(1), 16);
|
||||||
toUnicode[charcode] = String.fromCharCode(code);
|
}
|
||||||
|
break;
|
||||||
|
case 'g': // g00xx glyph
|
||||||
|
if (glyphName.length === 5) {
|
||||||
|
code = parseInt(glyphName.substr(1), 16);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'C': // Cddd glyph
|
||||||
|
if (glyphName.length >= 3) {
|
||||||
|
code = +glyphName.substr(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// g00xx glyph
|
if (code) {
|
||||||
if (glyphName.length === 5 &&
|
|
||||||
glyphName[0] === 'g' &&
|
|
||||||
(code = parseInt(glyphName.substr(1), 16))) {
|
|
||||||
toUnicode[charcode] = String.fromCharCode(code);
|
|
||||||
}
|
|
||||||
// Cddd glyph
|
|
||||||
if (glyphName.length >= 3 &&
|
|
||||||
glyphName[0] === 'C' &&
|
|
||||||
(code = +glyphName.substr(1))) {
|
|
||||||
toUnicode[charcode] = String.fromCharCode(code);
|
toUnicode[charcode] = String.fromCharCode(code);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user