CMYK colors; font fixes

This commit is contained in:
notmasteryet 2011-06-27 19:34:41 -05:00
parent f08bff5578
commit 48a2346275
2 changed files with 16 additions and 5 deletions

View File

@ -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);

15
pdf.js
View File

@ -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.