]> git.parisson.com Git - pdf.js.git/commitdiff
Fixing the maxAdvanceWidth and the amount of the missing sidebearing
authornotmasteryet <async.processingjs@yahoo.com>
Mon, 1 Aug 2011 03:56:41 +0000 (22:56 -0500)
committernotmasteryet <async.processingjs@yahoo.com>
Mon, 1 Aug 2011 03:56:41 +0000 (22:56 -0500)
fonts.js

index 792b552ba4a3402287b83e5d2d0eafc70e1696e7..0b2ab5338270c7a6e1c4547b25bfe4865f1ac3cc 100755 (executable)
--- a/fonts.js
+++ b/fonts.js
@@ -1001,7 +1001,8 @@ var Font = (function Font() {
       var numOfHMetrics = int16(font.getBytes(2));
 
       var numOfSidebearings = numGlyphs - numOfHMetrics;
-      var numMissing = numOfSidebearings - (hmtx.length - numOfHMetrics * 4);
+      var numMissing = numOfSidebearings -
+        ((hmtx.length - numOfHMetrics * 4) >> 1);
       if (numMissing > 0) {
         font.pos = (font.start ? font.start : 0) + hmtx.offset;
         var metrics = "";
@@ -1012,6 +1013,12 @@ var Font = (function Font() {
         hmtx.data = stringToArray(metrics);
       }
 
+      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth
+      // Sometimes it's 0. That needs to be fixed
+      if (hhea.data[10] == 0 && hhea.data[11] == 0) {
+        hhea.data[10] = 0xFF;
+        hhea.data[11] = 0xFF;
+      }
 
       // Replace the old CMAP table with a shiny new one
       if (properties.type == 'CIDFontType2') {