Исправьте директивы Apache AddType для типов MIME шрифтов
Я использую @font-face для встроенных шрифтов (спасибо Paul Irish). Пытаясь исправить предупреждение Chrome о неправильном типе MIME для шрифтов woff, я обнаружил массу противоречивых предложений.
Кажется, все согласны с тем, что.eot шрифты (для IE 6-8?) Должны обслуживаться с использованием
AddType application/vnd.ms-fontobject .eot
Для шрифтов.ttf (старые браузеры не IE) я видел
AddType application/x-font-ttf .ttf
AddType application/octet-stream .ttf
AddType font/truetype .ttf
AddType font/ttf .ttf
И для.woff шрифтов (новый стандарт?) Я видел
AddType application/font-wof .woff
AddType application/x-font-woff .woff
AddType application/x-woff .woff
Я понимаю, что правильным типом MIME для woff будет application/font-woff, но пока стандарт не станет официальным, Chrome понимает application/x-font-woff.
Я понимаю, что наполовину ответил на мой вопрос, задавая его, но вопрос действительно: есть ли авторитетное руководство или дополнительный совет о том, какие типы MIME следует использовать для шрифтов?
Обновление (на случай, если это кому-нибудь поможет): поскольку в этом нет ничего авторитетного, я остановился на использовании следующих типов MIME шрифтов в моем.htaccess (что по крайней мере делает Chrome счастливым):
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf
AddType application/x-font-woff .woff
6 ответов
Обычно MIME-типы поступают из RFC. У вас есть исчерпывающий список на сайте IANA, но ни один из них не относится к расширениям шрифтов. Кроме того, документ, описывающий формат WOFF, является черновым и не относится к типу mime для использования. Похоже, что пока нет надежных ссылок на эту тему.
Обновить
W3C выпустил WOFF в качестве рекомендации, и в Приложении B определили тип MIME как application/font-woff
, Он также был добавлен на сайт IANA, который вы упомянули. -GKFX
Я понимаю, что этот вопрос старый, но для тех, кто ищет быстрое копирование / вставку для добавления шрифтов MIME-типов в их.htaccess:
<IfModule mod_mime.c>
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-opentype .otf
AddType image/svg+xml .svg
AddType application/x-font-ttf .ttf
AddType application/font-woff .woff
AddType application/font-woff2 .woff2
</IfModule>
Я только что проверил официальный список IANA. Похоже, что это текущее состояние игры на май 2013 года:
Эти три являются официальными и назначены IANA:
- SVG как "изображение / SVG + XML"
- woff как "application/font-woff"
- обозначается как "application/vnd.ms-fontobject"
Они не являются официальными / назначенными, и поэтому должны использовать синтаксис 'x-':
- ттф как "приложение / x-font-ttf"
- otf как "application / x-font-opentype"
Похоже, что тип 'font' не существует, поэтому любой тип времени, который вы видите 'font / xxx', является поддельным. Возможно, x-font / xxx будет допустимым, не уверен. IIS8 поставляется с парой записей, как это. Не уверен, что MS считает, что эти 'font / xxx' необходимы для совместимости, или они просто не читают RFC:-)
Приложение / font-woff кажется новым и, возможно, только официальным с января 2013 года. Так что "application/x-font-woff" может быть более безопасным / более совместимым в краткосрочной перспективе.
Я думаю, что стоит упомянуть, что с марта 2013 года IANA .otf
а также .ttf
Расширения MIME-типа приложения / font-sfnt.
Полный и актуальный список официальных типов MIME см. В моем ответе о правильном типе MIME для шрифтов.
В 2019 году можно использовать:
AddType font/otf .otf
AddType font/ttf .ttf
AddType font/woff .woff
AddType font/woff2 .woff2
AddType application/vnd.ms-fontobject .eot
Вот пример кеширования всех типов шрифтов в apache (проверено на Google Page Speed):
AddType application/font-sfnt otf ttf
AddType application/font-woff woff
AddType application/font-woff2 woff2
AddType application/vnd.ms-fontobject eot
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-sfnt "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"