でGoogleフォントを使用することができません:これは私のコードであるキャンバス
img.onload = function() {
ctx.drawImage(img, 0, 0, 600, 480);
ctx.lineWidth = 4;
ctx.font = "3em 'Lato'";
ctx.strokeStyle = 'black';
ctx.fillStyle = 'white';
var text = 'Custom Text';
text = text.toUpperCase();
x = canvas.width/2;
y = canvas.height - canvas.height/4.5;
ctx.strokeText(text, x, y);
ctx.fillText(text, x, y);
}
キャンバス上のフォントがラトではありません。他の回答を読んだ後、私は他のHTML要素でそれを使用していないためかもしれないと思ったが、Lato
フォントを使用する見出しも追加した。この問題を引き起こす原因は他にありますか?
不正なフォント記述の問題に加えて、フォントが読み込まれるまで待つ必要があります。うーん、ブラウザには 'font.onload'コールバックは含まれていませんが、Googleはフォントが完全に読み込まれたときにコールバックを行うこの[回避策](https://developers.google.com/fonts/docs/webfont_loader)を持っていますキャンバスに描画する準備ができています。 ;-) – markE
@markE DOM要素のフォントを使用するとフォントが読み込まれ、要素が正しくフォントを使用するため、正しく読み込まれていると思っていました。 :) –
画像のように、フォントは非同期で読み込むことができます。ブラウザは、フォントがロードされたことを認識すると、ページを目的のフォントで再レンダリングします。しかしその時までに、キャンバスはすでに代替フォントでレンダリングされています。ブラウザはキャンバスコンテンツで再レンダリングしません。フォントが完全に利用可能になったときにキャンバスのコンテンツをレンダリング(または再レンダリング)する必要があります。 – markE