Don't accidentally use an empty hash value when comparing preEvaluatedFonts in PartialEvaluator.loadFont

Note that `PartialEvaluator.preEvaluateFont` will return an empty string when no hash was computed. This will complete short-circuit the `fontAlias` comparison in `PartialEvaluator.loadFont`, since fonts which are totally different will then match if their `hash`es are empty.
This commit is contained in:
Jonas Jenwald 2019-03-27 00:00:13 +01:00
parent cf1acd3eaf
commit a2a824ed01

View File

@ -695,20 +695,19 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
var fontCapability = createPromiseCapability(); var fontCapability = createPromiseCapability();
var preEvaluatedFont = this.preEvaluateFont(font); var preEvaluatedFont = this.preEvaluateFont(font);
var descriptor = preEvaluatedFont.descriptor; const { descriptor, hash, } = preEvaluatedFont;
var fontRefIsRef = isRef(fontRef), fontID; var fontRefIsRef = isRef(fontRef), fontID;
if (fontRefIsRef) { if (fontRefIsRef) {
fontID = fontRef.toString(); fontID = fontRef.toString();
} }
if (isDict(descriptor)) { if (hash && isDict(descriptor)) {
if (!descriptor.fontAliases) { if (!descriptor.fontAliases) {
descriptor.fontAliases = Object.create(null); descriptor.fontAliases = Object.create(null);
} }
var fontAliases = descriptor.fontAliases; var fontAliases = descriptor.fontAliases;
var hash = preEvaluatedFont.hash;
if (fontAliases[hash]) { if (fontAliases[hash]) {
var aliasFontRef = fontAliases[hash].aliasRef; var aliasFontRef = fontAliases[hash].aliasRef;
if (fontRefIsRef && aliasFontRef && if (fontRefIsRef && aliasFontRef &&
@ -785,7 +784,6 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
try { try {
// error, but it's still nice to have font type reported // error, but it's still nice to have font type reported
var descriptor = preEvaluatedFont.descriptor;
var fontFile3 = descriptor && descriptor.get('FontFile3'); var fontFile3 = descriptor && descriptor.get('FontFile3');
var subtype = fontFile3 && fontFile3.get('Subtype'); var subtype = fontFile3 && fontFile3.get('Subtype');
var fontType = getFontType(preEvaluatedFont.type, var fontType = getFontType(preEvaluatedFont.type,