Я экспериментировал с тегом canvas и Javascript. Я создал страницу, которая берет твиты из общедоступной хроники Twitter и оживляет их. Это работает с использованием элемента холста в фоновом режиме для анимации. Когда анимация завершена, создается элемент div с тем же текстом поверх. Я делаю это так, чтобы текст твита можно было выбирать, а ссылки можно было нажимать.
Теперь в Safari, Chrome и даже Opera текст холста и текст div выглядят практически одинаково. Тем не менее, в Firefox размер текста достаточно разный, чтобы он «прыгал» в тот момент, когда он превращается в div.
Кто-нибудь знает, как заставить Firefox отображать текст одинаково на элементе canvas и div, используя CSS? Или это несоответствие рендеринга движку.
Я разместил страницу на моем сайте , если вы хотите понять, что я имею в виду.
Теперь для кода:
CSS, который я использую для рендеринга div, содержит:
line-height: 21px; font-weight: 100; font-family: Georgia, "New Century Schoolbook", "Nimbus Roman No9 L", serif; font-size: 20px;
Для рендеринга на холсте я использую:
this.context.font = this.scale + 'px Georgia';
this.context.fillStyle = "white";
this.context.strokeStyle = 'white';
this.context.fillText(this.text, 0, 0);
this.context.strokeText(this.text, 0, 0);
где this.scale - анимированный масштабный коэффициент, который заканчивается точно в 20px. Итак, подведем итог: я использую один и тот же шрифт и получаю одинаковый размер px, но Firefox по-разному отображает текст между Canvas и CSS.
(правка) Вот пример скриншота:
альтернативный текст http://danforys.com/temp/firefox-behaviour.png
Первая строка - текст, анимируемый при использовании canvas, вторая строка - результирующий div.