From 4e21e417cdf56a1ba43475510284b3399c4f7b52 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Fri, 9 Sep 2011 16:46:46 -0500 Subject: [PATCH 01/20] Fix test_slave.html ref to metrics.js --- test/test_slave.html | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_slave.html b/test/test_slave.html index f6d1f7f48..91b8a6850 100644 --- a/test/test_slave.html +++ b/test/test_slave.html @@ -6,6 +6,7 @@ + From d54e425a96e2e5d3f68eababc3140eeedbcda900 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Sat, 10 Sep 2011 20:06:03 +0300 Subject: [PATCH 02/20] Refactor the repeat logic in readBlock function. In the function repeat the variabe i is not defined in the scope of the function. This function was from moved by 92fa629d107cf4de1cb486366d783e890e153306 from its original place which had the i as defined. This fix avoids the scope dependency. --- pdf.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/pdf.js b/pdf.js index ebce3d1b0..38e4bbdbc 100644 --- a/pdf.js +++ b/pdf.js @@ -556,12 +556,6 @@ var FlateStream = (function() { }; constructor.prototype.readBlock = function() { - function repeat(stream, array, len, offset, what) { - var repeatLength = stream.getBits(len) + offset; - while (repeatLength-- > 0) - array[i++] = what; - } - // read block header var hdr = this.getBits(3); if (hdr & 1) @@ -631,14 +625,19 @@ var FlateStream = (function() { while (i < codes) { var code = this.getCode(codeLenCodeTab); if (code == 16) { - repeat(this, codeLengths, 2, 3, len); + var bitsLength = 2, bitsOffset = 3, what = len; } else if (code == 17) { - repeat(this, codeLengths, 3, 3, len = 0); + var bitsLength = 3, bitsOffset = 3, what = (len = 0); } else if (code == 18) { - repeat(this, codeLengths, 7, 11, len = 0); + var bitsLength = 7, bitsOffset = 11, what = (len = 0); } else { codeLengths[i++] = len = code; + continue; } + + var repeatLength = this.getBits(bitsLength) + bitsOffset; + while (repeatLength-- > 0) + codeLengths[i++] = what; } litCodeTable = From ee21d4113f253ca6a3927b0f0d827957c57c46fe Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Sat, 10 Sep 2011 13:45:55 -0500 Subject: [PATCH 03/20] JPEG marker for YCCK images (in support of bug 674619) --- pdf.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pdf.js b/pdf.js index ebce3d1b0..16e60fb19 100644 --- a/pdf.js +++ b/pdf.js @@ -861,11 +861,42 @@ var PredictorStream = (function() { // A JpegStream can't be read directly. We use the platform to render // the underlying JPEG data for us. var JpegStream = (function() { + function isYcckImage(bytes) { + var maxBytesScanned = Math.max(bytes.length - 16, 1024); + // Looking for APP14, 'Adobe' and transform = 2 + for (var i = 0; i < maxBytesScanned; ++i) { + if (bytes[i] == 0xFF || bytes[i + 1] == 0xEE || + bytes[i + 2] == 0x00 || bytes[i + 3] == 0x0E || + bytes[i + 4] == 0x41 || bytes[i + 5] == 0x64 || + bytes[i + 6] == 0x6F || bytes[i + 7] == 0x62 || + bytes[i + 8] == 0x65 || bytes[i + 9] == 0x00 || + bytes[i + 15] == 0x02) + return true; + } + return false; + } + + function fixYcckImage(bytes) { + // Inserting 'EMBED' marker after JPEG signature + var embedMarker = new Uint8Array([0xFF, 0xEC, 0, 8, + 0x45, 0x4D, 0x42, 0x45, 0x44, 0]); + var newBytes = new Uint8Array(bytes.length + embedMarker.length); + newBytes.set(bytes, embedMarker.length); + // copy JPEG header + newBytes[0] = bytes[0]; + newBytes[1] = bytes[1]; + newBytes.set(embedMarker, 2); + return newBytes; + } + function constructor(bytes, dict) { // TODO: per poppler, some images may have "junk" before that // need to be removed this.dict = dict; + if (isYcckImage(bytes)) + bytes = fixYcckImage(bytes); + // create DOM image var img = new Image(); img.onload = (function() { From 07662cf0350dc8aa6df9abce2f1688ff30ce79ec Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Sun, 11 Sep 2011 22:54:00 +0300 Subject: [PATCH 04/20] fix jslint warnings jslint revealed unused and misspelled variable names. Also some code was refactored to be more simple. --- pdf.js | 120 +++++++++++++++++++++++++++------------------------------ 1 file changed, 57 insertions(+), 63 deletions(-) diff --git a/pdf.js b/pdf.js index 3e8249524..ccd90951d 100644 --- a/pdf.js +++ b/pdf.js @@ -710,9 +710,9 @@ var PredictorStream = (function() { var bits = this.bits = params.get('BitsPerComponent') || 8; var columns = this.columns = params.get('Columns') || 1; - var pixBytes = this.pixBytes = (colors * bits + 7) >> 3; + this.pixBytes = (colors * bits + 7) >> 3; // add an extra pixByte to represent the pixel left of column 0 - var rowBytes = this.rowBytes = (columns * colors * bits + 7) >> 3; + this.rowBytes = (columns * colors * bits + 7) >> 3; DecodeStream.call(this); return this; @@ -722,7 +722,6 @@ var PredictorStream = (function() { constructor.prototype.readBlockTiff = function() { var rowBytes = this.rowBytes; - var pixBytes = this.pixBytes; var bufferLength = this.bufferLength; var buffer = this.ensureBuffer(bufferLength + rowBytes); @@ -733,16 +732,18 @@ var PredictorStream = (function() { var rawBytes = this.stream.getBytes(rowBytes); + var inbuf = 0, outbuf = 0; + var inbits = 0, outbits = 0; + if (bits === 1) { - var inbuf = 0; for (var i = 0; i < rowBytes; ++i) { var c = rawBytes[i]; - inBuf = (inBuf << 8) | c; + inbuf = (inbuf << 8) | c; // bitwise addition is exclusive or - // first shift inBuf and then add - currentRow[i] = (c ^ (inBuf >> colors)) & 0xFF; - // truncate inBuf (assumes colors < 16) - inBuf &= 0xFFFF; + // first shift inbuf and then add + currentRow[i] = (c ^ (inbuf >> colors)) & 0xFF; + // truncate inbuf (assumes colors < 16) + inbuf &= 0xFFFF; } } else if (bits === 8) { for (var i = 0; i < colors; ++i) @@ -752,8 +753,6 @@ var PredictorStream = (function() { } else { var compArray = new Uint8Array(colors + 1); var bitMask = (1 << bits) - 1; - var inbuf = 0, outbut = 0; - var inbits = 0, outbits = 0; var j = 0, k = 0; var columns = this.columns; for (var i = 0; i < columns; ++i) { @@ -1015,11 +1014,11 @@ var Ascii85Stream = (function() { return; } - var bufferLength = this.bufferLength; + var bufferLength = this.bufferLength, buffer; // special code for z if (c == zCode) { - var buffer = this.ensureBuffer(bufferLength + 4); + buffer = this.ensureBuffer(bufferLength + 4); for (var i = 0; i < 4; ++i) buffer[bufferLength + i] = 0; this.bufferLength += 4; @@ -1036,7 +1035,7 @@ var Ascii85Stream = (function() { if (!c || c == tildaCode) break; } - var buffer = this.ensureBuffer(bufferLength + i - 1); + buffer = this.ensureBuffer(bufferLength + i - 1); this.bufferLength += i - 1; // partial ending; @@ -1874,7 +1873,7 @@ var CCITTFaxStream = (function() { for (var i = 0; i < 4; ++i) { code1 = this.lookBits(12); if (code1 != 1) - warning('bad rtc code'); + warn('bad rtc code: ' + code1); this.eatBits(12); if (this.encoding > 0) { this.lookBits(1); @@ -2013,7 +2012,7 @@ var CCITTFaxStream = (function() { } } for (var n = 11; n <= 12; ++n) { - code == this.lookBits(n); + code = this.lookBits(n); if (code == EOF) return 1; if (n < 12) @@ -2437,11 +2436,6 @@ var Lexer = (function() { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx ]; - var MIN_INT = (1 << 31) | 0; - var MAX_INT = (MIN_INT - 1) | 0; - var MIN_UINT = 0; - var MAX_UINT = ((1 << 30) * 4) - 1; - function ToHexDigit(ch) { if (ch >= '0' && ch <= '9') return ch.charCodeAt(0) - 48; @@ -3107,7 +3101,6 @@ var XRef = (function() { }, readXRefStream: function readXRefStream(stream) { var streamParameters = stream.parameters; - var length = streamParameters.get('Length'); var byteWidths = streamParameters.get('W'); var range = streamParameters.get('Index'); if (!range) @@ -3356,7 +3349,7 @@ var Page = (function() { } return shadow(this, 'rotate', rotate); }, - startRendering: function(canvasCtx, continuation, onerror) { + startRendering: function(canvasCtx, continuation) { var self = this; var stats = self.stats; stats.compile = stats.fonts = stats.render = 0; @@ -3754,8 +3747,6 @@ var PDFDoc = (function() { return shadow(this, 'numPages', num); }, getPage: function(n) { - var linearization = this.linearization; - // assert(!linearization, "linearized page access not implemented"); return this.catalog.getPage(n); } }; @@ -4141,7 +4132,7 @@ var PartialEvaluator = (function() { }; constructor.prototype = { - eval: function(stream, xref, resources, fonts, images) { + evaluate: function(stream, xref, resources, fonts, images) { resources = xref.fetchIfRef(resources) || new Dict(); var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict(); var patterns = xref.fetchIfRef(resources.get('Pattern')) || new Dict(); @@ -4165,8 +4156,9 @@ var PartialEvaluator = (function() { var dict = IsStream(pattern) ? pattern.dict : pattern; var typeNum = dict.get('PatternType'); if (typeNum == 1) { - patternName.code = this.eval(pattern, xref, - dict.get('Resources'), fonts); + patternName.code = this.evaluate(pattern, xref, + dict.get('Resources'), + fonts); } } } @@ -4185,8 +4177,9 @@ var PartialEvaluator = (function() { ); if ('Form' == type.name) { - args[0].code = this.eval(xobj, xref, xobj.dict.get('Resources'), - fonts, images); + args[0].code = this.evaluate(xobj, xref, + xobj.dict.get('Resources'), fonts, + images); } if (xobj instanceof JpegStream) images.bind(xobj); // monitoring image load @@ -4224,7 +4217,7 @@ var PartialEvaluator = (function() { }, extractEncoding: function(dict, xref, properties) { - var type = properties.type; + var type = properties.type, encoding; if (properties.composite) { if (type == 'CIDFontType2') { var defaultWidth = xref.fetchIfRef(dict.get('DW')) || 1000; @@ -4261,7 +4254,7 @@ var PartialEvaluator = (function() { var glyphsData = glyphsStream.getBytes(0); // Glyph ids are big-endian 2-byte values - var encoding = properties.encoding; + encoding = properties.encoding; // Set encoding 0 to later verify the font has an encoding encoding[0] = { unicode: 0, width: 0 }; @@ -4278,7 +4271,7 @@ var PartialEvaluator = (function() { }; } } else if (type == 'CIDFontType0') { - var encoding = xref.fetchIfRef(dict.get('Encoding')); + encoding = xref.fetchIfRef(dict.get('Encoding')); if (IsName(encoding)) { // Encoding is a predefined CMap if (encoding.name == 'Identity-H') { @@ -4299,7 +4292,7 @@ var PartialEvaluator = (function() { var map = properties.encoding; var baseEncoding = null; if (dict.has('Encoding')) { - var encoding = xref.fetchIfRef(dict.get('Encoding')); + encoding = xref.fetchIfRef(dict.get('Encoding')); if (IsDict(encoding)) { var baseName = encoding.get('BaseEncoding'); if (baseName) @@ -4683,7 +4676,7 @@ var CanvasGraphics = (function() { compile: function(stream, xref, resources, fonts, images) { var pe = new PartialEvaluator(); - return pe.eval(stream, xref, resources, fonts, images); + return pe.evaluate(stream, xref, resources, fonts, images); }, execute: function(code, xref, resources) { @@ -4722,13 +4715,13 @@ var CanvasGraphics = (function() { this.ctx.mozDashOffset = dashPhase; }, setRenderingIntent: function(intent) { - TODO('set rendering intent'); + TODO('set rendering intent: ' + intent); }, setFlatness: function(flatness) { - TODO('set flatness'); + TODO('set flatness: ' + flatness); }, setGState: function(dictName) { - TODO('set graphics state from dict'); + TODO('set graphics state from dict: ' + dictName); }, save: function() { this.ctx.save(); @@ -4923,10 +4916,10 @@ var CanvasGraphics = (function() { } }, setTextRenderingMode: function(mode) { - TODO('text rendering mode'); + TODO('text rendering mode: ' + mode); }, setTextRise: function(rise) { - TODO('text rise'); + TODO('text rise: ' + rise); }, moveText: function(x, y) { this.current.x = this.current.lineX += x; @@ -5028,10 +5021,13 @@ var CanvasGraphics = (function() { // Type3 fonts setCharWidth: function(xWidth, yWidth) { - TODO("type 3 fonts ('d0' operator)"); + TODO('type 3 fonts ("d0" operator) xWidth: ' + xWidth + ' yWidth: ' + + yWidth); }, setCharWidthAndBounds: function(xWidth, yWidth, llx, lly, urx, ury) { - TODO("type 3 fonts ('d1' operator)"); + TODO('type 3 fonts ("d1" operator) xWidth: ' + xWidth + ' yWidth: ' + + yWidth + ' llx: ' + llx + ' lly: ' + lly + ' urx: ' + urx + + ' ury ' + ury); }, // Color @@ -5430,7 +5426,6 @@ var ColorSpace = (function() { var lookup = xref.fetchIfRef(cs[3]); return new IndexedCS(base, hiVal, lookup); case 'Separation': - var name = cs[1]; var alt = ColorSpace.parse(cs[2], xref, res); var tintFn = new PDFFunction(xref, xref.fetchIfRef(cs[3])); return new SeparationCS(alt, tintFn); @@ -5468,12 +5463,12 @@ var SeparationCS = (function() { var base = this.base; var scale = 1 / ((1 << bits) - 1); - var length = 3 * input.length; + var length = input.length; var pos = 0; var numComps = base.numComps; - var baseBuf = new Uint8Array(numComps * input.length); - for (var i = 0, ii = input.length; i < ii; ++i) { + var baseBuf = new Uint8Array(numComps * length); + for (var i = 0; i < length; ++i) { var scaled = input[i] * scale; var tinted = tintFn.func([scaled]); for (var j = 0; j < numComps; ++j) @@ -5779,8 +5774,6 @@ var DummyShading = (function() { var RadialAxialShading = (function() { function constructor(dict, matrix, xref, res, ctx) { this.matrix = matrix; - var bbox = dict.get('BBox'); - var background = dict.get('Background'); this.coordsArr = dict.get('Coords'); this.shadingType = dict.get('ShadingType'); this.type = 'Pattern'; @@ -5838,15 +5831,17 @@ var RadialAxialShading = (function() { getPattern: function() { var coordsArr = this.coordsArr; var type = this.shadingType; + var p0, p1, r0, r1; if (type == 2) { - var p0 = [coordsArr[0], coordsArr[1]]; - var p1 = [coordsArr[2], coordsArr[3]]; + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[2], coordsArr[3]]; } else if (type == 3) { - var p0 = [coordsArr[0], coordsArr[1]]; - var p1 = [coordsArr[3], coordsArr[4]]; - var r0 = coordsArr[2], r1 = coordsArr[5]; + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[3], coordsArr[4]]; + r0 = coordsArr[2]; + r1 = coordsArr[5]; } else { - error(); + error('getPattern type unknown: ' + type); } var matrix = this.matrix; @@ -5869,11 +5864,11 @@ var RadialAxialShading = (function() { p1 = Util.applyTransform(p1, userMatrix); } - var colorStops = this.colorStops; + var colorStops = this.colorStops, grad; if (type == 2) - var grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); + grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); else if (type == 3) - var grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); + grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); for (var i = 0, ii = colorStops.length; i < ii; ++i) { var c = colorStops[i]; @@ -6064,6 +6059,7 @@ var PDFImage = (function() { var bufferPos = 0; var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); + var rowComps = width * numComps; if (bpc == 1) { var valueZero = 0, valueOne = 1; @@ -6071,7 +6067,6 @@ var PDFImage = (function() { valueZero = decodeMap[0] ? 1 : 0; valueOne = decodeMap[1] ? 1 : 0; } - var rowComps = width * numComps; var mask = 0; var buf = 0; @@ -6093,8 +6088,7 @@ var PDFImage = (function() { } else { if (decodeMap != null) TODO('interpolate component values'); - var rowComps = width * numComps; - var bits, buf; + var bits = 0, buf = 0; for (var i = 0, ii = length; i < ii; ++i) { if (i % rowComps == 0) { buf = 0; @@ -6299,14 +6293,14 @@ var PDFFunction = (function() { floor *= outputSize; ceil *= outputSize; - var output = []; + var output = [], v = 0; for (var i = 0; i < outputSize; ++i) { if (ceil == floor) { - var v = samples[ceil + i]; + v = samples[ceil + i]; } else { var low = samples[floor + i]; var high = samples[ceil + i]; - var v = low * scale + high * (1 - scale); + v = low * scale + high * (1 - scale); } var i2 = i * 2; From 0dc0dd4c970778cd8eb73142bd10b21084e535ce Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Sun, 11 Sep 2011 23:04:17 +0300 Subject: [PATCH 05/20] fix jslint warnings in fonts.js --- fonts.js | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/fonts.js b/fonts.js index cc353c03b..3deb09825 100755 --- a/fonts.js +++ b/fonts.js @@ -1056,7 +1056,7 @@ var Font = (function Font() { // Ensure the [h/v]mtx tables contains the advance width and // sidebearings information for numGlyphs in the maxp table - font.pos = (font.start ? font.start : 0) + maxp.offset; + font.pos = (font.start || 0) + maxp.offset; var version = int16(font.getBytes(4)); var numGlyphs = int16(font.getBytes(2)); @@ -1165,7 +1165,7 @@ var Font = (function Font() { return false; } return true; - }; + } // The offsets object holds at the same time a representation of where // to write the table entry information about a table and another offset @@ -1357,7 +1357,7 @@ var Font = (function Font() { } // Enter the translated string into the cache - return charsCache[chars] = str; + return (charsCache[chars] = str); } }; @@ -1390,7 +1390,7 @@ var Type1Parser = function() { r = ((value + r) * c1 + c2) & ((1 << 16) - 1); } return decryptedString.slice(discardNumber); - }; + } /* * CharStrings are encoded following the the CharString Encoding sequence @@ -1593,7 +1593,7 @@ var Type1Parser = function() { } return { charstring: charstring, width: width, lsb: lsb }; - }; + } /* * Returns an object containing a Subrs array and a CharStrings @@ -1613,7 +1613,7 @@ var Type1Parser = function() { for (var i = 0; i < array.length; i++) array[i] = parseFloat(array[i] || 0); return array; - }; + } function readNumber(str, index) { while (str[index] == ' ') @@ -1626,11 +1626,11 @@ var Type1Parser = function() { count++; return parseFloat(str.substr(start, count) || 0); - }; + } function isSeparator(c) { return c == ' ' || c == '\n' || c == '\x0d'; - }; + } this.extractFontProgram = function t1_extractFontProgram(stream) { var eexec = decrypt(stream, kEexecEncryptionKey, 4); @@ -1755,7 +1755,7 @@ var Type1Parser = function() { } return program; - }, + }; this.extractFontHeader = function t1_extractFontHeader(stream, properties) { var headerString = ''; @@ -2153,7 +2153,7 @@ CFF.prototype = { 'globalSubrs': this.createCFFIndexHeader([]), 'charset': (function charset(self) { - var charset = '\x00'; // Encoding + var charsetString = '\x00'; // Encoding var count = glyphs.length; for (var i = 0; i < count; i++) { @@ -2165,9 +2165,9 @@ CFF.prototype = { if (index == -1) index = 0; - charset += String.fromCharCode(index >> 8, index & 0xff); + charsetString += String.fromCharCode(index >> 8, index & 0xff); } - return charset; + return charsetString; })(this), 'charstrings': this.createCFFIndexHeader([[0x8B, 0x0E]].concat(glyphs), @@ -2234,7 +2234,7 @@ var Type2CFF = (function() { this.properties = properties; this.data = this.parse(); - }; + } constructor.prototype = { parse: function cff_parse() { @@ -2457,7 +2457,7 @@ var Type2CFF = (function() { case 21: dict['nominalWidthX'] = value[0]; default: - TODO('interpret top dict key'); + TODO('interpret top dict key: ' + key); } } return dict; @@ -2569,7 +2569,7 @@ var Type2CFF = (function() { error('Incorrect byte'); } return -1; - }; + } function parseFloatOperand() { var str = ''; @@ -2591,7 +2591,7 @@ var Type2CFF = (function() { str += lookup[b2]; } return parseFloat(str); - }; + } var operands = []; var entries = []; @@ -2617,15 +2617,14 @@ var Type2CFF = (function() { parseIndex: function cff_parseIndex(pos) { var bytes = this.bytes; var count = bytes[pos++] << 8 | bytes[pos++]; - if (count == 0) { - var offsets = []; - var end = pos; - } else { + var offsets = []; + var end = pos; + + if (count != 0) { var offsetSize = bytes[pos++]; // add 1 for offset to determine size of last object var startPos = pos + ((count + 1) * offsetSize) - 1; - var offsets = []; for (var i = 0, ii = count + 1; i < ii; ++i) { var offset = 0; for (var j = 0; j < offsetSize; ++j) { @@ -2634,7 +2633,7 @@ var Type2CFF = (function() { } offsets.push(startPos + offset); } - var end = offsets[count]; + end = offsets[count]; } return { From 8e5a8fb49fb0faabc97ed5877a1df4bde3406dc0 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Mon, 12 Sep 2011 20:37:33 +0300 Subject: [PATCH 06/20] Fix Mode comment lines. --- crypto.js | 2 +- fonts.js | 2 +- glyphlist.js | 2 +- metrics.js | 3 +++ test/driver.js | 2 +- utils/cffStandardStrings.js | 2 +- utils/fonts_utils.js | 2 +- web/compatibility.js | 2 +- web/viewer.js | 2 +- worker/canvas.js | 2 +- worker/client.js | 2 +- worker/console.js | 2 +- worker/font.js | 2 +- worker/pdf.js | 2 +- 14 files changed, 16 insertions(+), 13 deletions(-) diff --git a/crypto.js b/crypto.js index bfffa1f44..a91f9e41d 100644 --- a/crypto.js +++ b/crypto.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/fonts.js b/fonts.js index 3deb09825..d0d42a941 100755 --- a/fonts.js +++ b/fonts.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/glyphlist.js b/glyphlist.js index 9be0e8d5a..5691f8546 100644 --- a/glyphlist.js +++ b/glyphlist.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/metrics.js b/metrics.js index 973d9543a..9cb8eb0e6 100644 --- a/metrics.js +++ b/metrics.js @@ -1,3 +1,6 @@ +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ + var Metrics = { 'Courier': 600, 'Courier-Bold': 600, diff --git a/test/driver.js b/test/driver.js index 265de0852..f3e45a53d 100644 --- a/test/driver.js +++ b/test/driver.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ /* diff --git a/utils/cffStandardStrings.js b/utils/cffStandardStrings.js index 09c408ee7..326f298b0 100644 --- a/utils/cffStandardStrings.js +++ b/utils/cffStandardStrings.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/utils/fonts_utils.js b/utils/fonts_utils.js index 7665906a1..4826a09a1 100644 --- a/utils/fonts_utils.js +++ b/utils/fonts_utils.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/web/compatibility.js b/web/compatibility.js index e9a769163..63ebecb63 100755 --- a/web/compatibility.js +++ b/web/compatibility.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ // Checking if the typed arrays are supported diff --git a/web/viewer.js b/web/viewer.js index 5752cf84e..d7c9d6b66 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/worker/canvas.js b/worker/canvas.js index c2a9f4763..5a9237d9a 100644 --- a/worker/canvas.js +++ b/worker/canvas.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/worker/client.js b/worker/client.js index a00eab59e..a20a4179f 100644 --- a/worker/client.js +++ b/worker/client.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/worker/console.js b/worker/console.js index 29f511407..fc49583a6 100644 --- a/worker/console.js +++ b/worker/console.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/worker/font.js b/worker/font.js index 32e22198c..549b73101 100644 --- a/worker/font.js +++ b/worker/font.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; diff --git a/worker/pdf.js b/worker/pdf.js index 0d5008d80..8cb6342db 100644 --- a/worker/pdf.js +++ b/worker/pdf.js @@ -1,4 +1,4 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ 'use strict'; From b5412c13d88d376bb0c0d98a4fb6d8b9550782f6 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Mon, 12 Sep 2011 20:42:55 +0300 Subject: [PATCH 07/20] Fix gjslint warnings. --- fonts.js | 7 ++++--- pdf.js | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fonts.js b/fonts.js index d0d42a941..9ba1d876e 100755 --- a/fonts.js +++ b/fonts.js @@ -434,7 +434,7 @@ var Font = (function Font() { // Use 'name' instead of 'fontName' here because the original // name ArialBlack for example will be replaced by Helvetica. - this.black = (name.search(/Black/g) != -1) + this.black = (name.search(/Black/g) != -1); this.loadedName = fontName.split('-')[0]; this.loading = false; @@ -986,7 +986,7 @@ var Font = (function Font() { font.pos = (font.start ? font.start : 0) + header.offset; font.pos += header.length - 2; var numOfMetrics = int16(font.getBytes(2)); - + var numOfSidebearings = numGlyphs - numOfMetrics; var numMissing = numOfSidebearings - ((hmtx.length - numOfMetrics * 4) >> 1); @@ -1807,7 +1807,8 @@ var Type1Parser = function() { if ('undefined' == typeof(properties.differences[index])) { var mapping = properties.encoding[index] || {}; mapping.unicode = GlyphsUnicode[glyph] || index; - properties.glyphs[glyph] = properties.encoding[index] = mapping; + properties.glyphs[glyph] = properties.encoding[index] = + mapping; } getToken(); // read the in 'put' } diff --git a/pdf.js b/pdf.js index ccd90951d..939d9e21c 100644 --- a/pdf.js +++ b/pdf.js @@ -876,8 +876,8 @@ var JpegStream = (function() { function fixYcckImage(bytes) { // Inserting 'EMBED' marker after JPEG signature - var embedMarker = new Uint8Array([0xFF, 0xEC, 0, 8, - 0x45, 0x4D, 0x42, 0x45, 0x44, 0]); + var embedMarker = new Uint8Array([0xFF, 0xEC, 0, 8, 0x45, 0x4D, 0x42, 0x45, + 0x44, 0]); var newBytes = new Uint8Array(bytes.length + embedMarker.length); newBytes.set(bytes, embedMarker.length); // copy JPEG header From 30b8d1dd08b08e1ba73d74edc1cffab7b6d4ed2b Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Mon, 12 Sep 2011 21:05:52 +0300 Subject: [PATCH 08/20] Use empty strings in shadow encodings array instead of undefined. --- pdf.js | 56 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/pdf.js b/pdf.js index 939d9e21c..ca252242c 100644 --- a/pdf.js +++ b/pdf.js @@ -3756,38 +3756,42 @@ var PDFDoc = (function() { var Encodings = { get ExpertEncoding() { - return shadow(this, 'ExpertEncoding', [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclamsmall', 'Hungarumlautsmall',, 'dollaroldstyle', - 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', - 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', - 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', - 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', - 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', - 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', - 'questionsmall',, 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', - 'esuperior',,, 'isuperior',,, 'lsuperior', 'msuperior', 'nsuperior', - 'osuperior',,, 'rsuperior', 'ssuperior', 'tsuperior',, 'ff', 'fi', 'fl', - 'ffi', 'ffl', 'parenleftinferior',, 'parenrightinferior', + return shadow(this, 'ExpertEncoding', ['', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', + 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', + 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', + 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', + 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', + 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', + 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', + 'threequartersemdash', 'periodsuperior', 'questionsmall', '', + 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', + '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', + 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', + 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', - 'Tildesmall',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 'exclamdownsmall', - 'centoldstyle', 'Lslashsmall',,, 'Scaronsmall', 'Zcaronsmall', - 'Dieresissmall', 'Brevesmall', 'Caronsmall',, 'Dotaccentsmall',,, - 'Macronsmall',,, 'figuredash', 'hypheninferior',,, 'Ogoneksmall', - 'Ringsmall', 'Cedillasmall',,,, 'onequarter', 'onehalf', 'threequarters', + 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', + 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', + 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', + 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', + 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds',,, 'zerosuperior', 'onesuperior', - 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', - 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', - 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', - 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', - 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', - 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', + 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', + 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', + 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', + 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', + 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', + 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', + 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', + 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', + 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', From 9256a623041d0d13a46cd0dab0857682d5efd7d5 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Mon, 12 Sep 2011 22:04:43 +0300 Subject: [PATCH 09/20] Use empty strings in mac shadow encodings array instead of undefined. --- pdf.js | 71 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/pdf.js b/pdf.js index ca252242c..58dc28bcd 100644 --- a/pdf.js +++ b/pdf.js @@ -3801,44 +3801,47 @@ var Encodings = { ]); }, get MacExpertEncoding() { - return shadow(this, 'MacExpertEncoding', [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', - 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', - 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', - 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', - 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', - 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', - 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon',, - 'threequartersemdash',, 'questionsmall',,,,, 'Ethsmall',,, 'onequarter', - 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', - 'seveneighths', 'onethird', 'twothirds',,,,,,, 'ff', 'fi', 'fl', 'ffi', - 'ffl', 'parenleftinferior',, 'parenrightinferior', 'Circumflexsmall', + return shadow(this, 'MacExpertEncoding', [, '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', + 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', + 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', + 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', + 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', + 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', + 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', + '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', + 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', + 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', + 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', + 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', - 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall',,, - 'asuperior', 'centsuperior',,,,, 'Aacutesmall', 'Agravesmall', - 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', - 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', - 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', - 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', - 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', - 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall',, 'eightsuperior', - 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', - 'seveninferior', 'Scaronsmall',, 'centinferior', 'twoinferior',, - 'Dieresissmall',, 'Caronsmall', 'osuperior', 'fiveinferior',, - 'commainferior', 'periodinferior', 'Yacutesmall',, 'dollarinferior',, - 'Thornsmall',, 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', - 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall',,,,,,, - 'Cedillasmall',,,,,, 'OEsmall', 'figuredash', 'hyphensuperior',,,,, - 'exclamdownsmall',, 'Ydieresissmall',, 'onesuperior', 'twosuperior', - 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', - 'sevensuperior', 'ninesuperior', 'zerosuperior',, 'esuperior', - 'rsuperior', 'tsuperior',,, 'isuperior', 'ssuperior', 'dsuperior',,,,,, - 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', - 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', - 'Dotaccentsmall', 'Ringsmall' + 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', + 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', + 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', + 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', + 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', + 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', + 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', + 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', + 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', + 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', + 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', + 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', + 'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', + 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', + 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', + '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', + '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', + 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', + 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', + 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', + 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', + 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', + 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall' ]); }, get MacRomanEncoding() { From 68ceff4081758a751d0d6b3d3f09d6ed54e289d7 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:17:05 +0300 Subject: [PATCH 10/20] Use empty strings in mac roman shadow encodings array instead of undefined. --- pdf.js | 73 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/pdf.js b/pdf.js index 58dc28bcd..7920a865b 100644 --- a/pdf.js +++ b/pdf.js @@ -3801,9 +3801,9 @@ var Encodings = { ]); }, get MacExpertEncoding() { - return shadow(this, 'MacExpertEncoding', [, '', '', '', '', '', '', '', '', + return shadow(this, 'MacExpertEncoding', ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', + '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', @@ -3845,40 +3845,41 @@ var Encodings = { ]); }, get MacRomanEncoding() { - return shadow(this, 'MacRomanEncoding', [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', - 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', - 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', - 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', - 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', - 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', - 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', - 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', - 'asciitilde',, 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', - 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', - 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', - 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', - 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', - 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', - 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', - 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', - 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', - 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', - 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', - 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', - 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', - 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', - 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', - 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', - 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', - 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', - 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', - 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', - 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', - 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', - 'ogonek', 'caron' + return shadow(this, 'MacRomanEncoding', ['', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', + 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', + 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', + 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', + 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', + 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', + 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', + 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', + 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', + 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', + 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', + 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', + 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', + 'germandbls', 'registered', 'copyright', 'trademark', 'acute', + 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', + 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', + 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', + 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', + 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', + 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', + 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', + 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', + 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', + 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', + 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', + 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', + 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', + 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', + 'hungarumlaut', 'ogonek', 'caron' ]); }, get StandardEncoding() { From 7a1c02bc9e8ead7c88e9a4d469919f8a624c9a48 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:30:41 +0300 Subject: [PATCH 11/20] Use empty strings in standard shadow encodings array instead of undefined. --- pdf.js | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/pdf.js b/pdf.js index 7920a865b..afcc985e7 100644 --- a/pdf.js +++ b/pdf.js @@ -3883,28 +3883,31 @@ var Encodings = { ]); }, get StandardEncoding() { - return shadow(this, 'StandardEncoding', [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', - 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', - 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', - 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', - 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', - 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', - 'bar', 'braceright', 'asciitilde',,, 'exclamdown', 'cent', 'sterling', - 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', - 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', - 'fl',, 'endash', 'dagger', 'daggerdbl', 'periodcentered',, 'paragraph', - 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', - 'guillemotright', 'ellipsis', 'perthousand',, 'questiondown',, 'grave', - 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', - 'dieresis',, 'ring', 'cedilla',, 'hungarumlaut', 'ogonek', 'caron', - 'emdash',,,,,,,,,,,,,,,,, 'AE',, 'ordfeminine',,,,, 'Lslash', 'Oslash', - 'OE', 'ordmasculine',,,,,, 'ae',,,, 'dotlessi',,, 'lslash', 'oslash', - 'oe', 'germandbls' + return shadow(this, 'StandardEncoding', ['', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', + 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', + 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', + 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', + 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', + 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', + 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', + 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', 'exclamdown', + 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', + 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', + 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', + 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', + 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', + 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', + 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', + 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', + 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', + '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', + 'oslash', 'oe', 'germandbls' ]); }, get WinAnsiEncoding() { From 2b4e722a1c2c08c32878d1e12577b81edfe912a3 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:42:31 +0300 Subject: [PATCH 12/20] Use empty strings in win ansi shadow encodings array instead of undefined. --- pdf.js | 71 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/pdf.js b/pdf.js index afcc985e7..a9c0cfc20 100644 --- a/pdf.js +++ b/pdf.js @@ -3911,41 +3911,42 @@ var Encodings = { ]); }, get WinAnsiEncoding() { - return shadow(this, 'WinAnsiEncoding', - [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', - 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', - 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', - 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', - 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', - 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', - 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', - 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', - 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', - 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', - 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', - 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', - 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', - 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', - 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', - 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', - 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', - 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', - 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', - 'guillemotright', 'onequarter', 'onehalf', 'threequarters', - 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', - 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', - 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', - 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', - 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', - 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', - 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', - 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', - 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', - 'otilde', 'odieresis', 'divide', 'oslash', 'ugrave', 'uacute', - 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis' + return shadow(this, 'WinAnsiEncoding', ['', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', + 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', + 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', + 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', + 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', + 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', + 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', + 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', + 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', + 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', + 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', + 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', + 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', + 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', + 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', + 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', + 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', + 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', + 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', + 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', + 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', + 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', + 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', + 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', + 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', + 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', + 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', + 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', + 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', + 'ydieresis' ]); }, get symbolsEncoding() { From 67e264e579a7759d53787c1bc95ebfc2094bfc9b Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:47:13 +0300 Subject: [PATCH 13/20] Use empty strings in symbols shadow encodings array instead of undefined. --- pdf.js | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/pdf.js b/pdf.js index a9c0cfc20..b54bdce74 100644 --- a/pdf.js +++ b/pdf.js @@ -3950,27 +3950,28 @@ var Encodings = { ]); }, get symbolsEncoding() { - return shadow(this, 'symbolsEncoding', - [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', - 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', - 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', - 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', - 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', - 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', - 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', - 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', + return shadow(this, 'symbolsEncoding', ['', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', + 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', + 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', + 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', + 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', + 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', + 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', + 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', + 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', - 'braceright', 'similar',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 'Euro', - 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', - 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', - 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', - 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', - 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', + 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', + 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', + 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', + 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', + 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', @@ -3981,10 +3982,11 @@ var Encodings = { 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', - 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',, 'angleright', - 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', - 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', - 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt' + 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', + 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', + 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', + 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', + 'bracerightbt' ]); }, get zapfDingbatsEncoding() { From 9857287806c1306cb03948eabe94b164236cd03f Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:52:05 +0300 Subject: [PATCH 14/20] Use empty strings in zaph dingbats shadow encodings array instead of undefined. --- pdf.js | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/pdf.js b/pdf.js index b54bdce74..f131c982c 100644 --- a/pdf.js +++ b/pdf.js @@ -3990,29 +3990,31 @@ var Encodings = { ]); }, get zapfDingbatsEncoding() { - return shadow(this, 'zapfDingbatsEncoding', - [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', - 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', - 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', - 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', - 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', - 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', - 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', - 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', - 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', - 'a97', 'a98', 'a99', 'a100',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 'a101', - 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', - 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', - 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', - 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', - 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', - 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', - 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', - 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', - 'a193', 'a180', 'a199', 'a181', 'a200', 'a182',, 'a201', 'a183', 'a184', - 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', - 'a190', 'a191' + return shadow(this, 'zapfDingbatsEncoding', ['', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', + 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', + 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', + 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', + 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', + 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', + 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', + 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', + 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', + 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', + 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', + 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', + 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', + 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', + 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', + 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', + 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', + 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', + 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', + 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', + 'a191' ]); } }; From 7a421794a2b2d41810acce148c9df8a6bdbb74f2 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Tue, 13 Sep 2011 20:56:59 +0300 Subject: [PATCH 15/20] Use zeroes in PDFStringTranslateTable array instead of undefined. --- pdf.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pdf.js b/pdf.js index f131c982c..f4cbcbfec 100644 --- a/pdf.js +++ b/pdf.js @@ -85,12 +85,15 @@ function stringToBytes(str) { } var PDFStringTranslateTable = [ - ,,,,,,,,,,,,,,,,,,,,,,,, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, - 0x2DC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, - ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, - 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, - 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E,, 0x20AC + 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, + 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC ]; function stringToPDFString(str) { From 94da20d77653b41142b836e7aa045429f438053a Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 13 Sep 2011 19:23:49 -0500 Subject: [PATCH 16/20] Disable encryption when a ToUnicode stream is used in a font --- pdf.js | 9 ++++++--- test/pdfs/artofwar.pdf.link | 1 + test/test_manifest.json | 6 ++++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 test/pdfs/artofwar.pdf.link diff --git a/pdf.js b/pdf.js index 939d9e21c..019961f15 100644 --- a/pdf.js +++ b/pdf.js @@ -3185,7 +3185,7 @@ var XRef = (function() { return obj; return this.fetch(obj); }, - fetch: function(ref) { + fetch: function(ref, suppressEncryption) { var num = ref.num; var e = this.cache[num]; if (e) @@ -3216,7 +3216,7 @@ var XRef = (function() { } error('bad XRef entry'); } - if (this.encrypt) { + if (this.encrypt && !suppressEncryption) { e = parser.getObj(this.encrypt.createCipherTransform(num, gen)); } else { e = parser.getObj(); @@ -4356,7 +4356,10 @@ var PartialEvaluator = (function() { } if (type == 'TrueType' && dict.has('ToUnicode') && differences) { - var cmapObj = xref.fetchIfRef(dict.get('ToUnicode')); + var cmapObj = dict.get('ToUnicode'); + if (IsRef(cmapObj)) { + cmapObj = xref.fetch(cmapObj, true); + } if (IsName(cmapObj)) { error('ToUnicode file cmap translation not implemented'); } else if (IsStream(cmapObj)) { diff --git a/test/pdfs/artofwar.pdf.link b/test/pdfs/artofwar.pdf.link new file mode 100644 index 000000000..f70b9e235 --- /dev/null +++ b/test/pdfs/artofwar.pdf.link @@ -0,0 +1 @@ +http://www.puppetpress.com/classics/ArtofWarbySunTzu.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 1155195cb..3734ee9e4 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -109,5 +109,11 @@ "link": true, "rounds": 1, "type": "eq" + }, + { "id": "artofwar", + "file": "pdfs/artofwar.pdf", + "link": true, + "rounds": 1, + "type": "eq" } ] From 4e1a5296d20f887566e48dc962b4c41adbaa5ab8 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 13 Sep 2011 20:24:24 -0500 Subject: [PATCH 17/20] Fixing and optimizing isYcckImage() --- pdf.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pdf.js b/pdf.js index f4cbcbfec..3255c5dad 100644 --- a/pdf.js +++ b/pdf.js @@ -866,13 +866,15 @@ var JpegStream = (function() { var maxBytesScanned = Math.max(bytes.length - 16, 1024); // Looking for APP14, 'Adobe' and transform = 2 for (var i = 0; i < maxBytesScanned; ++i) { - if (bytes[i] == 0xFF || bytes[i + 1] == 0xEE || - bytes[i + 2] == 0x00 || bytes[i + 3] == 0x0E || - bytes[i + 4] == 0x41 || bytes[i + 5] == 0x64 || - bytes[i + 6] == 0x6F || bytes[i + 7] == 0x62 || - bytes[i + 8] == 0x65 || bytes[i + 9] == 0x00 || - bytes[i + 15] == 0x02) - return true; + if (bytes[i] == 0xFF && bytes[i + 1] == 0xEE && + bytes[i + 2] == 0x00 && bytes[i + 3] == 0x0E && + bytes[i + 4] == 0x41 && bytes[i + 5] == 0x64 && + bytes[i + 6] == 0x6F && bytes[i + 7] == 0x62 && + bytes[i + 8] == 0x65 && bytes[i + 9] == 0x00) + return bytes[i + 15] == 0x02; + // scanning until frame tag + if (bytes[i] == 0xFF && bytes[i + 1] == 0xC0) + break; } return false; } From 361d53e1a9528d3658196733eaada25bad119d3e Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 13 Sep 2011 22:03:46 -0500 Subject: [PATCH 18/20] Fixing truncated streams with multiple filters --- pdf.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pdf.js b/pdf.js index f4cbcbfec..1effd1826 100644 --- a/pdf.js +++ b/pdf.js @@ -2892,6 +2892,8 @@ var Parser = (function() { if (IsArray(paramsArray) && (i in paramsArray)) params = paramsArray[i]; stream = this.makeFilter(stream, filter.name, length, params); + // after the first stream the length variable is invalid + length = null; } } } From 5587cce165217479ba5a1af00c5b10fda2dedbbe Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 14 Sep 2011 11:59:20 -0700 Subject: [PATCH 19/20] Check for continuation callback --- pdf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdf.js b/pdf.js index 5a193fe89..37afdc376 100644 --- a/pdf.js +++ b/pdf.js @@ -3379,7 +3379,7 @@ var Page = (function() { } catch (e) { exc = e.toString(); } - continuation(exc); + if (continuation) continuation(exc); }); }; From de253dcbe32205e12c666b8835d16f7c1379502d Mon Sep 17 00:00:00 2001 From: Artur Adib Date: Wed, 14 Sep 2011 16:26:36 -0700 Subject: [PATCH 20/20] Check for stylesheet presence (font.js) If doc doesn't have a stylesheet, create one. --- fonts.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fonts.js b/fonts.js index 9ba1d876e..7d51e2c4b 100755 --- a/fonts.js +++ b/fonts.js @@ -1291,6 +1291,10 @@ var Font = (function Font() { 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]; + } styleSheet.insertRule(rule, styleSheet.cssRules.length); return rule;