Merge remote branch 'upstream/master'

This commit is contained in:
Vivien Nicolas 2011-06-18 21:53:52 +02:00
commit a53736b732
9 changed files with 295 additions and 1603 deletions

File diff suppressed because it is too large Load Diff

View File

@ -30,6 +30,7 @@ var fontCount = 0;
*/
var Fonts = {
_active: null,
get active() {
return this._active;
},
@ -38,12 +39,34 @@ var Fonts = {
this._active = this[aName];
},
unicodeFromCode: function fonts_unicodeFromCode(aCode) {
chars2Unicode: function(chars) {
var active = this._active;
if (!active || !active.properties.encoding)
return aCode;
if (!active)
return chars;
return GlyphsUnicode[active.properties.encoding[aCode]];
// if we translated this string before, just grab it from the cache
var ret = active.cache[chars];
if (ret)
return ret;
// translate the string using the font's encoding
var encoding = active.properties.encoding;
if (!encoding)
return chars;
var ret = "";
for (var i = 0; i < chars.length; ++i) {
var ch = chars.charCodeAt(i);
var uc = encoding[ch];
if (uc instanceof Name) // we didn't convert the glyph yet
uc = encoding[ch] = GlyphsUnicode[uc.name];
ret += String.fromCharCode(uc);
}
// enter the translated string into the cache
active.cache[chars] = ret;
return ret;
}
};
@ -83,7 +106,8 @@ var Font = function(aName, aFile, aProperties) {
encoding: {},
charset: null
},
loading: false
loading: false,
cache: Object.create(null)
};
this.mimetype = "font/ttf";
@ -99,7 +123,8 @@ var Font = function(aName, aFile, aProperties) {
Fonts[aName] = {
data: this.font,
properties: aProperties,
loading: true
loading: true,
cache: Object.create(null)
}
// Attach the font to the document
@ -1076,6 +1101,64 @@ var Type1Parser = function() {
}
};
const CFFStrings = [
".notdef","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","onesuperior","logicalnot","mu","trademark",
"Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree",
"thorn","threequarters","twosuperior","registered","minus","eth","multiply",
"threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring",
"Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute",
"Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis",
"Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute",
"Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde",
"ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex",
"idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve",
"otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute",
"ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle",
"dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior",
"parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle",
"twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle",
"sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior",
"threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior",
"centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior",
"nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","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","questiondownsmall",
"oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds",
"zerosuperior","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","Odieresissmall","OEsmall",
"Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall",
"Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002",
"001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"
];
/**
* Take a Type1 file as input and wrap it into a Compact Font Format (CFF)
* wrapping Type2 charstrings.

View File

@ -4282,8 +4282,8 @@ var GlyphsUnicode = {
zukatakana: 0x30BA
};
// Add missing glyphs from the original Adobe's list
GlyphsUnicode["angbracketleft"] = 0x3008;
GlyphsUnicode["angbracketright"] = 0x3009;
GlyphsUnicode["circlecopyrt"] = 0x00A9;
// Add missing glyphs from the Adobe's original list
GlyphsUnicode.angbracketleft = 0x3008;
GlyphsUnicode.angbracketright = 0x3009;
GlyphsUnicode.circlecopyrt = 0x00A9;

237
pdf.js
View File

@ -5,7 +5,6 @@ var ERRORS = 0, WARNINGS = 1, TODOS = 5;
var verbosity = WARNINGS;
function log(msg) {
msg = msg.toString ? msg.toString() : msg;
if (console && console.log)
console.log(msg);
else if (print)
@ -523,9 +522,6 @@ var Name = (function() {
}
constructor.prototype = {
toString: function() {
return this.name;
}
};
return constructor;
@ -537,9 +533,6 @@ var Cmd = (function() {
}
constructor.prototype = {
toString: function() {
return this.cmd;
}
};
return constructor;
@ -566,12 +559,6 @@ var Dict = (function() {
forEach: function(aCallback) {
for (var key in this.map)
aCallback(key, this.map[key]);
},
toString: function() {
var keys = [];
for (var key in this.map)
keys.push(key);
return "Dict with " + keys.length + " keys: " + keys;
}
};
@ -1615,6 +1602,180 @@ var CanvasExtraState = (function() {
return constructor;
})();
const 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","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","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","Ecircumflexsmall",
"Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall",
"Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall",
"Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall",
"Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall",
"Ydieresissmall"
]);
},
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",
"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",,,
]);
},
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"
]);
},
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",,,
]);
},
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"
]);
},
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"
]);
}
};
var CanvasGraphics = (function() {
function constructor(canvasCtx) {
this.ctx = canvasCtx;
@ -1726,12 +1887,14 @@ var CanvasGraphics = (function() {
constructor.prototype = {
translateFont: function(fontDict, xref, resources) {
var descriptor = xref.fetch(fontDict.get("FontDescriptor"));
var fontName = descriptor.get("FontName").name;
fontName = fontName.replace("+", "_");
var fontName = descriptor.get("FontName");
assertWellFormed(IsName(fontName), "invalid font name");
fontName = fontName.name.replace("+", "_");
var fontFile = descriptor.get2("FontFile", "FontFile2");
if (!fontFile)
errort("FontFile not found for font: " + fontName);
error("FontFile not found for font: " + fontName);
fontFile = xref.fetchIfRef(fontFile);
// Generate the custom cmap of the font if needed
@ -1749,36 +1912,42 @@ var CanvasGraphics = (function() {
// Get the font charset if any
var charset = descriptor.get("CharSet");
if (charset)
charset = charset.split("/");
assertWellFormed(IsString(charset), "invalid charset");
charset = charset.split("/");
} else if (IsName(encoding)) {
var encoding = Encodings[encoding];
var widths = xref.fetchIfRef(fontDict.get("Widths"));
var firstchar = xref.fetchIfRef(fontDict.get("FirstChar"));
var encoding = Encodings[encoding.name];
if (!encoding)
error("Unknown font encoding");
var widths = xref.fetchIfRef(fontDict.get("Widths"));
var firstChar = xref.fetchIfRef(fontDict.get("FirstChar"));
assertWellFormed(IsArray(widths) && IsInt(firstChar),
"invalid font Widths or FirstChar");
var charset = [];
for (var j = 0; j < widths.length; j++) {
var index = widths[j];
if (!index)
continue;
charset.push(encoding[j + firstchar]);
if (widths[j])
charset.push(encoding[j + firstChar]);
}
}
}
var subType = fontDict.get("Subtype");
var bbox = descriptor.get("FontBBox");
assertWellFormed(IsName(subType) && IsArray(bbox),
"invalid font Subtype or FontBBox");
var properties = {
type: fontDict.get("Subtype").name,
type: subType.name,
encoding: encodingMap,
charset: charset,
bbox: descriptor.get("FontBBox")
bbox: bbox
};
return {
name: fontName,
file: fontFile,
properties: properties
file: fontFile,
properties: properties
}
},
@ -2063,13 +2232,7 @@ var CanvasGraphics = (function() {
this.ctx.translate(0, 2 * this.current.y);
this.ctx.scale(1, -1);
this.ctx.transform.apply(this.ctx, this.current.textMatrix);
// Replace characters code by glyphs code
var glyphs = [];
for (var i = 0; i < text.length; i++)
glyphs[i] = String.fromCharCode(Fonts.unicodeFromCode(text[i].charCodeAt(0)));
this.ctx.fillText(glyphs.join(""), this.current.x, this.current.y);
this.ctx.fillText(Fonts.chars2Unicode(text), this.current.x, this.current.y);
this.current.x += this.ctx.measureText(text).width;
this.ctx.restore();

View File

@ -1,13 +1,11 @@
<html>
<head>
<title>Simple pdf.js page viewer</title>
<link rel="stylesheet" href="test.css"></link>
<link rel="stylesheet" href="viewer.css"></link>
<script type="text/javascript" src="test.js"></script>
<script type="text/javascript" src="viewer.js"></script>
<script type="text/javascript" src="pdf.js"></script>
<script type="text/javascript" src="fonts.js"></script>
<script type="text/javascript" src="cffStandardStrings.js"></script>
<script type="text/javascript" src="Encodings.js"></script>
<script type="text/javascript" src="glyphlist.js"></script>
</head>

View File