|
|
@ -4132,7 +4132,7 @@ var Font = (function FontClosure() { |
|
|
|
properties.seacMap = seacMap; |
|
|
|
properties.seacMap = seacMap; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!properties.hasEncoding && (properties.subtype == 'Type1C' || |
|
|
|
if (properties.overridableEncoding && (properties.subtype == 'Type1C' || |
|
|
|
properties.subtype == 'CIDFontType0C')) { |
|
|
|
properties.subtype == 'CIDFontType0C')) { |
|
|
|
var encoding = []; |
|
|
|
var encoding = []; |
|
|
|
for (var i = 0; i < charstrings.length; ++i) { |
|
|
|
for (var i = 0; i < charstrings.length; ++i) { |
|
|
@ -5538,8 +5538,20 @@ var CFFFont = (function CFFFontClosure() { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
for (var charcode in encoding) |
|
|
|
for (var charcode in encoding) { |
|
|
|
inverseEncoding[encoding[charcode]] = charcode | 0; |
|
|
|
var gid = encoding[charcode]; |
|
|
|
|
|
|
|
if (gid in inverseEncoding) { |
|
|
|
|
|
|
|
// Glyphs can be multiply-encoded if there was an encoding
|
|
|
|
|
|
|
|
// supplement. Convert to an array and append the charcode.
|
|
|
|
|
|
|
|
var previousCharcode = inverseEncoding[gid]; |
|
|
|
|
|
|
|
if (!isArray(previousCharcode)) { |
|
|
|
|
|
|
|
inverseEncoding[gid] = [previousCharcode]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
inverseEncoding[gid].push(charcode | 0); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
inverseEncoding[gid] = charcode | 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if (charsets[0] === '.notdef') { |
|
|
|
if (charsets[0] === '.notdef') { |
|
|
|
gidStart = 1; |
|
|
|
gidStart = 1; |
|
|
|
} |
|
|
|
} |
|
|
@ -5548,22 +5560,30 @@ var CFFFont = (function CFFFontClosure() { |
|
|
|
for (var i = gidStart, ii = charsets.length; i < ii; i++) { |
|
|
|
for (var i = gidStart, ii = charsets.length; i < ii; i++) { |
|
|
|
var glyph = charsets[i]; |
|
|
|
var glyph = charsets[i]; |
|
|
|
|
|
|
|
|
|
|
|
var code = inverseEncoding[i]; |
|
|
|
var codes = inverseEncoding[i]; |
|
|
|
if (!code || isSpecialUnicode(code)) { |
|
|
|
if (!isArray(codes)) { |
|
|
|
unassignedUnicodeItems.push(i); |
|
|
|
codes = [codes]; |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (var j = 0; j < codes.length; j++) { |
|
|
|
|
|
|
|
var code = codes[j]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!code || isSpecialUnicode(code)) { |
|
|
|
|
|
|
|
unassignedUnicodeItems.push(i, code); |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
charstrings.push({ |
|
|
|
|
|
|
|
unicode: code, |
|
|
|
|
|
|
|
code: code, |
|
|
|
|
|
|
|
gid: i, |
|
|
|
|
|
|
|
glyph: glyph |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
unicodeUsed[code] = true; |
|
|
|
} |
|
|
|
} |
|
|
|
charstrings.push({ |
|
|
|
|
|
|
|
unicode: code, |
|
|
|
|
|
|
|
code: code, |
|
|
|
|
|
|
|
gid: i, |
|
|
|
|
|
|
|
glyph: glyph |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
unicodeUsed[code] = true; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var nextUnusedUnicode = CMAP_GLYPH_OFFSET; |
|
|
|
var nextUnusedUnicode = CMAP_GLYPH_OFFSET; |
|
|
|
for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; ++j) { |
|
|
|
for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j += 2) { |
|
|
|
var i = unassignedUnicodeItems[j]; |
|
|
|
var i = unassignedUnicodeItems[j]; |
|
|
|
// giving unicode value anyway
|
|
|
|
// giving unicode value anyway
|
|
|
|
while (nextUnusedUnicode in unicodeUsed) |
|
|
|
while (nextUnusedUnicode in unicodeUsed) |
|
|
@ -5571,7 +5591,7 @@ var CFFFont = (function CFFFontClosure() { |
|
|
|
var unicode = nextUnusedUnicode++; |
|
|
|
var unicode = nextUnusedUnicode++; |
|
|
|
charstrings.push({ |
|
|
|
charstrings.push({ |
|
|
|
unicode: unicode, |
|
|
|
unicode: unicode, |
|
|
|
code: inverseEncoding[i] || 0, |
|
|
|
code: unassignedUnicodeItems[j + 1] || 0, |
|
|
|
gid: i, |
|
|
|
gid: i, |
|
|
|
glyph: charsets[i] |
|
|
|
glyph: charsets[i] |
|
|
|
}); |
|
|
|
}); |
|
|
@ -6140,7 +6160,7 @@ var CFFParser = (function CFFParserClosure() { |
|
|
|
for (var i = 0; i < supplementsCount; i++) { |
|
|
|
for (var i = 0; i < supplementsCount; i++) { |
|
|
|
var code = bytes[pos++]; |
|
|
|
var code = bytes[pos++]; |
|
|
|
var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); |
|
|
|
var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); |
|
|
|
encoding[code] = properties.differences.indexOf(strings.get(sid)); |
|
|
|
encoding[code] = charset.indexOf(strings.get(sid)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|