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 beecf0459..aae775dc3 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';
@@ -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);
@@ -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
@@ -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;
@@ -1357,7 +1361,7 @@ var Font = (function Font() {
}
// Enter the translated string into the cache
- return charsCache[chars] = str;
+ return (charsCache[chars] = str);
}
};
@@ -1390,7 +1394,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 +1597,7 @@ var Type1Parser = function() {
}
return { charstring: charstring, width: width, lsb: lsb };
- };
+ }
/*
* Returns an object containing a Subrs array and a CharStrings
@@ -1613,7 +1617,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 +1630,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 +1759,7 @@ var Type1Parser = function() {
}
return program;
- },
+ };
this.extractFontHeader = function t1_extractFontHeader(stream, properties) {
var headerString = '';
@@ -1807,7 +1811,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'
}
@@ -2153,7 +2158,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 +2170,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 +2239,7 @@ var Type2CFF = (function() {
this.properties = properties;
this.data = this.parse();
- };
+ }
constructor.prototype = {
parse: function cff_parse() {
@@ -2492,7 +2497,7 @@ var Type2CFF = (function() {
case 21:
dict['nominalWidthX'] = value[0];
default:
- TODO('interpret top dict key');
+ TODO('interpret top dict key: ' + key);
}
}
return dict;
@@ -2604,7 +2609,7 @@ var Type2CFF = (function() {
error('255 is not a valid DICT command');
}
return -1;
- };
+ }
function parseFloatOperand() {
var str = '';
@@ -2626,7 +2631,7 @@ var Type2CFF = (function() {
str += lookup[b2];
}
return parseFloat(str);
- };
+ }
var operands = [];
var entries = [];
@@ -2652,15 +2657,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) {
@@ -2669,7 +2673,7 @@ var Type2CFF = (function() {
}
offsets.push(startPos + offset);
}
- var end = offsets[count];
+ end = offsets[count];
}
return {
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/pdf.js b/pdf.js
index f279e0cdc..41d7d2a71 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) {
@@ -556,12 +559,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 +628,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 =
@@ -711,9 +713,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;
@@ -723,7 +725,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);
@@ -734,16 +735,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)
@@ -753,8 +756,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) {
@@ -861,11 +862,44 @@ 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)
+ return bytes[i + 15] == 0x02;
+ // scanning until frame tag
+ if (bytes[i] == 0xFF && bytes[i + 1] == 0xC0)
+ break;
+ }
+ 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() {
@@ -985,11 +1019,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;
@@ -1006,7 +1040,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;
@@ -1844,7 +1878,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);
@@ -1983,7 +2017,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)
@@ -2407,11 +2441,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;
@@ -2865,6 +2894,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;
}
}
}
@@ -3077,7 +3108,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)
@@ -3162,7 +3192,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)
@@ -3193,7 +3223,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();
@@ -3326,7 +3356,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;
@@ -3349,7 +3379,7 @@ var Page = (function() {
} catch (e) {
exc = e.toString();
}
- continuation(exc);
+ if (continuation) continuation(exc);
});
};
@@ -3724,8 +3754,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);
}
};
@@ -3735,38 +3763,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',
@@ -3776,168 +3808,177 @@ 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() {
- 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() {
- 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() {
- 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() {
- 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',
@@ -3948,36 +3989,39 @@ 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() {
- 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'
]);
}
};
@@ -4111,7 +4155,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();
@@ -4135,8 +4179,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);
}
}
}
@@ -4155,8 +4200,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
@@ -4194,7 +4240,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;
@@ -4231,7 +4277,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 };
@@ -4248,7 +4294,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') {
@@ -4269,7 +4315,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)
@@ -4333,7 +4379,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)) {
@@ -4653,7 +4702,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) {
@@ -4692,13 +4741,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();
@@ -4893,10 +4942,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;
@@ -4999,10 +5048,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
@@ -5401,7 +5453,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);
@@ -5439,12 +5490,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)
@@ -5750,8 +5801,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';
@@ -5809,15 +5858,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;
@@ -5840,11 +5891,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];
@@ -6035,6 +6086,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;
@@ -6042,7 +6094,6 @@ var PDFImage = (function() {
valueZero = decodeMap[0] ? 1 : 0;
valueOne = decodeMap[1] ? 1 : 0;
}
- var rowComps = width * numComps;
var mask = 0;
var buf = 0;
@@ -6064,8 +6115,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;
@@ -6270,14 +6320,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;
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/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"
}
]
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 @@
+
diff --git a/utils/cffStandardStrings.js b/utils/cffStandardStrings.js
index 4a63ff597..743c60b25 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 2c05a64ba..e17eefa45 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';