From cd44093891a7ece57a0b647a776fc50618a020b2 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 31 Oct 2013 09:10:08 -0500 Subject: [PATCH] Workaround for some bad Type1 data --- src/core/fonts.js | 24 ++++++++++++++++++++++-- test/pdfs/.gitignore | 1 + test/pdfs/bug860632.pdf | Bin 0 -> 33087 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test/pdfs/bug860632.pdf diff --git a/src/core/fonts.js b/src/core/fonts.js index f4f8ef9a4..91954d4a9 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -5291,13 +5291,33 @@ var CFFStandardStrings = [ // Type1Font is also a CIDFontType0. var Type1Font = function Type1Font(name, file, properties) { + // Some bad generators embed pfb file as is, we have to strip 6-byte headers. + // Also, length1 and length2 might be off by 6 bytes as well. + // http://www.math.ubc.ca/~cass/piscript/type1.pdf + var PFB_HEADER_SIZE = 6; + var headerBlockLength = properties.length1; + var eexecBlockLength = properties.length2; + var pfbHeader = file.peekBytes(PFB_HEADER_SIZE); + var pfbHeaderPresent = pfbHeader[0] == 0x80 && pfbHeader[1] == 0x01; + if (pfbHeaderPresent) { + file.skip(PFB_HEADER_SIZE); + headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | + (pfbHeader[3] << 8) | pfbHeader[2]; + } + // Get the data block containing glyphs and subrs informations - var headerBlock = new Stream(file.getBytes(properties.length1)); + var headerBlock = new Stream(file.getBytes(headerBlockLength)); var headerBlockParser = new Type1Parser(headerBlock); headerBlockParser.extractFontHeader(properties); + if (pfbHeaderPresent) { + pfbHeader = file.getBytes(PFB_HEADER_SIZE); + eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) | + (pfbHeader[3] << 8) | pfbHeader[2]; + } + // Decrypt the data blocks and retrieve it's content - var eexecBlock = new Stream(file.getBytes(properties.length2)); + var eexecBlock = new Stream(file.getBytes(eexecBlockLength)); var eexecBlockParser = new Type1Parser(eexecBlock, true); var data = eexecBlockParser.extractFontProgram(); for (var info in data.properties) diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 8463dee42..9d7ae64bc 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -23,6 +23,7 @@ !issue840.pdf !issue2074.pdf !scan-bad.pdf +!bug860632.pdf !pdfjsbad1586.pdf !freeculture.pdf !pdfkit_compressed.pdf diff --git a/test/pdfs/bug860632.pdf b/test/pdfs/bug860632.pdf new file mode 100644 index 0000000000000000000000000000000000000000..587083aac8be9cfdeea92f521fbeadc7544ff5b3 GIT binary patch literal 33087 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

Z>EP)Og?>xlMr79@uiGgjww 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