因此,我正在使用 Canvas API 开发一个简单的网页游戏。我需要使用指定的字体在画布中绘制字符。
在加载例程中,我使用 Promise 来等待我需要的字体,如下所示:
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)
承诺已解决,但未加载。Chrome 和 Firefox 仅在我使用时加载它们fillText()
,在 Chrome 中使用默认衬线字体生成一些框架,直到字体加载。
根据规范,只有在加载字体时才应解析承诺,但它也允许延迟加载。
有什么方法可以避免延迟加载字体并强制浏览器在那一刻加载它们?