From b353a7b37bc2f2daacf50515ebcf5e4de1b45cd6 Mon Sep 17 00:00:00 2001
From: Kalervo Kujala <kkujala@com>
Date: Mon, 10 Oct 2011 23:46:43 +0300
Subject: [PATCH 1/8] Make test_slave.html as valid html5.

Fix also warnings in the error console that appear from a test run.
---
 test/driver.js       |  2 +-
 test/test_slave.html | 40 +++++++++++++++++++++++-----------------
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/test/driver.js b/test/driver.js
index 4bc14bf15..7f5aef733 100644
--- a/test/driver.js
+++ b/test/driver.js
@@ -178,7 +178,7 @@ function snapshotCurrentPage(task, failure) {
 function sendQuitRequest() {
   var r = new XMLHttpRequest();
   r.open('POST', '/tellMeToQuit?path=' + escape(appPath), false);
-  r.send('');
+  r.send(null);
 }
 
 function quitApp() {
diff --git a/test/test_slave.html b/test/test_slave.html
index 9d8185bb9..51e779c87 100644
--- a/test/test_slave.html
+++ b/test/test_slave.html
@@ -1,21 +1,27 @@
+<!DOCTYPE html>
 <html>
-<head>
-  <title>pdf.js test slave</title>
-  <style type="text/css"></style>
-  <script type="text/javascript" src="/pdf.js"></script>
-  <script type="text/javascript" src="/fonts.js"></script>
-  <script type="text/javascript" src="/crypto.js"></script>
-  <script type="text/javascript" src="/glyphlist.js"></script>
-  <script type="text/javascript" src="/metrics.js"></script>
-  <script type="text/javascript" src="/charsets.js"></script>
-  <script type="text/javascript" src="/cidmaps.js"></script>
-  <script type="text/javascript" src="driver.js"></script>
-</head>
+  <head>
+    <title>pdf.js test slave</title>
+    <style type="text/css"></style>
+    <script type="text/javascript" src="/pdf.js"></script>
+    <script type="text/javascript" src="/fonts.js"></script>
+    <script type="text/javascript" src="/crypto.js"></script>
+    <script type="text/javascript" src="/glyphlist.js"></script>
+    <script type="text/javascript" src="/metrics.js"></script>
+    <script type="text/javascript" src="/charsets.js"></script>
+    <script type="text/javascript" src="/cidmaps.js"></script>
+    <script type="text/javascript" src="driver.js"></script>
+  </head>
 
-<body onload="load();">
-  <pre style="width:800; height:800; overflow: scroll;"id="stdout"></pre>
-  <p>Inflight requests: <span id="inFlightCount"></span></p>
-  <div id="content-end"><!-- cleanup() guard --></div>
-</body>
+  <body>
+    <pre style="width:800px; height:800px; overflow:scroll;" id="stdout"></pre>
+    <p>Inflight requests: <span id="inFlightCount"></span></p>
+    <div id="content-end"></div>
 
+    <script type="text/javascript">
+      'use strict';
+      load();
+    </script>
+  </body>
 </html>
+

From 04e467793b79f8403d499748dc33f1f9f58ee09f Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Mon, 10 Oct 2011 21:14:40 -0500
Subject: [PATCH 2/8] Fixing standard font name resolution (#649)

---
 fonts.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fonts.js b/fonts.js
index 2ab3a90b7..7aef5ec92 100644
--- a/fonts.js
+++ b/fonts.js
@@ -441,7 +441,7 @@ var Font = (function Font() {
     if (!file) {
       // The file data is not specified. Trying to fix the font name
       // to be used with the canvas.font.
-      var fontName = stdFontMap[name] || name.replace('_', '-');
+      var fontName = stdFontMap[name.replace('-', '_')] || name.replace('_', '-');
       this.bold = (fontName.search(/bold/gi) != -1);
       this.italic = (fontName.search(/oblique/gi) != -1) ||
                     (fontName.search(/italic/gi) != -1);

From 6d6c5f94ccd94564177014ec5b494674d3edb1f1 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Mon, 10 Oct 2011 22:35:17 -0500
Subject: [PATCH 3/8] Fixing interpolation function (#549)

---
 pdf.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pdf.js b/pdf.js
index 847ed2ff4..79310b149 100644
--- a/pdf.js
+++ b/pdf.js
@@ -6797,11 +6797,11 @@ var PDFFunction = (function pdfFunction() {
         diff.push(c1[i] - c0[i]);
 
       this.func = function pdfFunctionConstructInterpolatedFunc(args) {
-        var x = args[0];
+        var x = n == 1 ? args[0] : Math.pow(args[0], n);
 
         var out = [];
         for (var j = 0; j < length; ++j)
-          out.push(c0[j] + (x^n * diff[i]));
+          out.push(c0[j] + (x * diff[j]));
 
         return out;
       };

From 1f532e6edbda223144e4f7558f352661f7c2c514 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Mon, 10 Oct 2011 22:40:43 -0500
Subject: [PATCH 4/8] Long line fix

---
 fonts.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fonts.js b/fonts.js
index 7aef5ec92..1c0039264 100644
--- a/fonts.js
+++ b/fonts.js
@@ -441,7 +441,8 @@ var Font = (function Font() {
     if (!file) {
       // The file data is not specified. Trying to fix the font name
       // to be used with the canvas.font.
-      var fontName = stdFontMap[name.replace('-', '_')] || name.replace('_', '-');
+      var fontName = stdFontMap[name.replace('-', '_')] ||
+                     name.replace('_', '-');
       this.bold = (fontName.search(/bold/gi) != -1);
       this.italic = (fontName.search(/oblique/gi) != -1) ||
                     (fontName.search(/italic/gi) != -1);

From 74d80401ccf448ed40bc31c886287aaab2fc55b4 Mon Sep 17 00:00:00 2001
From: Artur Adib <arturadib@gmail.com>
Date: Tue, 11 Oct 2011 15:22:33 -0400
Subject: [PATCH 5/8] 'make web' now also bundles extension (xpi)

---
 Makefile | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index a9cd2793f..ebffb374c 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,9 @@ BUILD_DIR := build
 DEFAULT_BROWSERS := resources/browser_manifests/browser_manifest.json
 DEFAULT_TESTS := test_manifest.json
 
+EXTENSION_SRC := ./extensions/firefox
+EXTENSION_NAME := pdf.js.xpi
+
 # Let folks define custom rules for their clones.
 -include local.mk
 
@@ -103,14 +106,17 @@ lint:
 # TODO: Use the Closure compiler to optimize the pdf.js files.
 #
 GH_PAGES = $(BUILD_DIR)/gh-pages
-web: | compiler pages-repo \
+web: | extension compiler pages-repo \
 	$(addprefix $(GH_PAGES)/, $(PDF_JS_FILES)) \
 	$(addprefix $(GH_PAGES)/, $(wildcard web/*.*)) \
-	$(addprefix $(GH_PAGES)/, $(wildcard web/images/*.*))
+	$(addprefix $(GH_PAGES)/, $(wildcard web/images/*.*)) \
+	$(addprefix $(GH_PAGES)/, $(wildcard $(EXTENSION_SRC)/*.xpi))
 
 	@cp $(GH_PAGES)/web/index.html.template $(GH_PAGES)/index.html;
 	@cd $(GH_PAGES); git add -A;
+	@echo
 	@echo "Website built in $(GH_PAGES)."
+	@echo "Don't forget to cd into $(GH_PAGES)/ and issue 'git commit' to push changes."
 
 # make pages-repo
 #
@@ -126,6 +132,7 @@ pages-repo: | $(BUILD_DIR)
 	fi;
 	@mkdir -p $(GH_PAGES)/web;
 	@mkdir -p $(GH_PAGES)/web/images;
+	@mkdir -p $(GH_PAGES)/$(EXTENSION_SRC);
 
 $(GH_PAGES)/%.js: %.js
 	@cp $< $@
@@ -136,6 +143,9 @@ $(GH_PAGES)/web/%: web/%
 $(GH_PAGES)/web/images/%: web/images/%
 	@cp $< $@
 
+$(GH_PAGES)/$(EXTENSION_SRC)/%: $(EXTENSION_SRC)/%
+	@cp -R $< $@
+
 # # make compiler
 # #
 # # This target downloads the Closure compiler, and places it in the
@@ -149,13 +159,11 @@ $(GH_PAGES)/web/images/%: web/images/%
 #   curl $(COMPILER_URL) > $(BUILD_DIR)/compiler.zip;
 #   cd $(BUILD_DIR); unzip compiler.zip compiler.jar;
 
-# make firefox-extension
+# make extension
 #
 # This target produce a restartless firefox extension containing a
 # copy of the pdf.js source.
 CONTENT_DIR := content
-EXTENSION_SRC := ./extensions/firefox
-EXTENSION_NAME := pdf.js.xpi
 PDF_WEB_FILES = \
 	web/images \
 	web/compatibility.js \

From e745114a5e13b5a6e842d502cfd2bddba6381f03 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Tue, 11 Oct 2011 19:38:20 -0500
Subject: [PATCH 6/8] Making the normalized name same in pdf.js and fonts.js

---
 fonts.js | 83 ++++++++++++++++++++++++++++----------------------------
 pdf.js   |  2 +-
 2 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/fonts.js b/fonts.js
index 1c0039264..120e5111c 100644
--- a/fonts.js
+++ b/fonts.js
@@ -26,53 +26,53 @@ var kHintingEnabled = false;
  */
 var stdFontMap = {
   'ArialNarrow': 'Helvetica',
-  'ArialNarrow_Bold': 'Helvetica-Bold',
-  'ArialNarrow_BoldItalic': 'Helvetica-BoldOblique',
-  'ArialNarrow_Italic': 'Helvetica-Oblique',
+  'ArialNarrow-Bold': 'Helvetica-Bold',
+  'ArialNarrow-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialNarrow-Italic': 'Helvetica-Oblique',
   'ArialBlack': 'Helvetica',
-  'ArialBlack_Bold': 'Helvetica-Bold',
-  'ArialBlack_BoldItalic': 'Helvetica-BoldOblique',
-  'ArialBlack_Italic': 'Helvetica-Oblique',
+  'ArialBlack-Bold': 'Helvetica-Bold',
+  'ArialBlack-BoldItalic': 'Helvetica-BoldOblique',
+  'ArialBlack-Italic': 'Helvetica-Oblique',
   'Arial': 'Helvetica',
-  'Arial_Bold': 'Helvetica-Bold',
-  'Arial_BoldItalic': 'Helvetica-BoldOblique',
-  'Arial_Italic': 'Helvetica-Oblique',
-  'Arial_BoldItalicMT': 'Helvetica-BoldOblique',
-  'Arial_BoldMT': 'Helvetica-Bold',
-  'Arial_ItalicMT': 'Helvetica-Oblique',
+  'Arial-Bold': 'Helvetica-Bold',
+  'Arial-BoldItalic': 'Helvetica-BoldOblique',
+  'Arial-Italic': 'Helvetica-Oblique',
+  'Arial-BoldItalicMT': 'Helvetica-BoldOblique',
+  'Arial-BoldMT': 'Helvetica-Bold',
+  'Arial-ItalicMT': 'Helvetica-Oblique',
   'ArialMT': 'Helvetica',
-  'Courier_Bold': 'Courier-Bold',
-  'Courier_BoldItalic': 'Courier-BoldOblique',
-  'Courier_Italic': 'Courier-Oblique',
+  'Courier-Bold': 'Courier-Bold',
+  'Courier-BoldItalic': 'Courier-BoldOblique',
+  'Courier-Italic': 'Courier-Oblique',
   'CourierNew': 'Courier',
-  'CourierNew_Bold': 'Courier-Bold',
-  'CourierNew_BoldItalic': 'Courier-BoldOblique',
-  'CourierNew_Italic': 'Courier-Oblique',
-  'CourierNewPS_BoldItalicMT': 'Courier-BoldOblique',
-  'CourierNewPS_BoldMT': 'Courier-Bold',
-  'CourierNewPS_ItalicMT': 'Courier-Oblique',
+  'CourierNew-Bold': 'Courier-Bold',
+  'CourierNew-BoldItalic': 'Courier-BoldOblique',
+  'CourierNew-Italic': 'Courier-Oblique',
+  'CourierNewPS-BoldItalicMT': 'Courier-BoldOblique',
+  'CourierNewPS-BoldMT': 'Courier-Bold',
+  'CourierNewPS-ItalicMT': 'Courier-Oblique',
   'CourierNewPSMT': 'Courier',
-  'Helvetica_Bold': 'Helvetica-Bold',
-  'Helvetica_BoldItalic': 'Helvetica-BoldOblique',
-  'Helvetica_Italic': 'Helvetica-Oblique',
-  'Symbol_Bold': 'Symbol',
-  'Symbol_BoldItalic': 'Symbol',
-  'Symbol_Italic': 'Symbol',
+  'Helvetica-Bold': 'Helvetica-Bold',
+  'Helvetica-BoldItalic': 'Helvetica-BoldOblique',
+  'Helvetica-Italic': 'Helvetica-Oblique',
+  'Symbol-Bold': 'Symbol',
+  'Symbol-BoldItalic': 'Symbol',
+  'Symbol-Italic': 'Symbol',
   'TimesNewRoman': 'Times-Roman',
-  'TimesNewRoman_Bold': 'Times-Bold',
-  'TimesNewRoman_BoldItalic': 'Times-BoldItalic',
-  'TimesNewRoman_Italic': 'Times-Italic',
+  'TimesNewRoman-Bold': 'Times-Bold',
+  'TimesNewRoman-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRoman-Italic': 'Times-Italic',
   'TimesNewRomanPS': 'Times-Roman',
-  'TimesNewRomanPS_Bold': 'Times-Bold',
-  'TimesNewRomanPS_BoldItalic': 'Times-BoldItalic',
-  'TimesNewRomanPS_BoldItalicMT': 'Times-BoldItalic',
-  'TimesNewRomanPS_BoldMT': 'Times-Bold',
-  'TimesNewRomanPS_Italic': 'Times-Italic',
-  'TimesNewRomanPS_ItalicMT': 'Times-Italic',
+  'TimesNewRomanPS-Bold': 'Times-Bold',
+  'TimesNewRomanPS-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldItalicMT': 'Times-BoldItalic',
+  'TimesNewRomanPS-BoldMT': 'Times-Bold',
+  'TimesNewRomanPS-Italic': 'Times-Italic',
+  'TimesNewRomanPS-ItalicMT': 'Times-Italic',
   'TimesNewRomanPSMT': 'Times-Roman',
-  'TimesNewRomanPSMT_Bold': 'Times-Bold',
-  'TimesNewRomanPSMT_BoldItalic': 'Times-BoldItalic',
-  'TimesNewRomanPSMT_Italic': 'Times-Italic'
+  'TimesNewRomanPSMT-Bold': 'Times-Bold',
+  'TimesNewRomanPSMT-BoldItalic': 'Times-BoldItalic',
+  'TimesNewRomanPSMT-Italic': 'Times-Italic'
 };
 
 var serifFonts = {
@@ -441,8 +441,9 @@ var Font = (function Font() {
     if (!file) {
       // The file data is not specified. Trying to fix the font name
       // to be used with the canvas.font.
-      var fontName = stdFontMap[name.replace('-', '_')] ||
-                     name.replace('_', '-');
+      var fontName = name.replace(/,_/g, '-');
+      fontName = stdFontMap[fontName] || fontName;
+
       this.bold = (fontName.search(/bold/gi) != -1);
       this.italic = (fontName.search(/oblique/gi) != -1) ||
                     (fontName.search(/italic/gi) != -1);
diff --git a/pdf.js b/pdf.js
index 847ed2ff4..311194208 100644
--- a/pdf.js
+++ b/pdf.js
@@ -4783,7 +4783,7 @@ var PartialEvaluator = (function partialEvaluator() {
             return null;
 
           // Using base font name as a font name.
-          baseFontName = baseFontName.name.replace(/,/g, '_');
+          baseFontName = baseFontName.name.replace(/,_/g, '-');
           var metricsAndMap = this.getBaseFontMetricsAndMap(baseFontName);
 
           var properties = {

From fae8459991951c4b7466bfc9ca10a45d3b69ce98 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Tue, 11 Oct 2011 19:45:55 -0500
Subject: [PATCH 7/8] Add standard font name test (also for #621)

---
 test/pdfs/pal-o47.pdf.link | 1 +
 test/test_manifest.json    | 6 ++++++
 2 files changed, 7 insertions(+)
 create mode 100644 test/pdfs/pal-o47.pdf.link

diff --git a/test/pdfs/pal-o47.pdf.link b/test/pdfs/pal-o47.pdf.link
new file mode 100644
index 000000000..e45c4873d
--- /dev/null
+++ b/test/pdfs/pal-o47.pdf.link
@@ -0,0 +1 @@
+http://www1.cpdl.org/wiki/images/sheet/pal-o47.pdf
diff --git a/test/test_manifest.json b/test/test_manifest.json
index 43b799bad..3ede43ceb 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -199,6 +199,12 @@
        "rounds": 1,
        "type": "eq"
     },
+    {  "id": "pal-o47",
+       "file": "pdfs/pal-o47.pdf",
+       "link": true,
+       "rounds": 1,
+       "type": "eq"
+    },
     {  "id": "simpletype3font",
        "file": "pdfs/simpletype3font.pdf",
        "link": false,

From 07aa691fe022fec90629a903616c4a1a29562f63 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Tue, 11 Oct 2011 20:27:47 -0500
Subject: [PATCH 8/8] Fixing invalid CFF DICT entry (#621)

---
 fonts.js | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/fonts.js b/fonts.js
index 2ab3a90b7..4aa72eee0 100644
--- a/fonts.js
+++ b/fonts.js
@@ -2859,7 +2859,15 @@ var Type2CFF = (function type2CFF() {
         if (b <= 21) {
           if (b === 12) {
             ++pos;
-            var b = (b << 8) | dict[pos];
+            var op = dict[pos];
+            if ((op > 14 && op < 17) ||
+                (op > 23 && op < 30) || op > 38) {
+              warn('Invalid CFF dictionary key: ' + op);
+              // trying to replace it with initialRandomSeed
+              // to pass sanitizer
+              dict[pos] = 19;
+            }
+            var b = (b << 8) | op;
           }
           entries.push([b, operands]);
           operands = [];