diff --git a/src/core/evaluator.js b/src/core/evaluator.js index bdeb1af80..c5a001ccd 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -858,7 +858,17 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { } else if (isName(encoding)) { overridableEncoding = false; hasEncoding = true; - baseEncoding = Encodings[encoding.name]; + var currentEncoding = Encodings[encoding.name]; + + // Some bad PDF files contain fonts whose encoding name is not among + // the predefined encodings, causing baseEncoding to be undefined. + // In this case, fallback to using the baseEncoding as defined above + // and let the font override the encoding if one is available. + if (currentEncoding) { + baseEncoding = currentEncoding; + } else { + overridableEncoding = true; + } } else { error('Encoding is not a Name nor a Dict'); } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 7f6c51ff1..2d5aa76a7 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -64,3 +64,4 @@ !issue2956.pdf !bug946506.pdf !issue3885.pdf +!bug859204.pdf diff --git a/test/pdfs/bug859204.pdf b/test/pdfs/bug859204.pdf new file mode 100644 index 000000000..5f7a936bb Binary files /dev/null and b/test/pdfs/bug859204.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 2b577c70c..cd5c630f1 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -172,6 +172,13 @@ "rounds": 1, "type": "eq" }, + { "id": "bug859204", + "file": "pdfs/bug859204.pdf", + "md5": "ac1ea1dbfa6ac9d5b13167483049af0b", + "link": false, + "rounds": 1, + "type": "eq" + }, { "id": "issue1512", "file": "pdfs/issue1512.pdf", "md5": "41a19fe03d522346ee3baa732403fca4",