Cache the fallback font dictionary on the PartialEvaluator (PR 11218 follow-up)

This way we'll benefit from the existing font caching, and can thus avoid re-creating a fallback font over and over again during parsing.
(Thece changes necessitated the previous patch, since otherwise breakage could occur e.g. with fake workers.)
This commit is contained in:
Jonas Jenwald 2020-01-16 15:08:25 +01:00
parent 090ff116d4
commit 9ab7c280aa

View File

@ -935,11 +935,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
// Falling back to a default font to avoid completely broken rendering, // Falling back to a default font to avoid completely broken rendering,
// but note that there're no guarantees that things will look "correct". // but note that there're no guarantees that things will look "correct".
fontRef = new Dict(); fontRef = PartialEvaluator.getFallbackFontDict();
fontRef.set("BaseFont", Name.get("PDFJS-FallbackFont"));
fontRef.set("Type", Name.get("FallbackType"));
fontRef.set("Subtype", Name.get("FallbackType"));
fontRef.set("Encoding", Name.get("WinAnsiEncoding"));
} }
if (this.fontCache.has(fontRef)) { if (this.fontCache.has(fontRef)) {
@ -3134,6 +3130,21 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
} }
}; };
// TODO: Change this to a `static` getter, using shadowing, once
// `PartialEvaluator` is converted to a proper class.
PartialEvaluator.getFallbackFontDict = function() {
if (this._fallbackFontDict) {
return this._fallbackFontDict;
}
const dict = new Dict();
dict.set("BaseFont", Name.get("PDFJS-FallbackFont"));
dict.set("Type", Name.get("FallbackType"));
dict.set("Subtype", Name.get("FallbackType"));
dict.set("Encoding", Name.get("WinAnsiEncoding"));
return (this._fallbackFontDict = dict);
};
return PartialEvaluator; return PartialEvaluator;
})(); })();