【问题标题】:How do I wait for first canvas-repaint until @font-face-font is loaded?如何等待第一次 canvas-repaint 直到加载 @font-face-font?
【发布时间】:2011-03-24 14:13:36
【问题描述】:

我有一个 HTML5 画布,并使用 @font-face-font 使用 context.fillText(...); 编写文本。
使用 Firefox (3.6) 显示页面我有一个问题,即在画布的第一次绘制时,尚未下载字体,因此文本将以标准字体显示。
我找到了一个“解决方案”here,但它不起作用,因为该字体仅在画布中使用,并且使用 jQuery 使用 ajax 加载和显示画布。
有没有比尝试使用超时setTimeout(repaintCanvas, 500); 更好的解决方案?

【问题讨论】:

标签: javascript jquery html canvas font-face


【解决方案1】:

嗯,你可以试试这个,

$.get('font/url.ttf',function(){
   // do canvas codes.... cause font is loaded...
});

【讨论】:

  • 谢谢,但不起作用。字体文件将被加载,但我认为浏览器无法识别它也是 @font-face 的文件。
【解决方案2】:

我想我在 Reigel 的回答的帮助下找到了解决方案:

$.get('font/url.ttf', function() {
    // do canvas codes.... cause font is loaded...
});

另外使用font-family: 'fontfacename'; 的字体作为画布的父元素。
可能是字体加载了两次,不知道。但如果没有第二次加载,它将无法正确显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2016-02-07
    • 2011-10-14
    • 2019-02-11
    • 2010-11-22
    • 2013-01-15
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多