diff --git a/src/core/fonts.js b/src/core/fonts.js index 246d1d630..08f5c08c9 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -508,6 +508,13 @@ var GlyphMapForStandardFonts = { '3316': 578, '3379': 42785, '3393': 1159, '3416': 8377 }; +// The glyph map for ArialBlack differs slightly from the glyph map used for +// other well-known standard fonts. Hence we use this (incomplete) CID to GID +// mapping to adjust the glyph map for non-embedded ArialBlack fonts. +var SupplementalGlyphMapForArialBlack = { + '227': 322, '264': 261, '291': 346, +}; + // Some characters, e.g. copyrightserif, are mapped to the private use area and // might not be displayed using standard fonts. Mapping/hacking well-known chars // to the similar equivalents in the normal characters range. @@ -2516,8 +2523,13 @@ var Font = (function FontClosure() { // 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]; + for (charCode in GlyphMapForStandardFonts) { + map[+charCode] = GlyphMapForStandardFonts[charCode]; + } + if (/ArialBlack/i.test(name)) { + for (charCode in SupplementalGlyphMapForArialBlack) { + map[+charCode] = SupplementalGlyphMapForArialBlack[charCode]; + } } var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; if (!isIdentityUnicode) {