Fix coding style in src/core/fonts.js

This commit is contained in:
Jonas Jenwald 2014-03-17 17:34:30 +01:00
parent 026d58e9a4
commit 66e243f506

View File

@ -688,19 +688,22 @@ var MacStandardGlyphOrdering = [
function getUnicodeRangeFor(value) {
for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
var range = UnicodeRanges[i];
if (value >= range.begin && value < range.end)
if (value >= range.begin && value < range.end) {
return i;
}
}
return -1;
}
function isRTLRangeFor(value) {
var range = UnicodeRanges[13];
if (value >= range.begin && value < range.end)
if (value >= range.begin && value < range.end) {
return true;
}
range = UnicodeRanges[11];
if (value >= range.begin && value < range.end)
if (value >= range.begin && value < range.end) {
return true;
}
return false;
}
@ -2089,12 +2092,13 @@ var NormalizedUnicodes = {
function reverseIfRtl(chars) {
var charsLength = chars.length;
//reverse an arabic ligature
if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0)))
if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
return chars;
}
var s = '';
for (var ii = charsLength - 1; ii >= 0; ii--)
for (var ii = charsLength - 1; ii >= 0; ii--) {
s += chars[ii];
}
return s;
}
@ -2103,12 +2107,13 @@ function fontCharsToUnicode(charCodes, font) {
var result = '';
for (var i = 0, ii = glyphs.length; i < ii; i++) {
var glyph = glyphs[i];
if (!glyph)
if (!glyph) {
continue;
}
var glyphUnicode = glyph.unicode;
if (glyphUnicode in NormalizedUnicodes)
if (glyphUnicode in NormalizedUnicodes) {
glyphUnicode = NormalizedUnicodes[glyphUnicode];
}
result += reverseIfRtl(glyphUnicode);
}
return result;
@ -2179,8 +2184,8 @@ var Font = (function FontClosure() {
var type = properties.type;
this.type = type;
this.fallbackName = this.isMonospace ? 'monospace' :
this.isSerifFont ? 'serif' : 'sans-serif';
this.fallbackName = (this.isMonospace ? 'monospace' :
(this.isSerifFont ? 'serif' : 'sans-serif'));
this.differences = properties.differences;
this.widths = properties.widths;
@ -2200,8 +2205,8 @@ var Font = (function FontClosure() {
if (properties.type == 'Type3') {
for (var charCode = 0; charCode < 256; charCode++) {
this.toFontChar[charCode] = this.differences[charCode] ||
properties.defaultEncoding[charCode];
this.toFontChar[charCode] = (this.differences[charCode] ||
properties.defaultEncoding[charCode]);
}
return;
}
@ -2222,8 +2227,8 @@ var Font = (function FontClosure() {
fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
this.bold = (fontName.search(/bold/gi) != -1);
this.italic = (fontName.search(/oblique/gi) != -1) ||
(fontName.search(/italic/gi) != -1);
this.italic = ((fontName.search(/oblique/gi) != -1) ||
(fontName.search(/italic/gi) != -1));
// Use 'name' instead of 'fontName' here because the original
// name ArialBlack for example will be replaced by Helvetica.
@ -2269,10 +2274,12 @@ var Font = (function FontClosure() {
// Some fonts might use wrong font types for Type1C or CIDFontType0C
var subtype = properties.subtype;
if (subtype == 'Type1C' && (type != 'Type1' && type != 'MMType1'))
if (subtype == 'Type1C' && (type != 'Type1' && type != 'MMType1')) {
type = 'Type1';
if (subtype == 'CIDFontType0C' && type != 'CIDFontType0')
}
if (subtype == 'CIDFontType0C' && type != 'CIDFontType0') {
type = 'CIDFontType0';
}
// XXX: Temporarily change the type for open type so we trigger a warning.
// This should be removed when we add support for open type.
if (subtype === 'OpenType') {
@ -2323,9 +2330,9 @@ var Font = (function FontClosure() {
function stringToArray(str) {
var array = [];
for (var i = 0, ii = str.length; i < ii; ++i)
for (var i = 0, ii = str.length; i < ii; ++i) {
array[i] = str.charCodeAt(i);
}
return array;
}
@ -2354,34 +2361,36 @@ var Font = (function FontClosure() {
}
value = 2;
for (var i = 1; i < maxPower; i++)
for (var i = 1; i < maxPower; i++) {
value *= 2;
}
return value;
}
function string16(value) {
return String.fromCharCode((value >> 8) & 0xff) +
String.fromCharCode(value & 0xff);
return (String.fromCharCode((value >> 8) & 0xff) +
String.fromCharCode(value & 0xff));
}
function safeString16(value) {
// clamp value to the 16-bit int range
value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;
return String.fromCharCode((value >> 8) & 0xff) +
String.fromCharCode(value & 0xff);
value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value));
return (String.fromCharCode((value >> 8) & 0xff) +
String.fromCharCode(value & 0xff));
}
function string32(value) {
return String.fromCharCode((value >> 24) & 0xff) +
return (String.fromCharCode((value >> 24) & 0xff) +
String.fromCharCode((value >> 16) & 0xff) +
String.fromCharCode((value >> 8) & 0xff) +
String.fromCharCode(value & 0xff);
String.fromCharCode(value & 0xff));
}
function createOpenTypeHeader(sfnt, file, numTables) {
// Windows hates the Mac TrueType sfnt version number
if (sfnt == 'true')
if (sfnt == 'true') {
sfnt = string32(0x00010000);
}
// sfnt version (4 bytes)
var header = sfnt;
@ -2412,17 +2421,19 @@ var Font = (function FontClosure() {
var length = data.length;
// Per spec tables must be 4-bytes align so add padding as needed
while (data.length & 3)
while (data.length & 3) {
data.push(0x00);
while (file.virtualOffset & 3)
}
while (file.virtualOffset & 3) {
file.virtualOffset++;
}
// checksum
var checksum = 0, n = data.length;
for (var i = 0; i < n; i += 4)
for (var i = 0; i < n; i += 4) {
checksum = (checksum + int32(data[i], data[i + 1], data[i + 2],
data[i + 3])) | 0;
}
var tableEntry = (tag + string32(checksum) +
string32(offset) + string32(length));
@ -2521,7 +2532,9 @@ var Font = (function FontClosure() {
codeIndices.push(codes[n].glyphId);
++end;
++n;
if (end === 0xFFFF) { break; }
if (end === 0xFFFF) {
break;
}
}
ranges.push([start, end, codeIndices]);
}
@ -2694,10 +2707,12 @@ var Font = (function FontClosure() {
if (charstrings) {
for (var code in charstrings) {
code |= 0;
if (firstCharIndex > code || !firstCharIndex)
if (firstCharIndex > code || !firstCharIndex) {
firstCharIndex = code;
if (lastCharIndex < code)
}
if (lastCharIndex < code) {
lastCharIndex = code;
}
var position = getUnicodeRangeFor(code);
if (position < 32) {
@ -2719,18 +2734,18 @@ var Font = (function FontClosure() {
}
var bbox = properties.bbox || [0, 0, 0, 0];
var unitsPerEm = override.unitsPerEm ||
1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];
var unitsPerEm = (override.unitsPerEm ||
1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]);
// if the font units differ to the PDF glyph space units
// then scale up the values
var scale = properties.ascentScaled ? 1.0 :
unitsPerEm / PDF_GLYPH_SPACE_UNITS;
var scale = (properties.ascentScaled ? 1.0 :
unitsPerEm / PDF_GLYPH_SPACE_UNITS);
var typoAscent = override.ascent || Math.round(scale *
(properties.ascent || bbox[3]));
var typoDescent = override.descent || Math.round(scale *
(properties.descent || bbox[1]));
var typoAscent = (override.ascent ||
Math.round(scale * (properties.ascent || bbox[3])));
var typoDescent = (override.descent ||
Math.round(scale * (properties.descent || bbox[1])));
if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
typoDescent = -typoDescent; // fixing incorrect descent
}
@ -2781,7 +2796,7 @@ var Font = (function FontClosure() {
function createPostTable(properties) {
var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));
return '\x00\x03\x00\x00' + // Version number
return ('\x00\x03\x00\x00' + // Version number
string32(angle) + // italicAngle
'\x00\x00' + // underlinePosition
'\x00\x00' + // underlineThickness
@ -2789,7 +2804,7 @@ var Font = (function FontClosure() {
'\x00\x00\x00\x00' + // minMemType42
'\x00\x00\x00\x00' + // maxMemType42
'\x00\x00\x00\x00' + // minMemType1
'\x00\x00\x00\x00'; // maxMemType1
'\x00\x00\x00\x00'); // maxMemType1
}
function createNameTable(name, proto) {
@ -2869,9 +2884,10 @@ var Font = (function FontClosure() {
exportData: function Font_exportData() {
var data = {};
for (var i in this) {
if (this.hasOwnProperty(i))
if (this.hasOwnProperty(i)) {
data[i] = this[i];
}
}
return data;
},
@ -3042,8 +3058,8 @@ var Font = (function FontClosure() {
continue;
}
var glyphId = offsetIndex < 0 ? j :
offsets[offsetIndex + j - start];
var glyphId = (offsetIndex < 0 ?
j : offsets[offsetIndex + j - start]);
glyphId = (glyphId + delta) & 0xFFFF;
if (glyphId === 0) {
continue;
@ -3125,10 +3141,12 @@ var Font = (function FontClosure() {
if (numMissing > 0) {
font.pos = (font.start ? font.start : 0) + metrics.offset;
var entries = '';
for (var i = 0, ii = metrics.length; i < ii; i++)
for (var i = 0, ii = metrics.length; i < ii; i++) {
entries += String.fromCharCode(font.getByte());
for (var i = 0; i < numMissing; i++)
}
for (var i = 0; i < numMissing; i++) {
entries += '\x00\x00';
}
metrics.data = stringToArray(entries);
}
}
@ -3318,8 +3336,9 @@ var Font = (function FontClosure() {
// to have single glyph with one point
var simpleGlyph = new Uint8Array(
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize)
for (var i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
itemEncode(locaData, j, simpleGlyph.length);
}
glyf.data = simpleGlyph;
return;
}
@ -3590,7 +3609,9 @@ var Font = (function FontClosure() {
if (!inFDEF && !inELSE) {
var offset = stack[stack.length - 1];
// only jumping forward to prevent infinite loop
if (offset > 0) { i += offset - 1; }
if (offset > 0) {
i += offset - 1;
}
}
}
// Adjusting stack not extactly, but just enough to get function id
@ -4004,8 +4025,9 @@ var Font = (function FontClosure() {
var data = [];
var tableData = table.data;
for (var j = 0, jj = tableData.length; j < jj; j++)
for (var j = 0, jj = tableData.length; j < jj; j++) {
data.push(tableData[j]);
}
createTableEntry(ttf, table.tag, data);
}
@ -4016,9 +4038,10 @@ var Font = (function FontClosure() {
ttf.file += arrayToString(tableData);
// 4-byte aligned data
while (ttf.file.length & 3)
while (ttf.file.length & 3) {
ttf.file += String.fromCharCode(0);
}
}
return stringToArray(ttf.file);
},
@ -4167,9 +4190,9 @@ var Font = (function FontClosure() {
'post': stringToArray(createPostTable(properties))
};
for (var field in fields)
for (var field in fields) {
createTableEntry(otf, field, fields[field]);
}
for (var field in fields) {
var table = fields[field];
otf.file += arrayToString(table);
@ -4302,16 +4325,19 @@ var Font = (function FontClosure() {
}
}
// ... via toUnicode map
if (!charcode && 'toUnicode' in this)
if (!charcode && 'toUnicode' in this) {
charcode = this.toUnicode.indexOf(glyphUnicode);
}
// setting it to unicode if negative or undefined
if (charcode <= 0)
if (charcode <= 0) {
charcode = glyphUnicode;
}
// trying to get width via charcode
width = this.widths[charcode];
if (width)
if (width) {
break; // the non-zero width found
}
}
width = width || this.defaultWidth;
// Do not shadow the property here. See discussion:
// https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280
@ -4377,13 +4403,15 @@ var Font = (function FontClosure() {
// if we translated this string before, just grab it from the cache
if (charsCache) {
glyphs = charsCache[chars];
if (glyphs)
if (glyphs) {
return glyphs;
}
}
// lazily create the translation cache
if (!charsCache)
if (!charsCache) {
charsCache = this.charsCache = Object.create(null);
}
glyphs = [];
var charsCacheKey = chars;
@ -4410,10 +4438,11 @@ var Font = (function FontClosure() {
var charcode = chars.charCodeAt(i);
var glyph = this.charToGlyph(charcode);
glyphs.push(glyph);
if (charcode == 0x20)
if (charcode == 0x20) {
glyphs.push(null);
}
}
}
// Enter the translated string into the cache
return (charsCache[charsCacheKey] = glyphs);
@ -5234,8 +5263,9 @@ var Type1Font = function Type1Font(name, file, properties) {
var eexecBlock = new Stream(file.getBytes(eexecBlockLength));
var eexecBlockParser = new Type1Parser(eexecBlock, true);
var data = eexecBlockParser.extractFontProgram();
for (var info in data.properties)
for (var info in data.properties) {
properties[info] = data.properties[info];
}
var charstrings = data.charstrings;
var type2Charstrings = this.getType2Charstrings(charstrings);
@ -5306,17 +5336,19 @@ Type1Font.prototype = {
getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
var bias = 0;
var count = type1Subrs.length;
if (count < 1133)
if (count < 1133) {
bias = 107;
else if (count < 33769)
} else if (count < 33769) {
bias = 1131;
else
} else {
bias = 32768;
}
// Add a bunch of empty subrs to deal with the Type2 bias
var type2Subrs = [];
for (var i = 0; i < bias; i++)
for (var i = 0; i < bias; i++) {
type2Subrs.push([0x0B]);
}
for (var i = 0; i < count; i++) {
type2Subrs.push(type1Subrs[i]);
@ -5365,9 +5397,9 @@ Type1Font.prototype = {
// thought mapping names that aren't in the standard strings to .notdef
// was fine, however in issue818 when mapping them all to .notdef the
// adieresis glyph no longer worked.
if (index == -1)
if (index == -1) {
index = 0;
}
charsetArray.push((index >> 8) & 0xff, index & 0xff);
}
cff.charset = new CFFCharset(false, 0, [], charsetArray);
@ -5399,8 +5431,9 @@ Type1Font.prototype = {
];
for (var i = 0, ii = fields.length; i < ii; i++) {
var field = fields[i];
if (!properties.privateData.hasOwnProperty(field))
if (!properties.privateData.hasOwnProperty(field)) {
continue;
}
var value = properties.privateData[field];
if (isArray(value)) {
// All of the private dictionary array data in CFF must be stored as
@ -5718,12 +5751,14 @@ var CFFParser = (function CFFParserClosure() {
var b1 = b >> 4;
var b2 = b & 15;
if (b1 == eof)
if (b1 == eof) {
break;
}
str += lookup[b1];
if (b2 == eof)
if (b2 == eof) {
break;
}
str += lookup[b2];
}
return parseFloat(str);
@ -5737,8 +5772,9 @@ var CFFParser = (function CFFParserClosure() {
while (pos < end) {
var b = dict[pos];
if (b <= 21) {
if (b === 12)
if (b === 12) {
b = (b << 8) | dict[++pos];
}
entries.push([b, operands]);
operands = [];
++pos;
@ -5872,9 +5908,9 @@ var CFFParser = (function CFFParserClosure() {
stack[stackSize] = value - 139;
stackSize++;
} else if (value >= 247 && value <= 254) { // number (+1 bytes)
stack[stackSize] = value < 251 ?
stack[stackSize] = (value < 251 ?
((value - 247) << 8) + data[j] + 108 :
-((value - 251) << 8) - data[j] - 108;
-((value - 251) << 8) - data[j] - 108);
j++;
stackSize++;
} else if (value == 255) { // number (32 bit)
@ -5958,8 +5994,9 @@ var CFFParser = (function CFFParserClosure() {
parentDict.privateDict = privateDict;
// Parse the Subrs index also since it's relative to the private dict.
if (!privateDict.getByName('Subrs'))
if (!privateDict.getByName('Subrs')) {
return;
}
var subrsOffset = privateDict.getByName('Subrs');
var relativeOffset = offset + subrsOffset;
// Validate the offset.
@ -6001,17 +6038,19 @@ var CFFParser = (function CFFParserClosure() {
while (charset.length <= length) {
var id = (bytes[pos++] << 8) | bytes[pos++];
var count = bytes[pos++];
for (var i = 0; i <= count; i++)
for (var i = 0; i <= count; i++) {
charset.push(cid ? id++ : strings.get(id++));
}
}
break;
case 2:
while (charset.length <= length) {
var id = (bytes[pos++] << 8) | bytes[pos++];
var count = (bytes[pos++] << 8) | bytes[pos++];
for (var i = 0; i <= count; i++)
for (var i = 0; i <= count; i++) {
charset.push(cid ? id++ : strings.get(id++));
}
}
break;
default:
error('Unknown charset format');
@ -6059,8 +6098,9 @@ var CFFParser = (function CFFParserClosure() {
switch (format & 0x7f) {
case 0:
var glyphsCount = bytes[pos++];
for (var i = 1; i <= glyphsCount; i++)
for (var i = 1; i <= glyphsCount; i++) {
encoding[bytes[pos++]] = i;
}
break;
case 1:
@ -6069,9 +6109,10 @@ var CFFParser = (function CFFParserClosure() {
for (var i = 0; i < rangesCount; i++) {
var start = bytes[pos++];
var left = bytes[pos++];
for (var j = start; j <= start + left; j++)
for (var j = start; j <= start + left; j++) {
encoding[j] = gid++;
}
}
break;
default:
@ -6112,9 +6153,10 @@ var CFFParser = (function CFFParserClosure() {
var first = (bytes[pos++] << 8) | bytes[pos++];
var fdIndex = bytes[pos++];
var next = (bytes[pos] << 8) | bytes[pos + 1];
for (var j = first; j < next; ++j)
for (var j = first; j < next; ++j) {
fdSelect.push(fdIndex);
}
}
// Advance past the sentinel(next).
pos += 2;
break;
@ -6167,10 +6209,12 @@ var CFFStrings = (function CFFStringsClosure() {
}
CFFStrings.prototype = {
get: function CFFStrings_get(index) {
if (index >= 0 && index <= 390)
if (index >= 0 && index <= 390) {
return CFFStandardStrings[index];
if (index - 391 <= this.strings.length)
}
if (index - 391 <= this.strings.length) {
return this.strings[index - 391];
}
return CFFStandardStrings[0];
},
add: function CFFStrings_add(value) {
@ -6221,15 +6265,18 @@ var CFFDict = (function CFFDictClosure() {
CFFDict.prototype = {
// value should always be an array
setByKey: function CFFDict_setByKey(key, value) {
if (!(key in this.keyToNameMap))
if (!(key in this.keyToNameMap)) {
return false;
}
// ignore empty values
if (value.length === 0)
if (value.length === 0) {
return true;
}
var type = this.types[key];
// remove the array wrapping these types of values
if (type === 'num' || type === 'sid' || type === 'offset')
if (type === 'num' || type === 'sid' || type === 'offset') {
value = value[0];
}
this.values[key] = value;
return true;
},
@ -6243,11 +6290,13 @@ var CFFDict = (function CFFDictClosure() {
return this.nameToKeyMap[name] in this.values;
},
getByName: function CFFDict_getByName(name) {
if (!(name in this.nameToKeyMap))
if (!(name in this.nameToKeyMap)) {
error('Invalid dictionary name "' + name + '"');
}
var key = this.nameToKeyMap[name];
if (!(key in this.values))
if (!(key in this.values)) {
return this.defaults[key];
}
return this.values[key];
},
removeByName: function CFFDict_removeByName(name) {
@ -6320,8 +6369,9 @@ var CFFTopDict = (function CFFTopDictClosure() {
];
var tables = null;
function CFFTopDict(strings) {
if (tables === null)
if (tables === null) {
tables = CFFDict.createTables(layout);
}
CFFDict.call(this, tables, strings);
this.privateDict = null;
}
@ -6352,8 +6402,9 @@ var CFFPrivateDict = (function CFFPrivateDictClosure() {
];
var tables = null;
function CFFPrivateDict(strings) {
if (tables === null)
if (tables === null) {
tables = CFFDict.createTables(layout);
}
CFFDict.call(this, tables, strings);
this.subrsIndex = null;
}
@ -6418,8 +6469,9 @@ var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
return key in this.offsets;
},
track: function CFFOffsetTracker_track(key, location) {
if (key in this.offsets)
if (key in this.offsets) {
error('Already tracking location of ' + key);
}
this.offsets[key] = location;
},
offset: function CFFOffsetTracker_offset(value) {
@ -6430,8 +6482,9 @@ var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,
values,
output) {
if (!(key in this.offsets))
if (!(key in this.offsets)) {
error('Not tracking location of ' + key);
}
var data = output.data;
var dataOffset = this.offsets[key];
var size = 5;
@ -6443,8 +6496,9 @@ var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
var offset4 = offset0 + 4;
// It's easy to screw up offsets so perform this sanity check.
if (data[offset0] !== 0x1d || data[offset1] !== 0 ||
data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0)
data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {
error('writing to an offset that is not empty');
}
var value = values[i];
data[offset0] = 0x1d;
data[offset1] = (value >> 24) & 0xFF;
@ -6461,9 +6515,9 @@ var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
var CFFCompiler = (function CFFCompilerClosure() {
function stringToArray(str) {
var array = [];
for (var i = 0, ii = str.length; i < ii; ++i)
for (var i = 0, ii = str.length; i < ii; ++i) {
array[i] = str.charCodeAt(i);
}
return array;
}
function CFFCompiler(cff) {
@ -6579,10 +6633,11 @@ var CFFCompiler = (function CFFCompilerClosure() {
return output.data;
},
encodeNumber: function CFFCompiler_encodeNumber(value) {
if (parseFloat(value) == parseInt(value, 10) && !isNaN(value)) // isInt
if (parseFloat(value) == parseInt(value, 10) && !isNaN(value)) { // isInt
return this.encodeInteger(value);
else
} else {
return this.encodeFloat(value);
}
},
encodeFloat: function CFFCompiler_encodeFloat(num) {
var value = num.toString();
@ -6645,8 +6700,9 @@ var CFFCompiler = (function CFFCompilerClosure() {
},
compileNameIndex: function CFFCompiler_compileNameIndex(names) {
var nameIndex = new CFFIndex();
for (var i = 0, ii = names.length; i < ii; ++i)
for (var i = 0, ii = names.length; i < ii; ++i) {
nameIndex.add(stringToArray(names[i]));
}
return this.compileIndex(nameIndex);
},
compileTopDicts: function CFFCompiler_compileTopDicts(dicts,
@ -6714,16 +6770,22 @@ var CFFCompiler = (function CFFCompilerClosure() {
var order = dict.order;
for (var i = 0; i < order.length; ++i) {
var key = order[i];
if (!(key in dict.values))
if (!(key in dict.values)) {
continue;
}
var values = dict.values[key];
var types = dict.types[key];
if (!isArray(types)) types = [types];
if (!isArray(values)) values = [values];
if (!isArray(types)) {
types = [types];
}
if (!isArray(values)) {
values = [values];
}
// Remove any empty dict values.
if (values.length === 0)
if (values.length === 0) {
continue;
}
for (var j = 0, jj = types.length; j < jj; ++j) {
var type = types[j];
@ -6740,15 +6802,17 @@ var CFFCompiler = (function CFFCompilerClosure() {
var name = dict.keyToNameMap[key];
// Some offsets have the offset and the length, so just record the
// position of the first one.
if (!offsetTracker.isTracking(name))
if (!offsetTracker.isTracking(name)) {
offsetTracker.track(name, out.length);
}
out = out.concat([0x1d, 0, 0, 0, 0]);
break;
case 'array':
case 'delta':
out = out.concat(this.encodeNumber(value));
for (var k = 1, kk = values.length; k < kk; ++k)
for (var k = 1, kk = values.length; k < kk; ++k) {
out = out.concat(this.encodeNumber(values[k]));
}
break;
default:
error('Unknown data type of ' + type);
@ -6761,8 +6825,9 @@ var CFFCompiler = (function CFFCompilerClosure() {
},
compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
var stringIndex = new CFFIndex();
for (var i = 0, ii = strings.length; i < ii; ++i)
for (var i = 0, ii = strings.length; i < ii; ++i) {
stringIndex.add(stringToArray(strings[i]));
}
return this.compileIndex(stringIndex);
},
compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
@ -6783,8 +6848,9 @@ var CFFCompiler = (function CFFCompilerClosure() {
},
compileTypedArray: function CFFCompiler_compileTypedArray(data) {
var out = [];
for (var i = 0, ii = data.length; i < ii; ++i)
for (var i = 0, ii = data.length; i < ii; ++i) {
out[i] = data[i];
}
return out;
},
compileIndex: function CFFCompiler_compileIndex(index, trackers) {
@ -6795,24 +6861,27 @@ var CFFCompiler = (function CFFCompilerClosure() {
// If there is no object, just create an index. This technically
// should just be [0, 0] but OTS has an issue with that.
if (count === 0)
if (count === 0) {
return [0, 0, 0];
}
var data = [(count >> 8) & 0xFF, count & 0xff];
var lastOffset = 1;
for (var i = 0; i < count; ++i)
for (var i = 0; i < count; ++i) {
lastOffset += objects[i].length;
}
var offsetSize;
if (lastOffset < 0x100)
if (lastOffset < 0x100) {
offsetSize = 1;
else if (lastOffset < 0x10000)
} else if (lastOffset < 0x10000) {
offsetSize = 2;
else if (lastOffset < 0x1000000)
} else if (lastOffset < 0x1000000) {
offsetSize = 3;
else
} else {
offsetSize = 4;
}
// Next byte contains the offset size use to reference object in the file
data.push(offsetSize);
@ -6836,18 +6905,21 @@ var CFFCompiler = (function CFFCompilerClosure() {
relativeOffset & 0xFF);
}
if (objects[i])
if (objects[i]) {
relativeOffset += objects[i].length;
}
}
var offset = data.length;
for (var i = 0; i < count; i++) {
// Notify the tracker where the object will be offset in the data.
if (trackers[i])
if (trackers[i]) {
trackers[i].offset(data.length);
for (var j = 0, jj = objects[i].length; j < jj; j++)
}
for (var j = 0, jj = objects[i].length; j < jj; j++) {
data.push(objects[i][j]);
}
}
return data;
}
};