|
|
@ -411,7 +411,7 @@ var Font = (function Font() { |
|
|
|
this.encoding = properties.encoding; |
|
|
|
this.encoding = properties.encoding; |
|
|
|
this.sizes = []; |
|
|
|
this.sizes = []; |
|
|
|
|
|
|
|
|
|
|
|
var names = name.split("+"); |
|
|
|
var names = name.split('+'); |
|
|
|
names = names.length > 1 ? names[1] : names[0]; |
|
|
|
names = names.length > 1 ? names[1] : names[0]; |
|
|
|
names = names.split(/[-,_]/g)[0]; |
|
|
|
names = names.split(/[-,_]/g)[0]; |
|
|
|
this.serif = serifFonts[names] || (name.search(/serif/gi) != -1); |
|
|
|
this.serif = serifFonts[names] || (name.search(/serif/gi) != -1); |
|
|
@ -448,8 +448,8 @@ var Font = (function Font() { |
|
|
|
this.mimetype = 'font/opentype'; |
|
|
|
this.mimetype = 'font/opentype'; |
|
|
|
|
|
|
|
|
|
|
|
var subtype = properties.subtype; |
|
|
|
var subtype = properties.subtype; |
|
|
|
var cff = (subtype === 'Type1C') ? new Type2CFF(file, properties) |
|
|
|
var cff = (subtype === 'Type1C') ? |
|
|
|
: new CFF(name, file, properties); |
|
|
|
new Type2CFF(file, properties) : new CFF(name, file, properties); |
|
|
|
|
|
|
|
|
|
|
|
// Wrap the CFF data inside an OTF font file
|
|
|
|
// Wrap the CFF data inside an OTF font file
|
|
|
|
data = this.convert(name, cff, properties); |
|
|
|
data = this.convert(name, cff, properties); |
|
|
@ -875,7 +875,7 @@ var Font = (function Font() { |
|
|
|
// Check that table are sorted by platformID then encodingID,
|
|
|
|
// Check that table are sorted by platformID then encodingID,
|
|
|
|
records.sort(function(a, b) { |
|
|
|
records.sort(function(a, b) { |
|
|
|
return ((a.platformID << 16) + a.encodingID) - |
|
|
|
return ((a.platformID << 16) + a.encodingID) - |
|
|
|
((b.platformID << 16) + b.encodingID) |
|
|
|
((b.platformID << 16) + b.encodingID); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
var tables = [records[0]]; |
|
|
|
var tables = [records[0]]; |
|
|
@ -907,7 +907,7 @@ var Font = (function Font() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < data.length; i++) |
|
|
|
for (var i = 0; i < data.length; i++) |
|
|
|
cmap.data[i] = data.charCodeAt(i); |
|
|
|
cmap.data[i] = data.charCodeAt(i); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var encoding = properties.encoding; |
|
|
|
var encoding = properties.encoding; |
|
|
@ -940,7 +940,7 @@ var Font = (function Font() { |
|
|
|
glyphs.push({ unicode: unicode }); |
|
|
|
glyphs.push({ unicode: unicode }); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return cmap.data = createCMapTable(glyphs, deltas); |
|
|
|
return cmap.data = createCMapTable(glyphs, deltas); |
|
|
|
} else if (format == 6) { |
|
|
|
} else if (format == 6) { |
|
|
|
// Format 6 is a 2-bytes dense mapping, which means the font data
|
|
|
|
// Format 6 is a 2-bytes dense mapping, which means the font data
|
|
|
@ -1668,7 +1668,7 @@ var Type1Parser = function() { |
|
|
|
}; |
|
|
|
}; |
|
|
|
var c = eexecStr[i]; |
|
|
|
var c = eexecStr[i]; |
|
|
|
|
|
|
|
|
|
|
|
if ((glyphsSection || subrsSection) && |
|
|
|
if ((glyphsSection || subrsSection) && |
|
|
|
(token == 'RD' || token == '-|')) { |
|
|
|
(token == 'RD' || token == '-|')) { |
|
|
|
i++; |
|
|
|
i++; |
|
|
|
var data = eexec.slice(i, i + length); |
|
|
|
var data = eexec.slice(i, i + length); |
|
|
@ -1704,7 +1704,7 @@ var Type1Parser = function() { |
|
|
|
getToken(); // read in 'array'
|
|
|
|
getToken(); // read in 'array'
|
|
|
|
for (var j = 0; j < num; ++j) { |
|
|
|
for (var j = 0; j < num; ++j) { |
|
|
|
var t = getToken(); // read in 'dup'
|
|
|
|
var t = getToken(); // read in 'dup'
|
|
|
|
if (t == 'ND' || t == '|-' || t == 'noaccess') |
|
|
|
if (t == 'ND' || t == '|-' || t == 'noaccess') |
|
|
|
break; |
|
|
|
break; |
|
|
|
var index = parseInt(getToken(), 10); |
|
|
|
var index = parseInt(getToken(), 10); |
|
|
|
if (index > j) |
|
|
|
if (index > j) |
|
|
@ -1823,7 +1823,7 @@ var Type1Parser = function() { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* The CFF class takes a Type1 file and wrap it into a |
|
|
|
* The CFF class takes a Type1 file and wrap it into a |
|
|
|
* 'Compact Font Format' which itself embed Type2 charstrings. |
|
|
|
* 'Compact Font Format' which itself embed Type2 charstrings. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
var CFFStrings = [ |
|
|
|
var CFFStrings = [ |
|
|
@ -2265,7 +2265,7 @@ var Type2CFF = (function() { |
|
|
|
var charStrings = this.parseIndex(topDict.CharStrings); |
|
|
|
var charStrings = this.parseIndex(topDict.CharStrings); |
|
|
|
var charset = this.parseCharsets(topDict.charset, |
|
|
|
var charset = this.parseCharsets(topDict.charset, |
|
|
|
charStrings.length, strings); |
|
|
|
charStrings.length, strings); |
|
|
|
var hasSupplement = this.parseEncoding(topDict.Encoding, properties, |
|
|
|
var hasSupplement = this.parseEncoding(topDict.Encoding, properties, |
|
|
|
strings, charset); |
|
|
|
strings, charset); |
|
|
|
|
|
|
|
|
|
|
|
// The font sanitizer does not support CFF encoding with a
|
|
|
|
// The font sanitizer does not support CFF encoding with a
|
|
|
@ -2340,7 +2340,8 @@ var Type2CFF = (function() { |
|
|
|
return charstrings; |
|
|
|
return charstrings; |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
parseEncoding: function cff_parseencoding(pos, properties, strings, charset) { |
|
|
|
parseEncoding: function cff_parseencoding(pos, properties, strings, |
|
|
|
|
|
|
|
charset) { |
|
|
|
var encoding = {}; |
|
|
|
var encoding = {}; |
|
|
|
var bytes = this.bytes; |
|
|
|
var bytes = this.bytes; |
|
|
|
|
|
|
|
|
|
|
@ -2355,8 +2356,8 @@ var Type2CFF = (function() { |
|
|
|
|
|
|
|
|
|
|
|
if (pos == 0 || pos == 1) { |
|
|
|
if (pos == 0 || pos == 1) { |
|
|
|
var gid = 1; |
|
|
|
var gid = 1; |
|
|
|
var baseEncoding = pos ? Encodings.ExpertEncoding |
|
|
|
var baseEncoding = |
|
|
|
: Encodings.StandardEncoding; |
|
|
|
pos ? Encodings.ExpertEncoding : Encodings.StandardEncoding; |
|
|
|
for (var i = 0; i < charset.length; i++) { |
|
|
|
for (var i = 0; i < charset.length; i++) { |
|
|
|
var index = baseEncoding.indexOf(charset[i]); |
|
|
|
var index = baseEncoding.indexOf(charset[i]); |
|
|
|
if (index != -1) |
|
|
|
if (index != -1) |
|
|
@ -2367,7 +2368,7 @@ var Type2CFF = (function() { |
|
|
|
switch (format & 0x7f) { |
|
|
|
switch (format & 0x7f) { |
|
|
|
case 0: |
|
|
|
case 0: |
|
|
|
var glyphsCount = bytes[pos++]; |
|
|
|
var glyphsCount = bytes[pos++]; |
|
|
|
for (var i = 1; i <= glyphsCount; i++) |
|
|
|
for (var i = 1; i <= glyphsCount; i++) |
|
|
|
encoding[bytes[pos++]] = i; |
|
|
|
encoding[bytes[pos++]] = i; |
|
|
|
|
|
|
|
|
|
|
|
if (format & 0x80) { |
|
|
|
if (format & 0x80) { |
|
|
@ -2393,7 +2394,7 @@ var Type2CFF = (function() { |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
default: |
|
|
|
error('Unknow encoding format: ' + format + " in CFF"); |
|
|
|
error('Unknow encoding format: ' + format + ' in CFF'); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|