mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
Merge branch 'master' of git://github.com/mozilla/pdf.js.git into encoding-2
Conflicts: src/evaluator.js src/fonts.js
This commit is contained in:
commit
60744a8a61
37 changed files with 786 additions and 489 deletions
90
src/fonts.js
90
src/fonts.js
|
@ -393,7 +393,7 @@ var FontLoader = {
|
|||
|
||||
bind: function fontLoaderBind(fonts, callback) {
|
||||
function checkFontsLoaded() {
|
||||
for (var i = 0; i < objs.length; i++) {
|
||||
for (var i = 0, ii = objs.length; i < ii; i++) {
|
||||
var fontObj = objs[i];
|
||||
if (fontObj.loading) {
|
||||
return false;
|
||||
|
@ -409,7 +409,7 @@ var FontLoader = {
|
|||
|
||||
var rules = [], names = [], objs = [];
|
||||
|
||||
for (var i = 0; i < fonts.length; i++) {
|
||||
for (var i = 0, ii = fonts.length; i < ii; i++) {
|
||||
var font = fonts[i];
|
||||
|
||||
// If there is already a fontObj on the font, then it was loaded/attached
|
||||
|
@ -490,7 +490,7 @@ var FontLoader = {
|
|||
'width: 10px; height: 10px;' +
|
||||
'position: absolute; top: 0px; left: 0px;');
|
||||
var html = '';
|
||||
for (var i = 0; i < names.length; ++i) {
|
||||
for (var i = 0, ii = names.length; i < ii; ++i) {
|
||||
html += '<span style="font-family:' + names[i] + '">Hi</span>';
|
||||
}
|
||||
div.innerHTML = html;
|
||||
|
@ -501,7 +501,7 @@ var FontLoader = {
|
|||
'message',
|
||||
function fontLoaderMessage(e) {
|
||||
var fontNames = JSON.parse(e.data);
|
||||
for (var i = 0; i < objs.length; ++i) {
|
||||
for (var i = 0, ii = objs.length; i < ii; ++i) {
|
||||
var font = objs[i];
|
||||
font.loading = false;
|
||||
}
|
||||
|
@ -517,13 +517,13 @@ var FontLoader = {
|
|||
// pdfjsFontLoadFailed?
|
||||
var src = '<!DOCTYPE HTML><html><head>';
|
||||
src += '<style type="text/css">';
|
||||
for (var i = 0; i < rules.length; ++i) {
|
||||
for (var i = 0, ii = rules.length; i < ii; ++i) {
|
||||
src += rules[i];
|
||||
}
|
||||
src += '</style>';
|
||||
src += '<script type="application/javascript">';
|
||||
var fontNamesArray = '';
|
||||
for (var i = 0; i < names.length; ++i) {
|
||||
for (var i = 0, ii = names.length; i < ii; ++i) {
|
||||
fontNamesArray += '"' + names[i] + '", ';
|
||||
}
|
||||
src += ' var fontNames=[' + fontNamesArray + '];\n';
|
||||
|
@ -531,7 +531,7 @@ var FontLoader = {
|
|||
src += ' parent.postMessage(JSON.stringify(fontNames), "*");\n';
|
||||
src += ' }';
|
||||
src += '</script></head><body>';
|
||||
for (var i = 0; i < names.length; ++i) {
|
||||
for (var i = 0, ii = names.length; i < ii; ++i) {
|
||||
src += '<p style="font-family:\'' + names[i] + '\'">Hi</p>';
|
||||
}
|
||||
src += '</body></html>';
|
||||
|
@ -711,7 +711,7 @@ var MacStandardGlyphOrdering = [
|
|||
'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
|
||||
|
||||
function getUnicodeRangeFor(value) {
|
||||
for (var i = 0; i < UnicodeRanges.length; i++) {
|
||||
for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
|
||||
var range = UnicodeRanges[i];
|
||||
if (value >= range.begin && value < range.end)
|
||||
return i;
|
||||
|
@ -845,7 +845,7 @@ var Font = (function Font() {
|
|||
|
||||
function stringToArray(str) {
|
||||
var array = [];
|
||||
for (var i = 0; i < str.length; ++i)
|
||||
for (var i = 0, ii = str.length; i < ii; ++i)
|
||||
array[i] = str.charCodeAt(i);
|
||||
|
||||
return array;
|
||||
|
@ -853,7 +853,7 @@ var Font = (function Font() {
|
|||
|
||||
function arrayToString(arr) {
|
||||
var str = '';
|
||||
for (var i = 0; i < arr.length; ++i)
|
||||
for (var i = 0, ii = arr.length; i < ii; ++i)
|
||||
str += String.fromCharCode(arr[i]);
|
||||
|
||||
return str;
|
||||
|
@ -1184,11 +1184,11 @@ var Font = (function Font() {
|
|||
// Mac want 1-byte per character strings while Windows want
|
||||
// 2-bytes per character, so duplicate the names table
|
||||
var stringsUnicode = [];
|
||||
for (var i = 0; i < strings.length; i++) {
|
||||
for (var i = 0, ii = strings.length; i < ii; i++) {
|
||||
var str = strings[i];
|
||||
|
||||
var strUnicode = '';
|
||||
for (var j = 0; j < str.length; j++)
|
||||
for (var j = 0, jj = str.length; j < jj; j++)
|
||||
strUnicode += string16(str.charCodeAt(j));
|
||||
stringsUnicode.push(strUnicode);
|
||||
}
|
||||
|
@ -1206,9 +1206,9 @@ var Font = (function Font() {
|
|||
|
||||
// Build the name records field
|
||||
var strOffset = 0;
|
||||
for (var i = 0; i < platforms.length; i++) {
|
||||
for (var i = 0, ii = platforms.length; i < ii; i++) {
|
||||
var strs = names[i];
|
||||
for (var j = 0; j < strs.length; j++) {
|
||||
for (var j = 0, jj = strs.length; j < jj; j++) {
|
||||
var str = strs[j];
|
||||
var nameRecord =
|
||||
platforms[i] + // platform ID
|
||||
|
@ -1349,7 +1349,7 @@ var Font = (function Font() {
|
|||
string32(table.offset);
|
||||
}
|
||||
|
||||
for (var i = 0; i < data.length; i++)
|
||||
for (var i = 0, ii = data.length; i < ii; i++)
|
||||
cmap.data[i] = data.charCodeAt(i);
|
||||
}
|
||||
|
||||
|
@ -1497,7 +1497,7 @@ var Font = (function Font() {
|
|||
if (numMissing > 0) {
|
||||
font.pos = (font.start ? font.start : 0) + metrics.offset;
|
||||
var entries = '';
|
||||
for (var i = 0; i < hmtx.length; i++)
|
||||
for (var i = 0, ii = hmtx.length; i < ii; i++)
|
||||
entries += String.fromCharCode(font.getByte());
|
||||
for (var i = 0; i < numMissing; i++)
|
||||
entries += '\x00\x00';
|
||||
|
@ -1743,18 +1743,18 @@ var Font = (function Font() {
|
|||
});
|
||||
|
||||
// rewrite the tables but tweak offsets
|
||||
for (var i = 0; i < tables.length; i++) {
|
||||
for (var i = 0, ii = tables.length; i < ii; i++) {
|
||||
var table = tables[i];
|
||||
var data = [];
|
||||
|
||||
var tableData = table.data;
|
||||
for (var j = 0; j < tableData.length; j++)
|
||||
for (var j = 0, jj = tableData.length; j < jj; j++)
|
||||
data.push(tableData[j]);
|
||||
createTableEntry(ttf, table.tag, data);
|
||||
}
|
||||
|
||||
// Add the table datas
|
||||
for (var i = 0; i < tables.length; i++) {
|
||||
for (var i = 0, ii = tables.length; i < ii; i++) {
|
||||
var table = tables[i];
|
||||
var tableData = table.data;
|
||||
ttf.file += arrayToString(tableData);
|
||||
|
@ -1769,7 +1769,7 @@ var Font = (function Font() {
|
|||
|
||||
convert: function font_convert(fontName, font, properties) {
|
||||
function isFixedPitch(glyphs) {
|
||||
for (var i = 0; i < glyphs.length - 1; i++) {
|
||||
for (var i = 0, ii = glyphs.length - 1; i < ii; i++) {
|
||||
if (glyphs[i] != glyphs[i + 1])
|
||||
return false;
|
||||
}
|
||||
|
@ -1868,7 +1868,7 @@ var Font = (function Font() {
|
|||
// Horizontal metrics
|
||||
'hmtx': (function fontFieldsHmtx() {
|
||||
var hmtx = '\x00\x00\x00\x00'; // Fake .notdef
|
||||
for (var i = 0; i < charstrings.length; i++)
|
||||
for (var i = 0, ii = charstrings.length; i < ii; i++)
|
||||
hmtx += string16(charstrings[i].width) + string16(0);
|
||||
return stringToArray(hmtx);
|
||||
})(),
|
||||
|
@ -1920,8 +1920,8 @@ var Font = (function Font() {
|
|||
if (!cidToUnicode)
|
||||
return; // identity encoding
|
||||
|
||||
var glyph = 1, i, j, k;
|
||||
for (i = 0; i < cidToUnicode.length; ++i) {
|
||||
var glyph = 1, i, j, k, ii;
|
||||
for (i = 0, ii = cidToUnicode.length; i < ii; ++i) {
|
||||
var unicode = cidToUnicode[i];
|
||||
if (isArray(unicode)) {
|
||||
var length = unicode.length;
|
||||
|
@ -1963,12 +1963,11 @@ var Font = (function Font() {
|
|||
var url = ('url(data:' + this.mimetype + ';base64,' +
|
||||
window.btoa(data) + ');');
|
||||
var rule = "@font-face { font-family:'" + fontName + "';src:" + url + '}';
|
||||
var styleSheet = document.styleSheets[0];
|
||||
if (!styleSheet) {
|
||||
document.documentElement.firstChild.appendChild(
|
||||
document.createElement('style'));
|
||||
styleSheet = document.styleSheets[0];
|
||||
}
|
||||
|
||||
document.documentElement.firstChild.appendChild(
|
||||
document.createElement('style'));
|
||||
|
||||
var styleSheet = document.styleSheets[document.styleSheets.length - 1];
|
||||
styleSheet.insertRule(rule, styleSheet.cssRules.length);
|
||||
|
||||
return rule;
|
||||
|
@ -2081,7 +2080,7 @@ var Font = (function Font() {
|
|||
}
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < chars.length; ++i) {
|
||||
for (var i = 0, ii = chars.length; i < ii; ++i) {
|
||||
var charcode = chars.charCodeAt(i);
|
||||
var glyph = this.charToGlyph(charcode);
|
||||
glyphs.push(glyph);
|
||||
|
@ -2383,7 +2382,7 @@ var Type1Parser = function type1Parser() {
|
|||
count++;
|
||||
|
||||
var array = str.substr(start, count).split(' ');
|
||||
for (var i = 0; i < array.length; i++)
|
||||
for (var i = 0, ii = array.length; i < ii; i++)
|
||||
array[i] = parseFloat(array[i] || 0);
|
||||
return array;
|
||||
}
|
||||
|
@ -2408,7 +2407,7 @@ var Type1Parser = function type1Parser() {
|
|||
this.extractFontProgram = function t1_extractFontProgram(stream) {
|
||||
var eexec = decrypt(stream, kEexecEncryptionKey, 4);
|
||||
var eexecStr = '';
|
||||
for (var i = 0; i < eexec.length; i++)
|
||||
for (var i = 0, ii = eexec.length; i < ii; i++)
|
||||
eexecStr += String.fromCharCode(eexec[i]);
|
||||
|
||||
var glyphsSection = false, subrsSection = false;
|
||||
|
@ -2532,7 +2531,7 @@ var Type1Parser = function type1Parser() {
|
|||
|
||||
this.extractFontHeader = function t1_extractFontHeader(stream, properties) {
|
||||
var headerString = '';
|
||||
for (var i = 0; i < stream.length; i++)
|
||||
for (var i = 0, ii = stream.length; i < ii; i++)
|
||||
headerString += String.fromCharCode(stream[i]);
|
||||
|
||||
var token = '';
|
||||
|
@ -2559,7 +2558,7 @@ var Type1Parser = function type1Parser() {
|
|||
var matrix = readNumberArray(headerString, i + 1);
|
||||
|
||||
// The FontMatrix is in unitPerEm, so make it pixels
|
||||
for (var j = 0; j < matrix.length; j++)
|
||||
for (var j = 0, jj = matrix.length; j < jj; j++)
|
||||
matrix[j] *= 1000;
|
||||
|
||||
// Make the angle into the right direction
|
||||
|
@ -2726,7 +2725,7 @@ CFF.prototype = {
|
|||
}
|
||||
|
||||
for (var i = 0; i < count; i++) {
|
||||
for (var j = 0; j < objects[i].length; j++)
|
||||
for (var j = 0, jj = objects[i].length; j < jj; j++)
|
||||
data += isByte ? String.fromCharCode(objects[i][j] & 0xFF) :
|
||||
objects[i][j];
|
||||
}
|
||||
|
@ -2850,6 +2849,7 @@ CFF.prototype = {
|
|||
},
|
||||
|
||||
flattenCharstring: function flattenCharstring(charstring, map) {
|
||||
// charstring changes size - can't cache .length in loop
|
||||
for (var i = 0; i < charstring.length; i++) {
|
||||
var command = charstring[i];
|
||||
if (command.charAt) {
|
||||
|
@ -2894,7 +2894,7 @@ CFF.prototype = {
|
|||
'\x1c\x00\x00\x10'; // Encoding
|
||||
|
||||
var boundingBox = properties.bbox;
|
||||
for (var i = 0; i < boundingBox.length; i++)
|
||||
for (var i = 0, ii = boundingBox.length; i < ii; i++)
|
||||
dict += self.encodeNumber(boundingBox[i]);
|
||||
dict += '\x05'; // FontBBox;
|
||||
|
||||
|
@ -2984,7 +2984,7 @@ CFF.prototype = {
|
|||
|
||||
if (isArray(value)) {
|
||||
data += self.encodeNumber(value[0]);
|
||||
for (var i = 1; i < value.length; i++)
|
||||
for (var i = 1, ii = value.length; i < ii; i++)
|
||||
data += self.encodeNumber(value[i] - value[i - 1]);
|
||||
} else {
|
||||
data += self.encodeNumber(value);
|
||||
|
@ -3005,7 +3005,7 @@ CFF.prototype = {
|
|||
var cff = [];
|
||||
for (var index in fields) {
|
||||
var field = fields[index];
|
||||
for (var i = 0; i < field.length; i++)
|
||||
for (var i = 0, ii = field.length; i < ii; i++)
|
||||
cff.push(field.charCodeAt(i));
|
||||
}
|
||||
|
||||
|
@ -3116,7 +3116,7 @@ var Type2CFF = (function type2CFF() {
|
|||
|
||||
// create the mapping between charstring and glyph id
|
||||
var glyphIds = [];
|
||||
for (var i = 0; i < charstrings.length; i++)
|
||||
for (var i = 0, ii = charstrings.length; i < ii; i++)
|
||||
glyphIds.push(charstrings[i].gid);
|
||||
|
||||
this.charstrings = charstrings;
|
||||
|
@ -3133,7 +3133,7 @@ var Type2CFF = (function type2CFF() {
|
|||
var charstrings = [];
|
||||
var unicodeUsed = [];
|
||||
var unassignedUnicodeItems = [];
|
||||
for (var i = 0; i < charsets.length; i++) {
|
||||
for (var i = 0, ii = charsets.length; i < ii; i++) {
|
||||
var glyph = charsets[i];
|
||||
var encodingFound = false;
|
||||
for (var charcode in encoding) {
|
||||
|
@ -3156,7 +3156,7 @@ var Type2CFF = (function type2CFF() {
|
|||
}
|
||||
|
||||
var nextUnusedUnicode = 0x21;
|
||||
for (var j = 0; j < unassignedUnicodeItems.length; ++j) {
|
||||
for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; ++j) {
|
||||
var i = unassignedUnicodeItems[j];
|
||||
// giving unicode value anyway
|
||||
while (unicodeUsed[nextUnusedUnicode])
|
||||
|
@ -3199,7 +3199,7 @@ var Type2CFF = (function type2CFF() {
|
|||
var gid = 1;
|
||||
var baseEncoding = pos ? Encodings.ExpertEncoding :
|
||||
Encodings.StandardEncoding;
|
||||
for (var i = 0; i < charset.length; i++) {
|
||||
for (var i = 0, ii = charset.length; i < ii; i++) {
|
||||
var index = baseEncoding.indexOf(charset[i]);
|
||||
if (index != -1)
|
||||
encoding[index] = gid++;
|
||||
|
@ -3401,16 +3401,16 @@ var Type2CFF = (function type2CFF() {
|
|||
getStrings: function cff_getStrings(stringIndex) {
|
||||
function bytesToString(bytesArray) {
|
||||
var str = '';
|
||||
for (var i = 0, length = bytesArray.length; i < length; i++)
|
||||
for (var i = 0, ii = bytesArray.length; i < ii; i++)
|
||||
str += String.fromCharCode(bytesArray[i]);
|
||||
return str;
|
||||
}
|
||||
|
||||
var stringArray = [];
|
||||
for (var i = 0, length = CFFStrings.length; i < length; i++)
|
||||
for (var i = 0, ii = CFFStrings.length; i < ii; i++)
|
||||
stringArray.push(CFFStrings[i]);
|
||||
|
||||
for (var i = 0, length = stringIndex.length; i < length; i++)
|
||||
for (var i = 0, ii = stringIndex.length; i < ii; i++)
|
||||
stringArray.push(bytesToString(stringIndex.get(i).data));
|
||||
|
||||
return stringArray;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue