From: Yury Delendik Date: Fri, 18 May 2012 21:51:55 +0000 (-0500) Subject: Removes the CID data from the CFF font X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=ed02be835222091a62797b6d5c69286ed8c97fb2;p=pdf.js.git Removes the CID data from the CFF font --- diff --git a/src/fonts.js b/src/fonts.js index 22037e7..d235881 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -3477,7 +3477,7 @@ var CFFFont = (function CFFFontClosure() { this.properties = properties; var parser = new CFFParser(file, properties); - var cff = parser.parse(); + var cff = parser.parse(true); var compiler = new CFFCompiler(cff); this.readExtra(cff); try { @@ -3568,7 +3568,7 @@ var CFFParser = (function CFFParserClosure() { this.properties = properties; } CFFParser.prototype = { - parse: function CFFParser_parse() { + parse: function CFFParser_parse(normalizeCIDData) { var properties = this.properties; var cff = new CFF(); this.cff = cff; @@ -3623,6 +3623,21 @@ var CFFParser = (function CFFParserClosure() { cff.charset = charset; cff.encoding = encoding; + if (!cff.isCIDFont || !normalizeCIDData) + return cff; + + // DirectWrite does not like CID fonts data. Trying to convert/flatten + // the font data and remove CID properties. + if (cff.fdArray.length !== 1) + error('Unable to normalize CID font in CFF data'); + + var fontDict = cff.fdArray[0]; + fontDict.setByKey(17, topDict.getByName('CharStrings')); + cff.topDict = fontDict; + cff.isCIDFont = false; + delete cff.fdArray; + delete cff.fdSelect; + return cff; }, parseHeader: function CFFParser_parseHeader() {