]> git.parisson.com Git - pdf.js.git/commitdiff
Add Encodings.js and change the code to generate a CharSet per font, this will allow...
authorVivien Nicolas <21@vingtetun.org>
Wed, 15 Jun 2011 03:40:54 +0000 (05:40 +0200)
committerVivien Nicolas <21@vingtetun.org>
Wed, 15 Jun 2011 03:40:54 +0000 (05:40 +0200)
Encodings.js [new file with mode: 0644]
PDFFont.js
test.html
test.js

diff --git a/Encodings.js b/Encodings.js
new file mode 100644 (file)
index 0000000..d32a399
--- /dev/null
@@ -0,0 +1,1552 @@
+
+var Encodings = {
+  ExpertEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "space",
+    "exclamsmall",
+    "Hungarumlautsmall",
+    null,
+    "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",
+    null,
+    "asuperior",
+    "bsuperior",
+    "centsuperior",
+    "dsuperior",
+    "esuperior",
+    null,
+    null,
+    null,
+    "isuperior",
+    null,
+    null,
+    "lsuperior",
+    "msuperior",
+    "nsuperior",
+    "osuperior",
+    null,
+    null,
+    "rsuperior",
+    "ssuperior",
+    "tsuperior",
+    null,
+    "ff",
+    "fi",
+    "fl",
+    "ffi",
+    "ffl",
+    "parenleftinferior",
+    null,
+    "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",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "exclamdownsmall",
+    "centoldstyle",
+    "Lslashsmall",
+    null,
+    null,
+    "Scaronsmall",
+    "Zcaronsmall",
+    "Dieresissmall",
+    "Brevesmall",
+    "Caronsmall",
+    null,
+    "Dotaccentsmall",
+    null,
+    null,
+    "Macronsmall",
+    null,
+    null,
+    "figuredash",
+    "hypheninferior",
+    null,
+    null,
+    "Ogoneksmall",
+    "Ringsmall",
+    "Cedillasmall",
+    null,
+    null,
+    null,
+    "onequarter",
+    "onehalf",
+    "threequarters",
+    "questiondownsmall",
+    "oneeighth",
+    "threeeighths",
+    "fiveeighths",
+    "seveneighths",
+    "onethird",
+    "twothirds",
+    null,
+    null,
+    "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"
+  ],
+  MacExpertEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    "threequartersemdash",
+    null,
+    "questionsmall",
+    null,
+    null,
+    null,
+    null,
+    "Ethsmall",
+    null,
+    null,
+    "onequarter",
+    "onehalf",
+    "threequarters",
+    "oneeighth",
+    "threeeighths",
+    "fiveeighths",
+    "seveneighths",
+    "onethird",
+    "twothirds",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "ff",
+    "fi",
+    "fl",
+    "ffi",
+    "ffl",
+    "parenleftinferior",
+    null,
+    "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",
+    null,
+    null,
+    "asuperior",
+    "centsuperior",
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    "eightsuperior",
+    "fourinferior",
+    "threeinferior",
+    "sixinferior",
+    "eightinferior",
+    "seveninferior",
+    "Scaronsmall",
+    null,
+    "centinferior",
+    "twoinferior",
+    null,
+    "Dieresissmall",
+    null,
+    "Caronsmall",
+    "osuperior",
+    "fiveinferior",
+    null,
+    "commainferior",
+    "periodinferior",
+    "Yacutesmall",
+    null,
+    "dollarinferior",
+    null,
+    null,
+    "Thornsmall",
+    null,
+    "nineinferior",
+    "zeroinferior",
+    "Zcaronsmall",
+    "AEsmall",
+    "Oslashsmall",
+    "questiondownsmall",
+    "oneinferior",
+    "Lslashsmall",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "Cedillasmall",
+    null,
+    null,
+    null,
+    null,
+    null,
+    "OEsmall",
+    "figuredash",
+    "hyphensuperior",
+    null,
+    null,
+    null,
+    null,
+    "exclamdownsmall",
+    null,
+    "Ydieresissmall",
+    null,
+    "onesuperior",
+    "twosuperior",
+    "threesuperior",
+    "foursuperior",
+    "fivesuperior",
+    "sixsuperior",
+    "sevensuperior",
+    "ninesuperior",
+    "zerosuperior",
+    null,
+    "esuperior",
+    "rsuperior",
+    "tsuperior",
+    null,
+    null,
+    "isuperior",
+    "ssuperior",
+    "dsuperior",
+    null,
+    null,
+    null,
+    null,
+    null,
+    "lsuperior",
+    "Ogoneksmall",
+    "Brevesmall",
+    "Macronsmall",
+    "bsuperior",
+    "nsuperior",
+    "msuperior",
+    "commasuperior",
+    "periodsuperior",
+    "Dotaccentsmall",
+    "Ringsmall",
+    null,
+    null,
+    null,
+    null
+  ],
+  MacRomanEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    "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"
+  ],
+  StandardEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "exclamdown",
+    "cent",
+    "sterling",
+    "fraction",
+    "yen",
+    "florin",
+    "section",
+    "currency",
+    "quotesingle",
+    "quotedblleft",
+    "guillemotleft",
+    "guilsinglleft",
+    "guilsinglright",
+    "fi",
+    "fl",
+    null,
+    "endash",
+    "dagger",
+    "daggerdbl",
+    "periodcentered",
+    null,
+    "paragraph",
+    "bullet",
+    "quotesinglbase",
+    "quotedblbase",
+    "quotedblright",
+    "guillemotright",
+    "ellipsis",
+    "perthousand",
+    null,
+    "questiondown",
+    null,
+    "grave",
+    "acute",
+    "circumflex",
+    "tilde",
+    "macron",
+    "breve",
+    "dotaccent",
+    "dieresis",
+    null,
+    "ring",
+    "cedilla",
+    null,
+    "hungarumlaut",
+    "ogonek",
+    "caron",
+    "emdash",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "AE",
+    null,
+    "ordfeminine",
+    null,
+    null,
+    null,
+    null,
+    "Lslash",
+    "Oslash",
+    "OE",
+    "ordmasculine",
+    null,
+    null,
+    null,
+    null,
+    null,
+    "ae",
+    null,
+    null,
+    null,
+    "dotlessi",
+    null,
+    null,
+    "lslash",
+    "oslash",
+    "oe",
+    "germandbls",
+    null,
+    null,
+    null,
+    null
+  ],
+  WinAnsiEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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"
+  ],
+  zapfDingbatsEncoding: [
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    null,
+    "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",
+    null,
+    "a201",
+    "a183",
+    "a184",
+    "a197",
+    "a185",
+    "a194",
+    "a198",
+    "a186",
+    "a195",
+    "a187",
+    "a188",
+    "a189",
+    "a190",
+    "a191",
+    null
+  ]
+};
+
index fd7e0d86f52ebf4db30591c00a86ea957a6ee48d..ff06c5e4e6ec244463bd3a6785db8ae83b62a3e0 100644 (file)
@@ -40,7 +40,7 @@ var Fonts = {
 
   unicodeFromCode: function fonts_unicodeFromCode(aCode) {
     var active = this._active;
-    if (!active)
+    if (!active || !active.encoding)
       return aCode;
 
     var difference = active.encoding[aCode];
@@ -60,7 +60,7 @@ var Fonts = {
  * As an improvment the last parameter can be replaced by an automatic guess
  * of the font type based on the first byte of the file.
  */
-var Font = function(aName, aFile, aEncoding, aType) {
+var Font = function(aName, aFile, aEncoding, aCharset, aType) {
   this.name = aName;
 
   // If the font has already been decoded simply return
@@ -95,6 +95,7 @@ var Font = function(aName, aFile, aEncoding, aType) {
   Fonts[aName] = {
     data: this.font,
     encoding: aEncoding,
+    charset: aCharset ? aCharset.slice() : null,
     loading: true
   }
 
@@ -125,10 +126,10 @@ Font.prototype = {
     // Actually there is not event when a font has finished downloading so
     // the following tons of code are a dirty hack to 'guess' when a font is
     // ready
-    var debug = false;
+    var debug = true;
 
     var canvas = document.createElement("canvas");
-    var style = "position:absolute; top: " + 
+    var style = "border: 1px solid black; position:absolute; top: " + 
                 (debug ? (80 * fontCount) : "-200") + "px; left: 100px;";
     canvas.setAttribute("style", style);
     canvas.setAttribute("width", 100);
@@ -136,40 +137,19 @@ Font.prototype = {
     document.body.appendChild(canvas);
 
     // Retrieve font charset
-    var charset = null;
-    var page = pdfDocument.getPage(pageNum);
-    var xref = page.xref;
-
-    var fonts = page.fonts;
-    fonts.forEach(function(fontKey, fontData) {
-      var descriptor = xref.fetch(fontData.get("FontDescriptor"));
-      var name = descriptor.get("FontName").toString();
-      var font = Fonts[name.replace("+", "_")];
-      if (font && font.loading && name == fontName.replace("_", "+")) {
-        charset = descriptor.get("CharSet");
-        charset = charset ? charset.split("/") : null;
-        return;
-      }
-    });
-
-    // Warn if the charset is not found, this is likely 
-    var testCharset = charset || [];
-    if (!charset) {
-      warn("No charset found for: " + fontName);
-    } else {
-      // if the charset is too small make it repeat a few times
-      var count = 30;
-      while (count-- && testCharset.length <= 30)
-        testCharset = testCharset.concat(charset.slice());
-    }
+    var charset = Fonts[fontName].charset || [];
+    // if the charset is too small make it repeat a few times
+    var count = 30;
+    while (count-- && charset.length <= 30)
+     charset = charset.concat(charset.slice());
 
     // Get the font size canvas think it will be
     var ctx = canvas.getContext("2d");
     var testString = "";
-    for (var i = 0; i < testCharset.length; i++) {
-      var unicode = new Number("0x" + GlyphsUnicode[testCharset[i]]);
+    for (var i = 0; i < charset.length; i++) {
+      var unicode = new Number("0x" + GlyphsUnicode[charset[i]]);
       if (!unicode)
-        error("Unicode for " + testCharset[i] + " is has not been found in the glyphs list");
+        error("Unicode for " + charset[i] + " is has not been found in the glyphs list");
       testString += String.fromCharCode(unicode);
     }
     ctx.font = "20px " + fontName + ", Symbol";
index 8d649a14964881fa4701d02c18d1a386ef440abe..d18f9599b9075adfa0dd4ea42930857e290a009e 100644 (file)
--- a/test.html
+++ b/test.html
@@ -7,6 +7,7 @@
         <script type="text/javascript" src="test.js"></script>
         <script type="text/javascript" src="cffStandardStrings.js"></script>
         <script type="text/javascript" src="glyphlist.js"></script>
+        <script type="text/javascript" src="Encodings.js"></script>
         <script type="text/javascript" src="PDFFont.js"></script>
   </head>
 
diff --git a/test.js b/test.js
index 2b99dc1361204d257454188e9ff09089a5c458b4..1dffac549cd83e2249f2aa464406166c3b9d0fcd 100644 (file)
--- a/test.js
+++ b/test.js
@@ -93,17 +93,34 @@ function displayPage(num) {
             if (fontDict.has("Encoding")) {
               var encoding = xref.fetchIfRef(fontDict.get("Encoding"));
               if (IsDict(encoding)) {
+
+                // Build an map between codes and glyphs
                 var differences = encoding.get("Differences");
                 var index = 0;
                 for (var j = 0; j < differences.length; j++) {
                   var data = differences[j];
                   IsNum(data) ? index = data : encodingMap[index++] = data;
                 }
+
+                // Get the font charset
+                var charset = descriptor.get("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 charset = [];
+                for (var j = 0; j < widths.length; j++) {
+                  var index = widths[j];
+                  if (index)
+                    charset.push(encoding[j + firstchar]);
+                }
               }
             }
 
             var subtype = fontDict.get("Subtype").name;
-            new Font(fontName, fontFile, encodingMap, subtype);
+            new Font(fontName, fontFile, encodingMap, charset, subtype);
             return fontsReady = false;
         } else if (font.loading) {
             return fontsReady = false;