Я столкнулся с этой проблемой в последней версии Chromium. После создания первого элемента с использованием семейства шрифтов, встроенного через @ font-face , мне передают неправильные значения offsetXyz. К тому времени, когда скрипт будет выполнен, хук window.onload уже будет запущен, и, таким образом, шрифт уже будет загружен.
Вот как выглядит скрипт (схематично):
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(" ... ")
не указан, следовательно, проблема связана с загружаемым шрифтом.