]> git.parisson.com Git - pdf.js.git/commitdiff
simplify font measurement code, bug is now fixed in nightlies, no need to hack around it
authorAndreas Gal <andreas.gal@gmail.com>
Sat, 9 Jul 2011 02:28:24 +0000 (19:28 -0700)
committerAndreas Gal <andreas.gal@gmail.com>
Sat, 9 Jul 2011 02:28:24 +0000 (19:28 -0700)
fonts.js
pdf.js

index 7bdf7cefce6dccb11761fa746a9fc473c98fe32e..27d003197861d133903dd18d9257f41e7ededf48 100755 (executable)
--- 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 c85e6f26b7f855450e449acd1d77c69c1e40a822..91296315759fd1f97a56b509f7f3d52a51df44ac 100644 (file)
--- 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.save();
+
+        ctx.transform.apply(ctx, current.textMatrix);
+        ctx.scale(1, -1);
         ctx.translate(current.x, -1 * current.y);
-        var font = this.current.font;
-        if (font) {
-          ctx.transform.apply(ctx, font.textMatrix);
-          text = font.charsToUnicode(text);
-        }
+
+        var font = current.font;
+        ctx.transform.apply(ctx, font.textMatrix);
+
+        text = font.charsToUnicode(text);
+
         ctx.fillText(text, 0, 0);
-        current.x += Fonts.measureText(text);
-      }
+        current.x += ctx.measureText(text).width;
 
-      this.ctx.restore();
+        ctx.restore();
+      }
     },
     showSpacedText: function(arr) {
       for (var i = 0; i < arr.length; ++i) {