From 667acb089c50d70f6638fef9b269c90ce3732102 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas <21@vingtetun.org> Date: Sat, 11 Jun 2011 22:36:18 +0200 Subject: [PATCH] OTF does not complain anymore about missize between the CFF data and the htmx table --- PDFFont.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/PDFFont.js b/PDFFont.js index 34011a9cf..33dd97866 100644 --- a/PDFFont.js +++ b/PDFFont.js @@ -1124,7 +1124,7 @@ Type1Font.prototype = { var baseOffset = numTables * (4 * 4) + currentOffset; var virtualOffset = baseOffset; - var tableEntry = this.createTableEntry("CFF ", baseOffset, aData); + var tableEntry = this.createTableEntry("CFF ", virtualOffset, aData); otf.set(tableEntry, currentOffset); currentOffset += tableEntry.length; virtualOffset += aData.length; @@ -1192,7 +1192,6 @@ Type1Font.prototype = { otf.set(tableEntry, currentOffset); currentOffset += tableEntry.length; virtualOffset += cmap.length; - log(currentOffset + "::" + virtualOffset); /** HEAD */ @@ -1223,6 +1222,7 @@ Type1Font.prototype = { /** HHEA */ + var charstrings = this.getOrderedCharStrings(aFont); var hhea = [ 0x00, 0x01, 0x00, 0x00, // Version number @@ -1240,9 +1240,9 @@ Type1Font.prototype = { 0x00, 0x00, // -reserved- 0x00, 0x00, // -reserved- 0x00, 0x00, // -reserved- - 0x00, 0x00, // metricDataFormat - 0x00, 0x01 // numberOfHMetrics + 0x00, 0x00 // metricDataFormat ]; + hhea = hhea.concat(this.encodeNumber(charstrings.length, 2)); // numberOfHMetrics var tableEntry = this.createTableEntry("hhea", virtualOffset, hhea); otf.set(tableEntry, currentOffset); currentOffset += tableEntry.length; @@ -1250,16 +1250,13 @@ Type1Font.prototype = { /** HMTX */ - var charstrings = this.getOrderedCharStrings(aFont); var hmtx = [0x01, 0xF4, 0x00, 0x00]; for (var i = 0; i < charstrings.length; i++) { var charstring = charstrings[i].charstring; + log(charstrings[i].glyph + " " + charstring[1] + " :: " + charstring); var width = this.integerToBytes(charstring[1], 2); var lsb = this.integerToBytes(charstring[0], 2); - hmtx.push(width[0]); - hmtx.push(width[1]); - hmtx.push(lsb[0]); - hmtx.push(lsb[1]); + hmtx = hmtx.concat(width, lsb); } var tableEntry = this.createTableEntry("hmtx", virtualOffset, hmtx); @@ -1315,12 +1312,13 @@ Type1Font.prototype = { otf.set(aData, currentOffset); currentOffset += aData.length; - var tables = [OS2, cmap, hmtx, head, hhea, maxp, name, post]; + var tables = [OS2, cmap, head, hhea, hmtx, maxp, name, post]; for (var i = 0; i < tables.length; i++) { var table = tables[i]; otf.set(table, currentOffset); currentOffset += table.length; } + log(currentOffset + "::" + virtualOffset + "\n"); var data = []; for (var i = 0; i < currentOffset; i++)