From 535dc8cd7b4400ec3bb7f437a37b2c9ec4fdf3df Mon Sep 17 00:00:00 2001 From: Adil Allawi Date: Wed, 5 Oct 2011 08:42:13 +0100 Subject: [PATCH] Remap all glyphs to Unicode Private Use Area if it is possible otherwise only remap minimum problematic glyphs --- fonts.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/fonts.js b/fonts.js index 83e0771b4..b464d346b 100644 --- a/fonts.js +++ b/fonts.js @@ -13,9 +13,6 @@ var kMaxWaitForFontFace = 1000; var kCmapGlyphOffset = 0xE000; var kSizeOfGlyphArea = 0x1900; -//start of CJK block -var kUnicodeCJKStart = 0x2E80; - // PDF Glyph Space Units are one Thousandth of a TextSpace Unit // except for Type 3 fonts var kPDFGlyphSpaceUnits = 1000; @@ -1220,21 +1217,23 @@ var Font = (function Font() { // offsetting glyphs to avoid problematic unicode ranges should only be // done for fonts with a medium-sized glyph count otherwise we could // overflow the glyph range or overwrite existing glyph positions - var cmapGlyphOffset = numGlyphs < kSizeOfGlyphArea ? kCmapGlyphOffset : 0; + var canRemapAllGlyphs = numGlyphs < kSizeOfGlyphArea; for (i in encoding) { if (encoding.hasOwnProperty(i)) { var unicode = encoding[i].unicode; - if (unicode <= 0x1f || (unicode >= 127 && unicode <= kSizeOfGlyphArea)) - encoding[i].unicode = unicode += cmapGlyphOffset; + if (canRemapAllGlyphs || unicode <= 0x1f || + (unicode >= 127 && unicode <= 255)) + encoding[i].unicode += kCmapGlyphOffset; } } var glyphs = []; for (i = 1; i < numGlyphs; i++) { glyphs.push({ - unicode: i <= 0x1f || (i >= 127 && i < kSizeOfGlyphArea) ? - i + cmapGlyphOffset : i + unicode: canRemapAllGlyphs || + i <= 0x1f || (i >= 127 && i < kSizeOfGlyphArea) ? + i + kCmapGlyphOffset : i }); } cmap.data = createCMapTable(glyphs);