From: notmasteryet Date: Wed, 11 Jan 2012 04:01:24 +0000 (-0600) Subject: Duplicate short map into private use area X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=09dfde69a285b547886c12539420673357726cb6;p=pdf.js.git Duplicate short map into private use area --- diff --git a/src/fonts.js b/src/fonts.js index 8f20def..329d7ad 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1807,15 +1807,27 @@ var Font = (function FontClosure() { if (hasShortCmap && this.hasEncoding && !this.isSymbolicFont) { // Re-encode short map encoding to unicode -- that simplifies the - // resolution of MacRoman encoded glyphs logic for TrueType fonts. + // resolution of MacRoman encoded glyphs logic for TrueType fonts: + // copying all characters to private use area, all mapping all known + // glyphs to the unicodes. The glyphs and ids arrays will grow. + var usedUnicodes = []; for (var i = 0, ii = glyphs.length; i < ii; i++) { var code = glyphs[i].unicode; + glyphs[i].unicode += kCmapGlyphOffset; + var glyphName = properties.baseEncoding[code]; - if (!glyphName) - continue; - if (!(glyphName in GlyphsUnicode)) - continue; - glyphs[i].unicode = GlyphsUnicode[glyphName]; + if (glyphName in GlyphsUnicode) { + var unicode = GlyphsUnicode[glyphName]; + if (unicode in usedUnicodes) + continue; + + usedUnicodes[unicode] = true; + glyphs.push({ + unicode: unicode, + code: glyphs[i].code + }); + ids.push(ids[i]); + } } }