最新バージョンのChromiumでこの問題が発生しました。 @ font-faceで埋め込まれたフォントファミリを使用して最初の要素を作成した後、間違ったoffsetXyz値が渡されています。スクリプトが実行されるまでに、window.onloadフックはすでに起動されており、フォントは既に読み込まれています。@ Font-faceとoffsetWidth属性の値が間違っています
これは、スクリプトは(概略的に)次のようになります。
var e = document.createElement("span");
e["innerText" in e?"innerText":"textContent"] = "fooBar";
e.style.fontFamily = "fontFaceEmbeddedFontFamily";
document.body.appendChild(e);
alert(e.offsetWidth); // Returns two different values
setTimeout(function() {
alert(e.offsetWidth); // The latter being correct
}, 1000);
値は「黙って」に更新されます。値を修正するのを待つ方法がないようですが、単純にsetInterval - 値をチェックしてから、ソリューションをレンダリングします。私はそのような汚いものをやっているとは思わない。
今後の進め方についてご意見がありますか? src: local(" ... ")
が指定されていない場合にのみ発生し、問題はダウンロードされます(フォント固有)。
はたぶん、あなたはいくつかの助けをここに見つけることができます:http://paulirish.com/2009/fighting-the-font-face-fout/ - 一部のブラウザでは、フォントがダウンロードされて切り替えられるまで「非スタイル」のテキストを表示するのが一般的です。 – James
まあ、私が言ったように、フォントは、**後** ** window.onloadイベントが発生したときにスクリプトを実行するときに読み込まれているはずです。要素が文書の本文に追加されると、既に読み込まれ、視覚的に適用されます。ちょうどオフセット値が間違っています。 – Witiko