]> git.parisson.com Git - pdf.js.git/commitdiff
CMYK colors; font fixes
authornotmasteryet <async.processingjs@yahoo.com>
Tue, 28 Jun 2011 00:34:41 +0000 (19:34 -0500)
committernotmasteryet <async.processingjs@yahoo.com>
Tue, 28 Jun 2011 00:34:41 +0000 (19:34 -0500)
fonts.js
pdf.js

index ac06b76ae867d890e55efcb564be6209d7e910f0..6c96e7ec43f4a0b7a38b5dbb4bfd3a97fea77151 100644 (file)
--- a/fonts.js
+++ b/fonts.js
@@ -167,7 +167,7 @@ var Font = (function () {
     }
 
     Fonts[name] = {
-      data: data,
+      data: file,
       properties: properties,
       loading: true,
       cache: Object.create(null)
@@ -1188,8 +1188,8 @@ var type1Parser = new Type1Parser();
 
 var CFF = function(name, file, properties) {
   // Get the data block containing glyphs and subrs informations
-  var length1 = file.dict.get("Length1");
-  var length2 = file.dict.get("Length2");
+  var length1 = file.dict.get("Length1") || 0;
+  var length2 = file.dict.get("Length2") || 0;
   file.skip(length1);
   var eexecBlock = file.getBytes(length2);
 
diff --git a/pdf.js b/pdf.js
index ec8c91f8d3236d22864e99b2e0866f81c71cd171..80139f95f8a7bd9d7080ce70dbb6761246efa831 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -2940,6 +2940,8 @@ var CanvasGraphics = (function() {
                 this.setStrokeGray.apply(this, arguments);
             } else if (3 === arguments.length) {
                 this.setStrokeRGBColor.apply(this, arguments);
+            } else if (4 === arguments.length) {
+                this.setStrokeCMYKColor.apply(this, arguments);
             }
         },
         setStrokeColorN: function(/*...*/) {
@@ -2952,6 +2954,8 @@ var CanvasGraphics = (function() {
                 this.setFillGray.apply(this, arguments);
             } else if (3 === arguments.length) {
                 this.setFillRGBColor.apply(this, arguments);
+            } else if (4 === arguments.length) {
+                this.setFillCMYKColor.apply(this, arguments);
             }
         },
         setFillColorN: function(/*...*/) {
@@ -3095,10 +3099,10 @@ var CanvasGraphics = (function() {
             this.ctx.fillStyle = this.makeCssRgb(r, g, b);
         },
         setStrokeCMYKColor: function(c, m, y, k) {
-            TODO("CMYK space");
+            this.ctx.strokeStyle = this.makeCssCmyk(c, m, y, k);
         },
         setFillCMYKColor: function(c, m, y, k) {
-            TODO("CMYK space");
+            this.ctx.fillStyle = this.makeCssCmyk(c, m, y, k);
         },
 
         // Shading
@@ -3487,6 +3491,13 @@ var CanvasGraphics = (function() {
             var ri = (255 * r) | 0, gi = (255 * g) | 0, bi = (255 * b) | 0;
             return "rgb("+ ri +","+ gi +","+ bi +")";
         },
+        makeCssCmyk: function(c, m, y, k) {
+            // while waiting on CSS's cmyk()... http://www.ilkeratalay.com/colorspacesfaq.php#rgb
+            var ri = (255 * (1 - Math.min(1, c * (1 - k) + k))) | 0;
+            var gi = (255 * (1 - Math.min(1, m * (1 - k) + k))) | 0;
+            var bi = (255 * (1 - Math.min(1, y * (1 - k) + k))) | 0;
+            return "rgb("+ ri +","+ gi +","+ bi +")";
+        },
         // We generally keep the canvas context set for
         // nonzero-winding, and just set evenodd for the operations
         // that need them.