diff --git a/PDFFont.js b/PDFFont.js index 424c6721f..7abd9aa65 100644 --- a/PDFFont.js +++ b/PDFFont.js @@ -41,6 +41,7 @@ var Font = function(aFontName, aFontFile, aFontType) { return; } + var start = Date.now(); switch (aFontType) { case "Type1": // All Type1 font program should begin with the comment %! @@ -64,6 +65,7 @@ var Font = function(aFontName, aFontFile, aFontType) { warn("Font " + aFontType + " is not supported"); break; } + var end = Date.now(); // Attach the font to the document this.bind(); @@ -417,7 +419,7 @@ Font.prototype = { for (var i = 0; i < offsets.currentOffset; i++) fontData.push(otf[i]); - writeToFile(fontData, "/tmp/pdf.js." + fontCount + ".otf"); + //writeToFile(fontData, "/tmp/pdf.js." + fontCount + ".otf"); return fontData; } }; @@ -477,8 +479,8 @@ var TrueType = function(aFontName, aFontFile) { var PSFonts = new Dict(); -var Stack = function() { - var innerStack = []; +var Stack = function(aStackSize) { + var innerStack = new Array(aStackSize || 0); this.push = function(aOperand) { innerStack.push(aOperand); @@ -695,7 +697,7 @@ var Type1Parser = function(aAsciiStream, aBinaryStream) { * operator returns one or more results, it does so by pushing them on the * operand stack. */ - var operandStack = new Stack(); + var operandStack = new Stack(40); // Flag indicating if the topmost operand of the operandStack is an array var operandIsArray = 0; @@ -1156,7 +1158,7 @@ var CFF = function(aFontName, aFontFile) { this.font = PSFonts.get(fontName); this.data = this.convertToCFF(this.font); var end = Date.now(); - log("Time to parse font is:" + (end - start)); + //log("Time to parse font is:" + (end - start)); } }; @@ -1392,7 +1394,7 @@ CFF.prototype = { 248, 28, 1, // Notice 248, 29, 2, // FullName 248, 30, 3, // FamilyName - 248, 31, 4, // Weight + 248, 31, 4 // Weight ]; for (var i = 0; i < fontBBox.length; i++) diff --git a/PDFFontUtils.js b/PDFFontUtils.js index 36dc2b421..072dd48f1 100644 --- a/PDFFontUtils.js +++ b/PDFFontUtils.js @@ -4,7 +4,7 @@ * * So the code here is useful for dumping the data content of a .cff file in * order to investigate the similarity between a Type1 CharString and a Type2 - * CharString. + * CharString or to understand the structure of the CFF format. */ @@ -216,6 +216,14 @@ function readFontIndexData(aStream, aIsByte) { var Type2Parser = function(aFilePath) { var font = new Dict(); + var xhr = new XMLHttpRequest(); + xhr.open("GET", aFilePath, false); + xhr.mozResponseType = xhr.responseType = "arraybuffer"; + xhr.expected = (document.URL.indexOf("file:") == 0) ? 0 : 200; + xhr.send(null); + this.data = new Stream(xhr.mozResponseArrayBuffer || xhr.mozResponse || + xhr.responseArrayBuffer || xhr.response); + // Turn on this flag for additional debugging logs var debug = false; @@ -340,22 +348,16 @@ var Type2Parser = function(aFilePath) { } }; - -var xhr = new XMLHttpRequest(); -xhr.open("GET", "titi.cff", false); -xhr.mozResponseType = xhr.responseType = "arraybuffer"; -xhr.expected = (document.URL.indexOf("file:") == 0) ? 0 : 200; -xhr.send(null); -var cffData = xhr.mozResponseArrayBuffer || xhr.mozResponse || - xhr.responseArrayBuffer || xhr.response; -var cff = new Type2Parser("titi.cff"); -//cff.parse(new Stream(cffData)); +/* +var cff = new Type2Parser("test.cff"); +cff.parse(); +*/ /** * Write to a file (works only on Firefox in privilege mode"); */ - function writeToFile(aBytes, aFilePath) { +function writeToFile(aBytes, aFilePath) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var Cc = Components.classes, Ci = Components.interfaces; @@ -366,10 +368,10 @@ var cff = new Type2Parser("titi.cff"); .createInstance(Ci.nsIFileOutputStream); stream.init(file, 0x04 | 0x08 | 0x20, 0600, 0); - var bos = Cc["@mozilla.org/binaryoutputstream;1"] - .createInstance(Ci.nsIBinaryOutputStream); + var bos = Cc["@mozilla.org/binaryoutputstream;1"] + .createInstance(Ci.nsIBinaryOutputStream); bos.setOutputStream(stream); bos.writeByteArray(aBytes, aBytes.length); stream.close(); - }; +}; diff --git a/cffStandardStrings.js b/cffStandardStrings.js index 585c1157e..8977cd8f2 100644 --- a/cffStandardStrings.js +++ b/cffStandardStrings.js @@ -686,3 +686,4 @@ var CFFDictPrivateDataMap = { operand: 0 } }; + diff --git a/test.html b/test.html index 5d0b15403..6b37f222f 100644 --- a/test.html +++ b/test.html @@ -7,7 +7,6 @@ -