Как мне дождаться первой перерисовки холста, пока не загрузится @ font-face-font? - PullRequest
4 голосов
/ 03 августа 2010

У меня есть HTML5-canvas и пишу текст с помощью context.fillText(...);, используя @ font-face-font.
Отображение страницы с помощью Firefox (3.6) У меня проблема в том, что на первом рисунке холста шрифт еще не загружен, поэтому текст будет отображаться стандартным шрифтом.
Я нашел «решение» здесь , но оно не работает, потому что шрифт используется только на холсте, а холст загружается и отображается с помощью ajax с использованием jQuery.
Есть ли лучшее решение, чем пытаться использовать тайм-аут setTimeout(repaintCanvas, 500);?

Ответы [ 2 ]

4 голосов
/ 03 августа 2010

Я думаю, что нашел решение с помощью ответа Рейгеля:

$.get('font/url.ttf', function() {
    // do canvas codes.... cause font is loaded...
});

Дополнительно используйте шрифт через font-family: 'fontfacename'; для родительского элемента холста.
Может быть, шрифт загружается дважды, не знаю. Но без второй загрузки он не будет отображаться правильно.

4 голосов
/ 03 августа 2010

ну, вы можете попробовать это,

$.get('font/url.ttf',function(){
   // do canvas codes.... cause font is loaded...
});
...