});
},
- bindDOM: function font_bindDom(data) {
+ bindDOM: function font_bindDom(data, callback) {
var fontName = this.name;
+ // Just adding the font-face to the DOM doesn't make it load. It
+ // seems it's loaded once Gecko notices it's used. Therefore,
+ // add a div on the page using the loaded font.
+ var div = document.createElement("div");
+ var style = 'font-family:"' + name +
+ '";position: absolute;top:-99999;left:-99999;z-index:-99999';
+ div.setAttribute("style", style);
+ document.body.appendChild(div);
+
/** Hack begin */
// Actually there is not event when a font has finished downloading so
// the following code are a dirty hack to 'guess' when a font is ready
// For some reasons the font has not loaded, so mark it loaded for the
// page to proceed but cry
- if ((Date.now() - this.start) >= kMaxWaitForFontFace) {
- window.clearInterval(interval);
- Fonts[fontName].loading = false;
- warn("Is " + fontName + " loaded?");
- this.start = 0;
- } else if (textWidth != ctx.measureText(testString).width) {
- window.clearInterval(interval);
- Fonts[fontName].loading = false;
- this.start = 0;
+ if (textWidth == ctx.measureText(testString).width) {
+ if ((Date.now() - this.start) < kMaxWaitForFontFace) {
+ return;
+ } else {
+ warn("Is " + fontName + " loaded?");
+ }
+ }
+
+ window.clearInterval(interval);
+ Fonts[fontName].loading = false;
+ this.start = 0;
+ if (callback) {
+ callback();
}
}, 30, this);