Adds glyph mapping for standard fonts

This commit is contained in:
Yury Delendik 2014-01-03 14:17:50 -06:00
parent c389451a5b
commit 51b958dc2b
3 changed files with 92 additions and 0 deletions

View File

@ -456,6 +456,76 @@ var HalfwidthCMaps = {
'UniJIS-UCS2-HW-V': true
};
// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID fonts
// but does not embed the CID to GID mapping. The mapping is incomplete for all
// glyphs, but common for some set of the standard fonts.
var GlyphMapForStandardFonts = {
'2': 10, '3': 32, '4': 33, '5': 34, '6': 35, '7': 36, '8': 37, '9': 38,
'10': 39, '11': 40, '12': 41, '13': 42, '14': 43, '15': 44, '16': 173,
'17': 46, '18': 47, '19': 48, '20': 49, '21': 50, '22': 51, '23': 52,
'24': 53, '25': 54, '26': 55, '27': 56, '28': 57, '29': 58, '30': 894,
'31': 60, '32': 61, '33': 62, '34': 63, '35': 64, '36': 65, '37': 66,
'38': 67, '39': 68, '40': 69, '41': 70, '42': 71, '43': 72, '44': 73,
'45': 74, '46': 75, '47': 76, '48': 77, '49': 78, '50': 79, '51': 80,
'52': 81, '53': 82, '54': 83, '55': 84, '56': 85, '57': 86, '58': 87,
'59': 88, '60': 89, '61': 90, '62': 91, '63': 92, '64': 93, '65': 94,
'66': 95, '67': 96, '68': 97, '69': 98, '70': 99, '71': 100, '72': 101,
'73': 102, '74': 103, '75': 104, '76': 105, '77': 106, '78': 107, '79': 108,
'80': 109, '81': 110, '82': 111, '83': 112, '84': 113, '85': 114, '86': 115,
'87': 116, '88': 117, '89': 118, '90': 119, '91': 120, '92': 121, '93': 122,
'94': 123, '95': 124, '96': 125, '97': 126, '98': 196, '99': 197, '100': 199,
'101': 201, '102': 209, '103': 214, '104': 220, '105': 225, '106': 224,
'107': 226, '108': 228, '109': 227, '110': 229, '111': 231, '112': 233,
'113': 232, '114': 234, '115': 235, '116': 237, '117': 236, '118': 238,
'119': 239, '120': 241, '121': 243, '122': 242, '123': 244, '124': 246,
'125': 245, '126': 250, '127': 249, '128': 251, '129': 252, '130': 8224,
'131': 176, '132': 162, '133': 163, '134': 167, '135': 8226, '136': 182,
'137': 223, '138': 174, '139': 169, '140': 8482, '141': 180, '142': 168,
'143': 8800, '144': 198, '145': 216, '146': 8734, '147': 177, '148': 8804,
'149': 8805, '150': 165, '151': 181, '152': 8706, '153': 8721, '154': 8719,
'156': 8747, '157': 170, '158': 186, '159': 8486, '160': 230, '161': 248,
'162': 191, '163': 161, '164': 172, '165': 8730, '166': 402, '167': 8776,
'168': 8710, '169': 171, '170': 187, '171': 8230, '210': 218, '305': 963,
'306': 964, '307': 966, '308': 8215, '309': 8252, '310': 8319, '311': 8359,
'312': 8592, '313': 8593, '337': 9552, '493': 1039, '494': 1040, '705': 1524,
'706': 8362, '710': 64288, '711': 64298, '759': 1617, '761': 1776,
'763': 1778, '775': 1652, '777': 1764, '778': 1780, '779': 1781, '780': 1782,
'782': 771, '783': 64726, '786': 8363, '788': 8532, '790': 768, '791': 769,
'792': 768, '795': 803, '797': 64336, '798': 64337, '799': 64342,
'800': 64343, '801': 64344, '802': 64345, '803': 64362, '804': 64363,
'805': 64364, '2424': 7821, '2425': 7822, '2426': 7823, '2427': 7824,
'2428': 7825, '2429': 7826, '2430': 7827, '2433': 7682, '2678': 8045,
'2679': 8046, '2830': 1552, '2838': 686, '2840': 751, '2842': 753,
'2843': 754, '2844': 755, '2846': 757, '2856': 767, '2857': 848, '2858': 849,
'2862': 853, '2863': 854, '2864': 855, '2865': 861, '2866': 862, '2906': 7460,
'2908': 7462, '2909': 7463, '2910': 7464, '2912': 7466, '2913': 7467,
'2914': 7468, '2916': 7470, '2917': 7471, '2918': 7472, '2920': 7474,
'2921': 7475, '2922': 7476, '2924': 7478, '2925': 7479, '2926': 7480,
'2928': 7482, '2929': 7483, '2930': 7484, '2932': 7486, '2933': 7487,
'2934': 7488, '2936': 7490, '2937': 7491, '2938': 7492, '2940': 7494,
'2941': 7495, '2942': 7496, '2944': 7498, '2946': 7500, '2948': 7502,
'2950': 7504, '2951': 7505, '2952': 7506, '2954': 7508, '2955': 7509,
'2956': 7510, '2958': 7512, '2959': 7513, '2960': 7514, '2962': 7516,
'2963': 7517, '2964': 7518, '2966': 7520, '2967': 7521, '2968': 7522,
'2970': 7524, '2971': 7525, '2972': 7526, '2974': 7528, '2975': 7529,
'2976': 7530, '2978': 1537, '2979': 1538, '2980': 1539, '2982': 1549,
'2983': 1551, '2984': 1552, '2986': 1554, '2987': 1555, '2988': 1556,
'2990': 1623, '2991': 1624, '2995': 1775, '2999': 1791, '3002': 64290,
'3003': 64291, '3004': 64292, '3006': 64294, '3007': 64295, '3008': 64296,
'3011': 1900, '3014': 8223, '3015': 8244, '3017': 7532, '3018': 7533,
'3019': 7534, '3075': 7590, '3076': 7591, '3079': 7594, '3080': 7595,
'3083': 7598, '3084': 7599, '3087': 7602, '3088': 7603, '3091': 7606,
'3092': 7607, '3095': 7610, '3096': 7611, '3099': 7614, '3100': 7615,
'3103': 7618, '3104': 7619, '3107': 8337, '3108': 8338, '3116': 1884,
'3119': 1885, '3120': 1885, '3123': 1886, '3124': 1886, '3127': 1887,
'3128': 1887, '3131': 1888, '3132': 1888, '3135': 1889, '3136': 1889,
'3139': 1890, '3140': 1890, '3143': 1891, '3144': 1891, '3147': 1892,
'3148': 1892, '3153': 580, '3154': 581, '3157': 584, '3158': 585, '3161': 588,
'3162': 589, '3165': 891, '3166': 892, '3169': 1274, '3170': 1275,
'3173': 1278, '3174': 1279, '3181': 7622, '3182': 7623, '3282': 11799,
'3316': 578, '3379': 42785, '3393': 1159, '3416': 8377
};
var decodeBytes;
if (typeof TextDecoder !== 'undefined') {
// The encodings supported by TextDecoder can be found at:
@ -2210,6 +2280,7 @@ var Font = (function FontClosure() {
// The file data is not specified. Trying to fix the font name
// to be used with the canvas.font.
var fontName = name.replace(/[,_]/g, '-');
var isStandardFont = fontName in stdFontMap;
fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
this.bold = (fontName.search(/bold/gi) != -1);
@ -2225,6 +2296,17 @@ var Font = (function FontClosure() {
this.encoding = properties.baseEncoding;
this.noUnicodeAdaptation = true;
if (isStandardFont && type === 'CIDFontType2' &&
properties.cidEncoding.indexOf('Identity-') === 0) {
// Standard fonts might be embedded as CID font without glyph mapping.
// Building one based on GlyphMapForStandardFonts.
var map = [];
for (var code in GlyphMapForStandardFonts) {
map[+code] = GlyphMapForStandardFonts[code];
}
this.toFontChar = map;
this.toUnicode = map;
}
this.loadedName = fontName.split('-')[0];
this.loading = false;
return;

View File

@ -0,0 +1 @@
https://bugzilla.mozilla.org/attachment.cgi?id=8344035

View File

@ -52,6 +52,15 @@
"type": "eq",
"about": "Fonts referenced only by name and not by an object identifier."
},
{ "id": "bug921760",
"file": "pdfs/bug921760.pdf",
"md5": "1aa136d786a65b0d7cce7bdb3c58c6c3",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3879",
"file": "pdfs/issue3879.pdf",
"md5": "1cd1f1c3271515a14e65ff2980e14663",