Skip to content

Commit 318e7f6

Browse files
committed
Merge pull request mozilla#2500 from brendandahl/private-entries
Add support for more Type1 private dictionary entries.
2 parents 9635612 + 2cbb353 commit 318e7f6

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

src/fonts.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4758,6 +4758,23 @@ var Type1Parser = function type1Parser() {
47584758
return parseFloat(str.substr(start, count) || 0);
47594759
}
47604760

4761+
function readBoolean(str, index) {
4762+
while (str[index] == ' ')
4763+
index++;
4764+
4765+
var start = index;
4766+
4767+
var count = 0;
4768+
var length = str.length;
4769+
while (index < length && str[index++] != ' ') {
4770+
count++;
4771+
}
4772+
4773+
// Use 1 and 0 since that's what type2 charstrings use.
4774+
return str.substr(start, count) === 'true' ? 1 : 0;
4775+
}
4776+
4777+
47614778
function isSeparator(c) {
47624779
return c == ' ' || c == '\n' || c == '\x0d';
47634780
}
@@ -4874,7 +4891,7 @@ var Type1Parser = function type1Parser() {
48744891
case '/StdHW':
48754892
case '/StdVW':
48764893
program.properties.privateData[token.substring(1)] =
4877-
readNumberArray(eexecStr, i + 2)[0];
4894+
readNumberArray(eexecStr, i + 1)[0];
48784895
break;
48794896
case '/BlueShift':
48804897
case '/lenIV':
@@ -4885,6 +4902,10 @@ var Type1Parser = function type1Parser() {
48854902
program.properties.privateData[token.substring(1)] =
48864903
readNumber(eexecStr, i + 1);
48874904
break;
4905+
case '/ForceBold':
4906+
program.properties.privateData[token.substring(1)] =
4907+
readBoolean(eexecStr, i + 1);
4908+
break;
48884909
}
48894910
} else if (c == '/') {
48904911
token = glyph = '';
@@ -5242,7 +5263,6 @@ Type1Font.prototype = {
52425263
var privateDict = new CFFPrivateDict();
52435264
privateDict.setByName('Subrs', null); // placeholder
52445265
var fields = [
5245-
// TODO: missing StdHW, StdVW, ForceBold
52465266
'BlueValues',
52475267
'OtherBlues',
52485268
'FamilyBlues',
@@ -5253,7 +5273,10 @@ Type1Font.prototype = {
52535273
'BlueFuzz',
52545274
'BlueScale',
52555275
'LanguageGroup',
5256-
'ExpansionFactor'
5276+
'ExpansionFactor',
5277+
'ForceBold',
5278+
'StdHW',
5279+
'StdVW'
52575280
];
52585281
for (var i = 0, ii = fields.length; i < ii; i++) {
52595282
var field = fields[i];

0 commit comments

Comments
 (0)