С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?
Вкратце об истории вопроса
В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций
Синтаксис Fontspring @Font-Face
А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
@font-face {
font-family: 'MyFontFamily';
src: url('myfont-webfont.eot?') format('eot'),
url('myfont-webfont.woff') format('woff'),
url('myfont-webfont.ttf') format('truetype'),
url('myfont-webfont.svg#svgFontName') format('svg');
}
Что? Я не понял.
Как это срабатывает
Internet Explorer (в версиях более ранних, чем девятая) содержал баг в обработчике значения «src».
Совместимость с браузерами
А как насчёт шрифтов в «data:…»-адресах?
Вы можете воспользоваться этим синтаксисом и для встраивания шрифтов
@font-face {
font-family: 'MyFontFamily';
src: url('myfont-webfont.eot?') format('embedded-opentype');
}
@font-face {
font-family: 'MyFontFamily';
src: url(data:font/truetype;charset=utf-8;base64,ЗДЕСЬ_ДАННЫЕ_КОДОМ_BASE64) format('truetype'),
url(data:font/woff;charset=utf-8;base64,ЗДЕСЬ_ДАННЫЕ_КОДОМ_BASE64) format('woff'),
url('myfont-webfont.svg#svgFontName') format('svg');
}
Обновление 1 — от 3 февраля 2011 г.
The CSSNinja великолепно подметил, как можно принудить IE9 подхватить
Примечание переводчика: CSSNinja тоже не стоит на месте и предложил
Обновление 2 — от 4 февраля 2011 г.
IE отказывался загружать вебошрифты, когда страница открыта локально (с диска у читателя). Получается, что IE предпочитает вопросительный знак