From e128f8bb472bb81b21c13240bea28cf9eb1a354e Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Wed, 1 May 2013 16:42:25 -0700 Subject: [PATCH] Fix glyph selection for CID fonts that don't actually have CID font files. --- src/fonts.js | 46 +++++++++++++++++++++++++++------------- test/pdfs/bug816075.pdf | Bin 0 -> 21049 bytes test/test_manifest.json | 7 ++++++ 3 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 test/pdfs/bug816075.pdf diff --git a/src/fonts.js b/src/fonts.js index 02c28a3c2..5c9cf1b02 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -5712,9 +5712,9 @@ var CFFFont = (function CFFFontClosure() { this.properties = properties; var parser = new CFFParser(file, properties); - var cff = parser.parse(); - var compiler = new CFFCompiler(cff); - this.readExtra(cff); + this.cff = parser.parse(); + var compiler = new CFFCompiler(this.cff); + this.readExtra(); try { this.data = compiler.compile(); } catch (e) { @@ -5726,12 +5726,10 @@ var CFFFont = (function CFFFontClosure() { } CFFFont.prototype = { - readExtra: function CFFFont_readExtra(cff) { + readExtra: function CFFFont_readExtra() { // charstrings contains info about glyphs (one element per glyph // containing mappings for {unicode, width}) - var charset = cff.charset.charset; - var encoding = cff.encoding ? cff.encoding.encoding : null; - var charstrings = this.getCharStrings(charset, encoding); + var charstrings = this.getCharStrings(); // create the mapping between charstring and glyph id var glyphIds = []; @@ -5740,21 +5738,39 @@ var CFFFont = (function CFFFontClosure() { this.charstrings = charstrings; this.glyphIds = glyphIds; - this.seacs = cff.seacs; + this.seacs = this.cff.seacs; }, - getCharStrings: function CFFFont_getCharStrings(charsets, encoding) { + getCharStrings: function CFFFont_getCharStrings() { + var cff = this.cff; + var charsets = cff.charset.charset; + var encoding = cff.encoding ? cff.encoding.encoding : null; var charstrings = []; var unicodeUsed = []; var unassignedUnicodeItems = []; var inverseEncoding = []; - // CID fonts don't have an encoding. - if (encoding !== null) + var gidStart = 0; + // Even though the CFF font may not actually be a CID font is could have + // CID information in the font descriptor. + if (this.properties.cidSystemInfo) { + // According to section 9.7.4.2 if the font is actually a CID font then + // we should use the charset to map CIDs to GIDs. If it is not actually + // a CID font then CIDs can be mapped directly to GIDs. + if (this.cff.isCIDFont) { + inverseEncoding = charsets; + } else { + for (var i = 0, ii = charsets.length; i < charsets.length; i++) { + inverseEncoding.push(i); + } + } + } else { for (var charcode in encoding) inverseEncoding[encoding[charcode]] = charcode | 0; - else - inverseEncoding = charsets; - var i = charsets[0] == '.notdef' ? 1 : 0; - for (var ii = charsets.length; i < ii; i++) { + if (charsets[0] === '.notedef') { + gidStart = 1; + } + } + + for (var i = gidStart, ii = charsets.length; i < ii; i++) { var glyph = charsets[i]; var code = inverseEncoding[i]; diff --git a/test/pdfs/bug816075.pdf b/test/pdfs/bug816075.pdf new file mode 100644 index 0000000000000000000000000000000000000000..08d4186e206df144d2fc1ac7bb67c3a712c9cc3f GIT binary patch literal 21049 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 9464cba5f..97040a35d 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1012,6 +1012,13 @@ "rounds": 1, "type": "eq" }, + { "id": "bug816075", + "file": "pdfs/bug816075.pdf", + "md5": "7ec87c115c1f9ec41234cc7002555e82", + "rounds": 1, + "type": "eq", + "about": "A CIDFontType0 font with a CFF font that isn't actually CID." + }, { "id": "noembed-identity-2", "file": "pdfs/noembed-identity-2.pdf", "md5": "13b7d9ab9579d45c10bc8d499d087f21",