Javascript 使用IE 10在画布中自定义字体

Javascript 使用IE 10在画布中自定义字体,javascript,canvas,fonts,html5-canvas,internet-explorer-10,Javascript,Canvas,Fonts,Html5 Canvas,Internet Explorer 10,我在画布中使用自定义字体(在CSS文件中称为@font-face)。由于字体文件需要先加载,然后才能在画布中使用,因此我在窗口加载后运行脚本,如下所示: $(window).load(function() { /* Generate canvas code */ }); 在IE10中,代码似乎是在加载字体文件之前执行的。使用默认字体(在本例中为Times)而不是自定义字体。这种行为只发生在IE10中。早期版本的IE支持画布使用正确的字体,其他主要浏览器也是如此 自定义字体在站点的其他位置使

我在画布中使用自定义字体(在CSS文件中称为@font-face)。由于字体文件需要先加载,然后才能在画布中使用,因此我在窗口加载后运行脚本,如下所示:

$(window).load(function() {
  /* Generate canvas code */
});
在IE10中,代码似乎是在加载字体文件之前执行的。使用默认字体(在本例中为Times)而不是自定义字体。这种行为只发生在IE10中。早期版本的IE支持画布使用正确的字体,其他主要浏览器也是如此

自定义字体在站点的其他位置使用,在画布元素之外。即使在IE10中,这些文本片段也能正确呈现,这意味着字体文件已正确加载,但脚本在此之前已执行


在画布中使用自定义字体的正确代码是什么?或者,如何在运行脚本之前等待字体文件加载?是否有一个事件我可以绑定到它?

查看Thomas Bachem关于前一个SO问题的答案(这不是公认的答案)

他使用计时器测试字体宽度是否已设置。如果是,将加载您的字体

您还可以查看这个由Google和Typekit共同创建的web字体加载器。如果需要,这个插件可以让你更好地控制字体加载过程

使用定时器

setTimeout(function(){alert(IsLoadedFonts('font1','font2','font3'));},100);

我尝试使用托马斯·巴切姆的解决方案,但没有效果。无论我向该函数抛出哪个参数,该函数都返回触发器事件。使用Google&Typekit的插件效果很好!我还摆弄JS定时器。我最终使用了Google/Typekit插件,因为它看起来不太可靠,但在等待$(window).load()之后,将创建画布元素的脚本的执行延迟了100毫秒。奇怪的