Для создания веб-стиля нестандартным шрифтом с использованием @font-face
требуется, чтобы браузер сначала загрузил файл шрифта (так же, как он загружает другие ресурсы, например CSS, JavaScripts и т. Д.), Прежде чем произойдет реальное воспроизведение.
Это создает проблему в Chrome (v16.0.912.63) и Safari (v5.1.2), когда jQuery .height()
пытается вычислить высоту своего контейнера. Высчитанная высота равна до , когда шрифт заканчивает загрузку . Рассмотрим следующее (представление: рабочий пример ):
/* CSS */
h1 {
font-family: MuseoSlab-500, "Helvetica Neue", Helvetica, Arial, sans-serif;
/* MuseoSlab-500 is defined using @font-face. */
}
/* HTML */
<div id="box">
<h1>This is my long header. What do you think? How about now?</h1>
</div>
/* JavaScript */
$(function() {
alert("The height of the above <div> = " + $('div#box').height());
});
Однако Firefox (v8.0.1) может рассчитать правильную высоту, т. Е. После того, как текст отрисован с использованием нестандартного шрифта.
Вопрос заключается в том, существует ли практический способ сообщить Chrome или, в идеале, всем браузерам, дождаться, пока текст будет отображен с использованием намеченного шрифта, прежде чем выполнять вычисления.
Использование $(window).load()
работает, но это подразумевает ожидание, например, все изображения, чтобы закончить загрузку, а также; это сильно тормозит.