【发布时间】:2019-08-19 18:00:19
【问题描述】:
所以,我正在使用 Canvas API 开发一个简单的网页游戏。我需要使用指定的字体在画布中绘制字符。
在加载例程中,我使用 promises 来等待我需要的字体,如下所示:
Promise.all([
(new FontFace("LCD Solid", "url('assets/LCD_Solid.ttf')")).load().then((font)=>{
document.fonts.add(font)
}, (err)=>{
throw {type: "font_loading_err", fontName: "LCD Solid", DOMException: err}
}),
(new FontFace("Conformity", "url('assets/Conformity.ttf')")).load().then((font)=>{
document.fonts.add(font)
}, (err)=>{
throw {type: "font_loading_err", fontName: "Conformity", DOMException: err}
}),
]).then(loadGame, oops)
promise 已解决,但未加载。 Chrome 和 Firefox 仅在我使用 fillText() 时加载它们,在 Chrome 中使用默认衬线字体生成一些帧,直到字体加载。
根据the spec,promise 应该只在字体加载时才被解析,但它也允许延迟加载。
有什么方法可以避免延迟加载字体并强制浏览器在那个时候加载它们?
【问题讨论】:
标签: javascript font-face cssom