Browse Source

Merge pull request #2215 from yurydelendik/issue-1836

Falls back to ErrorFont when font object is not available or corrupted
Brendan Dahl 13 years ago
parent
commit
c67cc874e8
  1. 17
      src/evaluator.js
  2. 3
      src/fonts.js

17
src/evaluator.js

@ -145,10 +145,16 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { @@ -145,10 +145,16 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
assert(fontRes, 'fontRes not available');
++this.fontIdCounter;
font = xref.fetchIfRef(font) || fontRes.get(fontName);
assertWellFormed(isDict(font));
if (!isDict(font)) {
return {
translated: new ErrorFont('Font ' + fontName + ' is not available'),
loadedName: 'font_' + this.uniquePrefix + this.fontIdCounter
};
}
++this.fontIdCounter;
var loadedName = font.loadedName;
if (!loadedName) {
// keep track of each font we translated so the caller can
@ -161,7 +167,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { @@ -161,7 +167,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
translated = this.translateFont(font, xref, resources,
dependency);
} catch (e) {
translated = { error: e instanceof Error ? e.message : e };
translated = new ErrorFont(e instanceof Error ? e.message : e);
}
font.translated = translated;
@ -209,10 +215,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { @@ -209,10 +215,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
var loadedName = font.loadedName;
if (!font.sent) {
var data = font.translated;
if (data instanceof Font)
data = data.exportData();
var data = font.translated.exportData();
handler.send('obj', [
loadedName,

3
src/fonts.js

@ -4075,6 +4075,9 @@ var ErrorFont = (function ErrorFontClosure() { @@ -4075,6 +4075,9 @@ var ErrorFont = (function ErrorFontClosure() {
ErrorFont.prototype = {
charsToGlyphs: function ErrorFont_charsToGlyphs() {
return [];
},
exportData: function ErrorFont_exportData() {
return {error: this.error};
}
};

Loading…
Cancel
Save