From c6c72291d99524383debf4b71f5a945792f3a6d2 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Tue, 19 Jul 2011 14:22:51 +0200 Subject: [PATCH] Do not rasterize below 14px --- fonts.js | 3 ++- pdf.js | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/fonts.js b/fonts.js index a54168a1e..edd54b0a1 100755 --- a/fonts.js +++ b/fonts.js @@ -22,7 +22,7 @@ var kMaxWaitForFontFace = 1000; */ var Fonts = (function Fonts() { - var kScalePrecision = 40; + var kScalePrecision = 50; var fonts = []; if (!isWorker) { @@ -404,6 +404,7 @@ var Font = (function Font() { // Repair the TrueType file if it is can be damaged in the point of // view of the sanitizer data = this.checkAndRepair(name, file, properties); + writeToFile(data, "/tmp/file." + this.name + ".ttf"); break; default: diff --git a/pdf.js b/pdf.js index f164dbd68..03cb16126 100644 --- a/pdf.js +++ b/pdf.js @@ -3898,6 +3898,9 @@ function ScratchCanvas(width, height) { } var CanvasGraphics = (function() { + var kScalePrecision = 50; + var kRasterizerMin = 14; + function constructor(canvasCtx, imageCanvas) { this.ctx = canvasCtx; this.current = new CanvasExtraState(); @@ -4113,8 +4116,10 @@ var CanvasGraphics = (function() { if (this.ctx.$setFont) { this.ctx.$setFont(fontName, size); } else { - this.ctx.font = size + 'px "' + fontName + '"'; Fonts.setActive(fontName, fontObj, size); + + size = (size <= kRasterizerMin) ? size * kScalePrecision : size; + this.ctx.font = size + 'px "' + fontName + '"'; } }, setTextRenderingMode: function(mode) { @@ -4162,6 +4167,8 @@ var CanvasGraphics = (function() { ctx.translate(current.x, -1 * current.y); var font = this.current.font; if (font) { + if (this.current.fontSize < kRasterizerMin) + ctx.transform(1 / kScalePrecision, 0, 0, 1 / kScalePrecision, 0, 0); ctx.transform.apply(ctx, font.textMatrix); text = font.charsToUnicode(text); }