From: notmasteryet Date: Mon, 1 Aug 2011 03:56:41 +0000 (-0500) Subject: Fixing the maxAdvanceWidth and the amount of the missing sidebearing X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=9bcf2d8b7cbf07e01eafe98f98d892cc695dd651;p=pdf.js.git Fixing the maxAdvanceWidth and the amount of the missing sidebearing --- diff --git a/fonts.js b/fonts.js index 792b552..0b2ab53 100755 --- 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') {