From 9e990f6f3e9f3afd78d1206c25b0057a2e509566 Mon Sep 17 00:00:00 2001 From: Jani Pehkonen Date: Tue, 20 Nov 2018 18:50:37 +0200 Subject: [PATCH] Repair CFF fonts if stem hints are in wrong order --- src/core/cff_parser.js | 11 +++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue10084_reduced.pdf | Bin 0 -> 15165 bytes test/test_manifest.json | 6 ++++++ 4 files changed, 18 insertions(+) create mode 100644 test/pdfs/issue10084_reduced.pdf diff --git a/src/core/cff_parser.js b/src/core/cff_parser.js index c92f848db..6a47d16be 100644 --- a/src/core/cff_parser.js +++ b/src/core/cff_parser.js @@ -539,6 +539,16 @@ var CFFParser = (function CFFParserClosure() { if (validationCommand) { if (validationCommand.stem) { state.hints += stackSize >> 1; + if (value === 3 || value === 23) { + // vstem or vstemhm. + state.hasVStems = true; + } else if (state.hasVStems && (value === 1 || value === 18)) { + // Some browsers don't draw glyphs that specify vstems before + // hstems. As a workaround, replace hstem (1) and hstemhm (18) + // with a pointless vstem (3) or vstemhm (23). + warn('CFF stem hints are in wrong order'); + data[j - 1] = (value === 1) ? 3 : 23; + } } if ('min' in validationCommand) { if (!state.undefStack && stackSize < validationCommand.min) { @@ -599,6 +609,7 @@ var CFFParser = (function CFFParserClosure() { firstStackClearing: true, seac: null, width: null, + hasVStems: false, }; var valid = true; var localSubrToUse = null; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 709e141f2..152b463af 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -264,6 +264,7 @@ !annotation-tx3.pdf !coons-allflags-withfunction.pdf !tensor-allflags-withfunction.pdf +!issue10084_reduced.pdf !issue4246.pdf !issue4461.pdf !issue4573.pdf diff --git a/test/pdfs/issue10084_reduced.pdf b/test/pdfs/issue10084_reduced.pdf new file mode 100644 index 0000000000000000000000000000000000000000..220a645bfbb01c6c9a901fe6970bc1d21cdc35b9 GIT binary patch literal 15165 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 z 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 OP7W3TC8d~x`2Pi4k9(^C literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 31000b690..714ffed8c 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2750,6 +2750,12 @@ "type": "text", "about": "Note that the text layer seems to be off to the right." }, + { "id": "issue10084", + "file": "pdfs/issue10084_reduced.pdf", + "md5": "ae37cf36f2e319688c608e4086836824", + "rounds": 1, + "type": "eq" + }, { "id": "issue4890", "file": "pdfs/issue4890.pdf", "md5": "1666feb4cd26318c2bdbea6a175dce87",