У меня такая же проблема. И почему-то я не могу заставить загрузчик веб-шрифтов Google работать с шрифтом ttf (особенно с китайскими шрифтами) или отправить ответ jquery при загрузке шрифта.
Так что я придумал это более простое решение, полезное при динамическом изменении шрифта после загрузки страницы. показывает, когда шрифт правильно загружен.
Сначала я создаю фиктивный div, затем заполняю его abcd, а затем присваиваю ему размер шрифта 40 и записываю ширину div. Когда событие «изменить шрифт» вызывается с помощью кнопки или чего-либо еще, оно должно отслеживать изменения ширины фиктивного элемента. Изменение ширины будет означать, что шрифт изменился.
HTML-код
<style>
@font-face {
font-family: 'font1';
src:url('somefont.ttf') format('truetype');
}
</style>
<div id="dummy" style="border:1px solid #000; display:inline-block">abdc</div>
<!--simple button to invoke the fontchange-->
<input type="button" onclick="javascript:changefont('font1')" value="change the font"/>
JQuery
//create a variable to track initial width of default font
var trackwidth
//when change font is invoke
function changefont(newfont)
{
//reset dummy font style
$('#dummy').css('font-family','initial !important;');
$('#dummy').css({'font-size':'40px'});
$('#dummy').html('abcd');
//ensure that trackwidth is only recorded once of the default font
if(trackwidth==null)
{
trackwidth=( $('#dummy').width());
}
//apply new font
$('#dummy').css('font-family',newfont);
checkwidth()
}
function checkwidth()
{
//check if div width changed
if($('#dummy').width() == trackwidth)
{
//if div never change, detect again every 500 milisecs
setTimeout(checkwidth, 500);
}
else
{
//do something, font is loaded!
}
}