mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
Improve the handling of errors, in PartialEvaluator.loadFont
, occuring in PartialEvaluator.preEvaluateFont
(issue 12823)
Currently any errors thrown in `preEvaluateFont`, which is a *synchronous* method, will not be handled at all in the `loadFont` method and we were thus failing to return an `ErrorFont`-instance as intended here. Also, add an *explicit* check in `PartialEvaluator.preEvaluateFont` to ensure that Type0-fonts always have a *valid* dictionary.
This commit is contained in:
parent
ed3758f84d
commit
78c32c2697
4 changed files with 17 additions and 1 deletions
|
@ -1062,7 +1062,13 @@ class PartialEvaluator {
|
|||
|
||||
var fontCapability = createPromiseCapability();
|
||||
|
||||
var preEvaluatedFont = this.preEvaluateFont(font);
|
||||
let preEvaluatedFont;
|
||||
try {
|
||||
preEvaluatedFont = this.preEvaluateFont(font);
|
||||
} catch (reason) {
|
||||
warn(`loadFont - ignoring preEvaluateFont errors: "${reason}".`);
|
||||
return errorFont();
|
||||
}
|
||||
const { descriptor, hash } = preEvaluatedFont;
|
||||
|
||||
var fontRefIsRef = isRef(fontRef),
|
||||
|
@ -3258,6 +3264,9 @@ class PartialEvaluator {
|
|||
}
|
||||
dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
|
||||
|
||||
if (!(dict instanceof Dict)) {
|
||||
throw new FormatError("Descendant font is not a dictionary.");
|
||||
}
|
||||
type = dict.get("Subtype");
|
||||
if (!isName(type)) {
|
||||
throw new FormatError("invalid font Subtype");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue