From c5b06cb40d032e782f5afa3a0ed73d4ee80f160a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 29 Nov 2016 18:28:32 +0100 Subject: [PATCH] Ensure that `PartialEvaluator_extractWidths` is able to handle indirect objects in all kinds of "width" data (issue 7855) Fixes 7855. --- src/core/evaluator.js | 24 ++++++++++++++++-------- test/pdfs/.gitignore | 1 + test/pdfs/issue7855.pdf | Bin 0 -> 50862 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 test/pdfs/issue7855.pdf diff --git a/src/core/evaluator.js b/src/core/evaluator.js index c6401c399..d72cba2dd 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1997,14 +1997,14 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { widths = dict.get('W'); if (widths) { for (i = 0, ii = widths.length; i < ii; i++) { - start = widths[i++]; + start = xref.fetchIfRef(widths[i++]); code = xref.fetchIfRef(widths[i]); if (isArray(code)) { for (j = 0, jj = code.length; j < jj; j++) { - glyphsWidths[start++] = code[j]; + glyphsWidths[start++] = xref.fetchIfRef(code[j]); } } else { - var width = widths[++i]; + var width = xref.fetchIfRef(widths[++i]); for (j = start; j <= code; j++) { glyphsWidths[j] = width; } @@ -2013,19 +2013,27 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { } if (properties.vertical) { - var vmetrics = (dict.get('DW2') || [880, -1000]); + var vmetrics = dict.getArray('DW2') || [880, -1000]; defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; vmetrics = dict.get('W2'); if (vmetrics) { for (i = 0, ii = vmetrics.length; i < ii; i++) { - start = vmetrics[i++]; + start = xref.fetchIfRef(vmetrics[i++]); code = xref.fetchIfRef(vmetrics[i]); if (isArray(code)) { for (j = 0, jj = code.length; j < jj; j++) { - glyphsVMetrics[start++] = [code[j++], code[j++], code[j]]; + glyphsVMetrics[start++] = [ + xref.fetchIfRef(code[j++]), + xref.fetchIfRef(code[j++]), + xref.fetchIfRef(code[j]) + ]; } } else { - var vmetric = [vmetrics[++i], vmetrics[++i], vmetrics[++i]]; + var vmetric = [ + xref.fetchIfRef(vmetrics[++i]), + xref.fetchIfRef(vmetrics[++i]), + xref.fetchIfRef(vmetrics[++i]) + ]; for (j = start; j <= code; j++) { glyphsVMetrics[j] = vmetric; } @@ -2039,7 +2047,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { if (widths) { j = firstChar; for (i = 0, ii = widths.length; i < ii; i++) { - glyphsWidths[j++] = widths[i]; + glyphsWidths[j++] = xref.fetchIfRef(widths[i]); } defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0); } else { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index ccc130acb..aa088e3d4 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -42,6 +42,7 @@ !issue7598.pdf !issue7665.pdf !issue7835.pdf +!issue7855.pdf !bad-PageLabels.pdf !filled-background.pdf !ArabicCIDTrueType.pdf diff --git a/test/pdfs/issue7855.pdf b/test/pdfs/issue7855.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ee2963f9482161f23be6f284b62e1e31e723745a GIT binary patch literal 50862 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�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 Mp{Avk&L~s=1IT%fX#fBK literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 9643dbd03..5d669044e 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1853,6 +1853,13 @@ "rounds": 1, "type": "eq" }, + { "id": "issue7855", + "file": "pdfs/issue7855.pdf", + "md5": "290d4d5da041ffbcb1ea5d3b0ed8ee91", + "rounds": 1, + "link": false, + "type": "eq" + }, { "id": "issue6068", "file": "pdfs/issue6068.pdf", "md5": "bbcedb94776b40352729c16940a5b2bd",