From 2dc1ff98ace437f32f41a560f8772e47aa2ebb4f Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 5 Jul 2011 00:02:09 -0400 Subject: [PATCH] built-in fonts are not cached --- fonts.js | 15 +++++++++------ viewer.js | 4 +++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/fonts.js b/fonts.js index 47aeabc3f..8701f8e5f 100644 --- a/fonts.js +++ b/fonts.js @@ -70,11 +70,14 @@ var Fonts = (function Fonts() { return fonts[fontName]; }, setActive: function fonts_setActive(fontName, size) { - current = fonts[fontName]; - charsCache = current.charsCache; - var sizes = current.sizes; - if (!(measureCache = sizes[size])) - measureCache = sizes[size] = Object.create(null); + // |current| can be null is fontName is a built-in font + // (e.g. "sans-serif") + if ((current = fonts[fontName])) { + charsCache = current.charsCache; + var sizes = current.sizes; + if (!(measureCache = sizes[size])) + measureCache = sizes[size] = Object.create(null); + } ctx.font = (size * kScalePrecision) + 'px "' + fontName + '"'; }, charsToUnicode: function fonts_chars2Unicode(chars) { @@ -87,7 +90,7 @@ var Fonts = (function Fonts() { return str; // translate the string using the font's encoding - var encoding = current.properties.encoding; + var encoding = current ? current.properties.encoding : null; if (!encoding) return chars; diff --git a/viewer.js b/viewer.js index 4071151aa..6702a6735 100644 --- a/viewer.js +++ b/viewer.js @@ -91,7 +91,9 @@ function displayPage(num) { infoDisplay.innerHTML = "Time to load/compile/fonts/render: "+ (t1 - t0) + "/" + (t2 - t1) + "/" + (t3 - t2) + "/" + (t4 - t3) + " ms"; } - FontLoader.bind(fonts, displayPage); + // Always defer call to displayPage() to work around bug in + // Firefox error reporting from XHR callbacks. + FontLoader.bind(fonts, function () { setTimeout(displayPage, 0); }); } function nextPage() {