From adb619941cc5d8b59bf6109926985d4de8243fd0 Mon Sep 17 00:00:00 2001 From: Andreas Gal Date: Fri, 8 Jul 2011 19:28:24 -0700 Subject: [PATCH] simplify font measurement code, bug is now fixed in nightlies, no need to hack around it --- fonts.js | 32 +------------------------------- pdf.js | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 46 deletions(-) diff --git a/fonts.js b/fonts.js index 7bdf7cefc..27d003197 100755 --- a/fonts.js +++ b/fonts.js @@ -22,14 +22,7 @@ var kMaxWaitForFontFace = 1000; */ var Fonts = (function Fonts() { - var kScalePrecision = 40; var fonts = []; - - if (!isWorker) { - var ctx = document.createElement('canvas').getContext('2d'); - ctx.scale(1 / kScalePrecision, 1); - } - var fontCount = 0; function FontInfo(name, data, properties) { @@ -42,7 +35,6 @@ var Fonts = (function Fonts() { } var current; - var measureCache; return { registerFont: function fonts_registerFont(fontName, data, properties) { @@ -57,28 +49,6 @@ var Fonts = (function Fonts() { }, lookupById: function fonts_lookupById(id) { return fonts[id]; - }, - setActive: function fonts_setActive(fontName, fontObj, size) { - // |current| can be null is fontName is a built-in font - // (e.g. "sans-serif") - if (fontObj && (current = fonts[fontObj.id])) { - var sizes = current.sizes; - if (!(measureCache = sizes[size])) - measureCache = sizes[size] = Object.create(null); - } else { - measureCache = null - } - - ctx.font = (size * kScalePrecision) + 'px "' + fontName + '"'; - }, - measureText: function fonts_measureText(text) { - var width; - if (measureCache && (width = measureCache[text])) - return width; - width = ctx.measureText(text).width / kScalePrecision; - if (measureCache) - measureCache[text] = width; - return width; } }; })(); @@ -1110,7 +1080,7 @@ var Font = (function() { return rule; }, - charsToUnicode: function fonts_chars2Unicode(chars) { + charsToUnicode: function fonts_charsToUnicode(chars) { var charsCache = this.charsCache; // if we translated this string before, just grab it from the cache diff --git a/pdf.js b/pdf.js index c85e6f26b..912963157 100644 --- a/pdf.js +++ b/pdf.js @@ -3972,7 +3972,6 @@ var CanvasGraphics = (function() { this.ctx.$setFont(fontName, size); } else { this.ctx.font = size + 'px "' + fontName + '"'; - Fonts.setActive(fontName, fontObj, size); } }, setTextRenderingMode: function(mode) { @@ -4010,24 +4009,25 @@ var CanvasGraphics = (function() { var ctx = this.ctx; var current = this.current; - ctx.save(); - ctx.transform.apply(ctx, current.textMatrix); - ctx.scale(1, -1); - if (this.ctx.$showText) { ctx.$showText(current.y, text); } else { - ctx.translate(current.x, -1 * current.y); - var font = this.current.font; - if (font) { - ctx.transform.apply(ctx, font.textMatrix); - text = font.charsToUnicode(text); - } - ctx.fillText(text, 0, 0); - current.x += Fonts.measureText(text); - } + ctx.save(); - this.ctx.restore(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.scale(1, -1); + ctx.translate(current.x, -1 * current.y); + + var font = current.font; + ctx.transform.apply(ctx, font.textMatrix); + + text = font.charsToUnicode(text); + + ctx.fillText(text, 0, 0); + current.x += ctx.measureText(text).width; + + ctx.restore(); + } }, showSpacedText: function(arr) { for (var i = 0; i < arr.length; ++i) {