|
|
|
@ -22,8 +22,8 @@ if (typeof PDFJS === 'undefined') {
@@ -22,8 +22,8 @@ if (typeof PDFJS === 'undefined') {
|
|
|
|
|
(typeof window !== 'undefined' ? window : this).PDFJS = {}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
PDFJS.version = '1.0.629'; |
|
|
|
|
PDFJS.build = 'a353f88'; |
|
|
|
|
PDFJS.version = '1.0.633'; |
|
|
|
|
PDFJS.build = '4ce1b1e'; |
|
|
|
|
|
|
|
|
|
(function pdfjsWrapper() { |
|
|
|
|
// Use strict in our context only - users might not want it
|
|
|
|
@ -16183,12 +16183,13 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -16183,12 +16183,13 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { |
|
|
|
|
var cmapObj = toUnicode; |
|
|
|
|
var cmap, cmapObj = toUnicode; |
|
|
|
|
if (isName(cmapObj)) { |
|
|
|
|
return CMapFactory.create(cmapObj, |
|
|
|
|
cmap = CMapFactory.create(cmapObj, |
|
|
|
|
{ url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null).getMap(); |
|
|
|
|
return new ToUnicodeMap(cmap); |
|
|
|
|
} else if (isStream(cmapObj)) { |
|
|
|
|
var cmap = CMapFactory.create(cmapObj, |
|
|
|
|
cmap = CMapFactory.create(cmapObj, |
|
|
|
|
{ url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null).getMap(); |
|
|
|
|
// Convert UTF-16BE
|
|
|
|
|
// NOTE: cmap can be a sparse array, so use forEach instead of for(;;)
|
|
|
|
@ -16207,7 +16208,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -16207,7 +16208,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|
|
|
|
} |
|
|
|
|
cmap[i] = String.fromCharCode.apply(String, str); |
|
|
|
|
}); |
|
|
|
|
return cmap; |
|
|
|
|
return new ToUnicodeMap(cmap); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
}, |
|
|
|
@ -20554,6 +20555,68 @@ var Glyph = (function GlyphClosure() {
@@ -20554,6 +20555,68 @@ var Glyph = (function GlyphClosure() {
|
|
|
|
|
return Glyph; |
|
|
|
|
})(); |
|
|
|
|
|
|
|
|
|
var ToUnicodeMap = (function ToUnicodeMapClosure() { |
|
|
|
|
function ToUnicodeMap(cmap) { |
|
|
|
|
// The elements of this._map can be integers or strings, depending on how
|
|
|
|
|
// |cmap| was created.
|
|
|
|
|
this._map = cmap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
ToUnicodeMap.prototype = { |
|
|
|
|
get length() { |
|
|
|
|
return this._map.length; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
forEach: function(callback) { |
|
|
|
|
for (var charCode in this._map) { |
|
|
|
|
callback(charCode, this._map[charCode].charCodeAt(0)); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
get: function(i) { |
|
|
|
|
return this._map[i]; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
charCodeOf: function(v) { |
|
|
|
|
return this._map.indexOf(v); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ToUnicodeMap; |
|
|
|
|
})(); |
|
|
|
|
|
|
|
|
|
var IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() { |
|
|
|
|
function IdentityToUnicodeMap(firstChar, lastChar) { |
|
|
|
|
this.firstChar = firstChar; |
|
|
|
|
this.lastChar = lastChar; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityToUnicodeMap.prototype = { |
|
|
|
|
get length() { |
|
|
|
|
error('should not access .length'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
forEach: function(callback) { |
|
|
|
|
for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) { |
|
|
|
|
callback(i, i); |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
get: function(i) { |
|
|
|
|
if (this.firstChar <= i && i <= this.lastChar) { |
|
|
|
|
return String.fromCharCode(i); |
|
|
|
|
} |
|
|
|
|
return undefined; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
charCodeOf: function(v) { |
|
|
|
|
error('should not call .charCodeOf'); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return IdentityToUnicodeMap; |
|
|
|
|
})(); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 'Font' is the class the outside world should use, it encapsulate all the font |
|
|
|
|
* decoding logics whatever type it is (assuming the font type is supported). |
|
|
|
@ -20597,9 +20660,7 @@ var Font = (function FontClosure() {
@@ -20597,9 +20660,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; |
|
|
|
|
this.fontMatrix = properties.fontMatrix; |
|
|
|
|
|
|
|
|
|
var unicode = this.buildToUnicode(properties); |
|
|
|
|
this.toUnicode = properties.toUnicode = unicode.toUnicode; |
|
|
|
|
this.isIdentityUnicode = properties.isIdentityUnicode = unicode.isIdentity; |
|
|
|
|
this.toUnicode = properties.toUnicode = this.buildToUnicode(properties); |
|
|
|
|
|
|
|
|
|
this.toFontChar = []; |
|
|
|
|
|
|
|
|
@ -20652,7 +20713,7 @@ var Font = (function FontClosure() {
@@ -20652,7 +20713,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
map[+code] = GlyphMapForStandardFonts[code]; |
|
|
|
|
} |
|
|
|
|
this.toFontChar = map; |
|
|
|
|
this.toUnicode = map; |
|
|
|
|
this.toUnicode = new ToUnicodeMap(map); |
|
|
|
|
} else if (/Symbol/i.test(fontName)) { |
|
|
|
|
var symbols = Encodings.SymbolSetEncoding; |
|
|
|
|
for (charCode in symbols) { |
|
|
|
@ -20671,15 +20732,14 @@ var Font = (function FontClosure() {
@@ -20671,15 +20732,14 @@ var Font = (function FontClosure() {
|
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
var unicodeCharCode, notCidFont = (type.indexOf('CIDFontType') === -1); |
|
|
|
|
for (charCode in this.toUnicode) { |
|
|
|
|
unicodeCharCode = this.toUnicode[charCode].charCodeAt(0); |
|
|
|
|
this.toUnicode.forEach(function(charCode, unicodeCharCode) { |
|
|
|
|
if (notCidFont) { |
|
|
|
|
glyphName = (properties.differences[charCode] || |
|
|
|
|
properties.defaultEncoding[charCode]); |
|
|
|
|
unicodeCharCode = (GlyphsUnicode[glyphName] || unicodeCharCode); |
|
|
|
|
} |
|
|
|
|
this.toFontChar[charCode] = unicodeCharCode; |
|
|
|
|
} |
|
|
|
|
}.bind(this)); |
|
|
|
|
} |
|
|
|
|
this.loadedName = fontName.split('-')[0]; |
|
|
|
|
this.loading = false; |
|
|
|
@ -20892,7 +20952,8 @@ var Font = (function FontClosure() {
@@ -20892,7 +20952,8 @@ var Font = (function FontClosure() {
|
|
|
|
|
function adjustMapping(charCodeToGlyphId, properties) { |
|
|
|
|
var toUnicode = properties.toUnicode; |
|
|
|
|
var isSymbolic = !!(properties.flags & FontFlags.Symbolic); |
|
|
|
|
var isIdentityUnicode = properties.isIdentityUnicode; |
|
|
|
|
var isIdentityUnicode = |
|
|
|
|
properties.toUnicode instanceof IdentityToUnicodeMap; |
|
|
|
|
var isCidFontType2 = (properties.type === 'CIDFontType2'); |
|
|
|
|
var newMap = Object.create(null); |
|
|
|
|
var toFontChar = []; |
|
|
|
@ -20905,8 +20966,8 @@ var Font = (function FontClosure() {
@@ -20905,8 +20966,8 @@ var Font = (function FontClosure() {
|
|
|
|
|
// First try to map the value to a unicode position if a non identity map
|
|
|
|
|
// was created.
|
|
|
|
|
if (!isIdentityUnicode) { |
|
|
|
|
if (toUnicode[originalCharCode] !== undefined) { |
|
|
|
|
var unicode = toUnicode[fontCharCode]; |
|
|
|
|
if (toUnicode.get(originalCharCode) !== undefined) { |
|
|
|
|
var unicode = toUnicode.get(fontCharCode); |
|
|
|
|
// TODO: Try to map ligatures to the correct spot.
|
|
|
|
|
if (unicode.length === 1) { |
|
|
|
|
fontCharCode = unicode.charCodeAt(0); |
|
|
|
@ -22245,7 +22306,7 @@ var Font = (function FontClosure() {
@@ -22245,7 +22306,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
|
|
|
|
|
var dupFirstEntry = false; |
|
|
|
|
if (properties.type === 'CIDFontType2' && properties.toUnicode && |
|
|
|
|
properties.toUnicode[0] > '\u0000') { |
|
|
|
|
properties.toUnicode.get(0) > '\u0000') { |
|
|
|
|
// oracle's defect (see 3427), duplicating first entry
|
|
|
|
|
dupFirstEntry = true; |
|
|
|
|
numGlyphs++; |
|
|
|
@ -22691,19 +22752,12 @@ var Font = (function FontClosure() {
@@ -22691,19 +22752,12 @@ var Font = (function FontClosure() {
|
|
|
|
|
/** |
|
|
|
|
* Builds a char code to unicode map based on section 9.10 of the spec. |
|
|
|
|
* @param {Object} properties Font properties object. |
|
|
|
|
* @return {Object} Has two properties: 'toUnicode' which maps char codes to |
|
|
|
|
* unicode (string) values and 'isIdentity' which is true if an identity map |
|
|
|
|
* is used. |
|
|
|
|
* @return {Object} A ToUnicodeMap object. |
|
|
|
|
*/ |
|
|
|
|
buildToUnicode: function Font_buildToUnicode(properties) { |
|
|
|
|
var map = { |
|
|
|
|
isIdentity: false, |
|
|
|
|
toUnicode: null |
|
|
|
|
}; |
|
|
|
|
// Section 9.10.2 Mapping Character Codes to Unicode Values
|
|
|
|
|
if (properties.toUnicode && properties.toUnicode.length !== 0) { |
|
|
|
|
map.toUnicode = properties.toUnicode; |
|
|
|
|
return map; |
|
|
|
|
return properties.toUnicode; |
|
|
|
|
} |
|
|
|
|
// According to the spec if the font is a simple font we should only map
|
|
|
|
|
// to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or
|
|
|
|
@ -22768,8 +22822,7 @@ var Font = (function FontClosure() {
@@ -22768,8 +22822,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
} |
|
|
|
|
toUnicode[charcode] = String.fromCharCode(GlyphsUnicode[glyphName]); |
|
|
|
|
} |
|
|
|
|
map.toUnicode = toUnicode; |
|
|
|
|
return map; |
|
|
|
|
return new ToUnicodeMap(toUnicode); |
|
|
|
|
} |
|
|
|
|
// If the font is a composite font that uses one of the predefined CMaps
|
|
|
|
|
// listed in Table 118 (except Identity–H and Identity–V) or whose
|
|
|
|
@ -22812,19 +22865,12 @@ var Font = (function FontClosure() {
@@ -22812,19 +22865,12 @@ var Font = (function FontClosure() {
|
|
|
|
|
ucs2.charCodeAt(1)); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
map.toUnicode = toUnicode; |
|
|
|
|
return map; |
|
|
|
|
return new ToUnicodeMap(toUnicode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// The viewer's choice, just use an identity map.
|
|
|
|
|
toUnicode = []; |
|
|
|
|
var firstChar = properties.firstChar, lastChar = properties.lastChar; |
|
|
|
|
for (var i = firstChar; i <= lastChar; i++) { |
|
|
|
|
toUnicode[i] = String.fromCharCode(i); |
|
|
|
|
} |
|
|
|
|
map.isIdentity = true; |
|
|
|
|
map.toUnicode = toUnicode; |
|
|
|
|
return map; |
|
|
|
|
return new IdentityToUnicodeMap(properties.firstChar, |
|
|
|
|
properties.lastChar); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
get spaceWidth() { |
|
|
|
@ -22852,7 +22898,7 @@ var Font = (function FontClosure() {
@@ -22852,7 +22898,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
} |
|
|
|
|
// ... via toUnicode map
|
|
|
|
|
if (!charcode && 'toUnicode' in this) { |
|
|
|
|
charcode = this.toUnicode.indexOf(glyphUnicode); |
|
|
|
|
charcode = this.toUnicode.charCodeOf(glyphUnicode); |
|
|
|
|
} |
|
|
|
|
// setting it to unicode if negative or undefined
|
|
|
|
|
if (charcode <= 0) { |
|
|
|
@ -22882,7 +22928,7 @@ var Font = (function FontClosure() {
@@ -22882,7 +22928,7 @@ var Font = (function FontClosure() {
|
|
|
|
|
width = isNum(width) ? width : this.defaultWidth; |
|
|
|
|
var vmetric = this.vmetrics && this.vmetrics[widthCode]; |
|
|
|
|
|
|
|
|
|
var unicode = this.toUnicode[charcode] || charcode; |
|
|
|
|
var unicode = this.toUnicode.get(charcode) || charcode; |
|
|
|
|
if (typeof unicode === 'number') { |
|
|
|
|
unicode = String.fromCharCode(unicode); |
|
|
|
|
} |
|
|
|
|