我在画布上使用.fillText()
,我希望将其放在Google Web字体中(Oswald,就我而言)。
当页面加载时,文本在加载字体之前被绘制到画布,但显然一旦字体加载了画布上的文本就不会更新,因为它已经被绘制为位图。
如何在加载Web字体之前延迟此文本绘图?还会在画布上绘制一个矩形,我仍然希望在$(document).ready()
上立即绘制。
我应该说我想延迟.fillText()
而不是覆盖默认字体,因为它是一个面向设计的应用程序,并且FOUT反映了对美学的负面影响。
答案 0 :(得分:5)
以下是如何使用TypeKit的WebFontLoader在使用前加载字体时间的示例:
// load google font == Monoton
WebFontConfig = {
google:{ families: ['Monoton'] },
active: function(){start();},
};
(function(){
var wf = document.createElement("script");
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1.5.10/webfont.js';
wf.async = 'true';
document.head.appendChild(wf);
})();
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
function start(){
ctx.font = '50px Monoton';
ctx.textBaseline = 'top';
ctx.fillText('No', 20, 10);
}

body{ background-color: ivory; padding:10px; }
#canvas{border:1px solid red;}

<canvas id="canvas" width=300 height=300></canvas>
&#13;