Remap all glyphs to Unicode Private Use Area if it is possible otherwise only remap minimum problematic glyphs
This commit is contained in:
parent
3645ebe42c
commit
535dc8cd7b
15
fonts.js
15
fonts.js
@ -13,9 +13,6 @@ var kMaxWaitForFontFace = 1000;
|
|||||||
var kCmapGlyphOffset = 0xE000;
|
var kCmapGlyphOffset = 0xE000;
|
||||||
var kSizeOfGlyphArea = 0x1900;
|
var kSizeOfGlyphArea = 0x1900;
|
||||||
|
|
||||||
//start of CJK block
|
|
||||||
var kUnicodeCJKStart = 0x2E80;
|
|
||||||
|
|
||||||
// PDF Glyph Space Units are one Thousandth of a TextSpace Unit
|
// PDF Glyph Space Units are one Thousandth of a TextSpace Unit
|
||||||
// except for Type 3 fonts
|
// except for Type 3 fonts
|
||||||
var kPDFGlyphSpaceUnits = 1000;
|
var kPDFGlyphSpaceUnits = 1000;
|
||||||
@ -1220,21 +1217,23 @@ var Font = (function Font() {
|
|||||||
// offsetting glyphs to avoid problematic unicode ranges should only be
|
// offsetting glyphs to avoid problematic unicode ranges should only be
|
||||||
// done for fonts with a medium-sized glyph count otherwise we could
|
// done for fonts with a medium-sized glyph count otherwise we could
|
||||||
// overflow the glyph range or overwrite existing glyph positions
|
// overflow the glyph range or overwrite existing glyph positions
|
||||||
var cmapGlyphOffset = numGlyphs < kSizeOfGlyphArea ? kCmapGlyphOffset : 0;
|
var canRemapAllGlyphs = numGlyphs < kSizeOfGlyphArea;
|
||||||
|
|
||||||
for (i in encoding) {
|
for (i in encoding) {
|
||||||
if (encoding.hasOwnProperty(i)) {
|
if (encoding.hasOwnProperty(i)) {
|
||||||
var unicode = encoding[i].unicode;
|
var unicode = encoding[i].unicode;
|
||||||
if (unicode <= 0x1f || (unicode >= 127 && unicode <= kSizeOfGlyphArea))
|
if (canRemapAllGlyphs || unicode <= 0x1f ||
|
||||||
encoding[i].unicode = unicode += cmapGlyphOffset;
|
(unicode >= 127 && unicode <= 255))
|
||||||
|
encoding[i].unicode += kCmapGlyphOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var glyphs = [];
|
var glyphs = [];
|
||||||
for (i = 1; i < numGlyphs; i++) {
|
for (i = 1; i < numGlyphs; i++) {
|
||||||
glyphs.push({
|
glyphs.push({
|
||||||
unicode: i <= 0x1f || (i >= 127 && i < kSizeOfGlyphArea) ?
|
unicode: canRemapAllGlyphs ||
|
||||||
i + cmapGlyphOffset : i
|
i <= 0x1f || (i >= 127 && i < kSizeOfGlyphArea) ?
|
||||||
|
i + kCmapGlyphOffset : i
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
cmap.data = createCMapTable(glyphs);
|
cmap.data = createCMapTable(glyphs);
|
||||||
|
Loading…
Reference in New Issue
Block a user