Merge pull request #16437 from Snuffleupagus/loadFont-simpler-fontID

Simplify the `fontID` handling in `PartialEvaluator.loadFont`
This commit is contained in:
Jonas Jenwald 2023-05-18 13:36:00 +02:00 committed by GitHub
commit 356f3cf285
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1193,7 +1193,6 @@ class PartialEvaluator {
}); });
}; };
const xref = this.xref;
let fontRef; let fontRef;
if (font) { if (font) {
// Loading by ref. // Loading by ref.
@ -1216,7 +1215,7 @@ class PartialEvaluator {
return this.fontCache.get(fontRef); return this.fontCache.get(fontRef);
} }
font = xref.fetchIfRef(fontRef); font = this.xref.fetchIfRef(fontRef);
} }
if (!(font instanceof Dict)) { if (!(font instanceof Dict)) {
@ -1253,9 +1252,6 @@ class PartialEvaluator {
const fontRefIsRef = fontRef instanceof Ref; const fontRefIsRef = fontRef instanceof Ref;
let fontID; let fontID;
if (fontRefIsRef) {
fontID = `f${fontRef.toString()}`;
}
if (hash && descriptor instanceof Dict) { if (hash && descriptor instanceof Dict) {
const fontAliases = (descriptor.fontAliases ||= Object.create(null)); const fontAliases = (descriptor.fontAliases ||= Object.create(null));
@ -1276,7 +1272,13 @@ class PartialEvaluator {
fontAliases[hash].aliasRef = fontRef; fontAliases[hash].aliasRef = fontRef;
} }
fontID = fontAliases[hash].fontID; fontID = fontAliases[hash].fontID;
} else {
fontID = this.idFactory.createFontId();
} }
assert(
fontID?.startsWith("f"),
'The "fontID" must be (correctly) defined.'
);
// Workaround for bad PDF generators that reference fonts incorrectly, // Workaround for bad PDF generators that reference fonts incorrectly,
// where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf). // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).
@ -1296,16 +1298,9 @@ class PartialEvaluator {
if (fontRefIsRef) { if (fontRefIsRef) {
this.fontCache.put(fontRef, fontCapability.promise); this.fontCache.put(fontRef, fontCapability.promise);
} else { } else {
if (!fontID) {
fontID = this.idFactory.createFontId();
}
font.cacheKey = `cacheKey_${fontID}`; font.cacheKey = `cacheKey_${fontID}`;
this.fontCache.put(font.cacheKey, fontCapability.promise); this.fontCache.put(font.cacheKey, fontCapability.promise);
} }
assert(
fontID?.startsWith("f"),
'The "fontID" must be (correctly) defined.'
);
// Keep track of each font we translated so the caller can // Keep track of each font we translated so the caller can
// load them asynchronously before calling display on a page. // load them asynchronously before calling display on a page.