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) {
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;
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() {