Правильный тип MIME для шрифтов - PullRequest
238 голосов
/ 20 мая 2010

Просматривая в Интернете, я нахожу кучу разных предложений о том, каков правильный тип MIME для шрифта, но мне еще предстоит попробовать любой тип MIME, который избавляет меня от предупреждения Chrome, например:

Ресурс интерпретируется как шрифт, но передается шрифтом MIME-типа / otf

Шрифт OTF.

Я пробовал следующие типы MIME

  • шрифт / ОПФ ​​
  • Приложение / шрифт OTF
  • Приложение / шрифт
  • применение / ОПФ ​​
  • приложения / октет-поток
  • применение / х-шрифт-ОПФ
  • application / x-font-TrueType (я знаю, что это не правда, но один источник цитирует это для OTF)

Ответы [ 14 ]

197 голосов
/ 02 июня 2012

Существует несколько форматов шрифтов, для которых можно установить типы MIME как на серверах Apache, так и на серверах IIS. Мне традиционно везло со следующим:

svg   as "image/svg+xml"                  (W3C: August 2011)
ttf   as "application/x-font-ttf"         (IANA: March 2013)
      or "application/x-font-truetype"
otf   as "application/x-font-opentype"    (IANA: March 2013)
woff  as "application/font-woff"          (IANA: January 2013)
woff2 as "application/font-woff2"         (W3C W./E.Draft: May 2014/March 2016)
eot   as "application/vnd.ms-fontobject"  (IANA: December 2005)
sfnt  as "application/font-sfnt"          (IANA: March 2013) 

По данным Целевой группы по Интернет-разработкам, которая ведет первоначальный документ, касающийся многоцелевых расширений почты в Интернете (типы MIME), здесь: http://tools.ietf.org/html/rfc2045#section-5 ... в нем конкретно говорится:

" Ожидается, что дополнения к большему набору поддерживаемые типы обычно могут быть достигнуты путем создания новых подтипы этих начальных типов. В будущем больше типов верхнего уровня может быть определено только путем расширения стандарта к этому стандарту. Если по какой-либо причине должен использоваться другой тип верхнего уровня, он должен быть дано имя, начинающееся с "X-", чтобы указать его нестандартный статус и чтобы избежать потенциального конфликта с будущим официальным именем."

Как бы то ни было, со временем дополнительные типы MIME добавляются по мере создания и принятия стандартов, поэтому мы видим примеры типов MIME, специфичных для поставщиков, таких как vnd.ms-fontobject и т. П.

ОБНОВЛЕНИЕ 16 августа 2013 г .: WOFF был официально зарегистрирован в IANA 3 января 2013 г. и Webkit обновлен 5 марта 2013 г. и браузеры которые получают это обновление в своих последних версиях, начнут выдавать предупреждения о типах MIME сервера со старым объявлением x-font-woff. Поскольку предупреждения только раздражают, я бы порекомендовал сразу же перейти на утвержденный тип MIME. В идеальном мире предупреждения разрешатся вовремя.

ОБНОВЛЕНИЕ 26 февраля 2015 г .: WOFF2 теперь в черновике W3C-редактора с предлагаемым типом пантомимы. Вероятно, он должен быть представлен в IANA в следующем году (возможно, к концу 2016 года) в соответствии с более поздними сроками выполнения. Кроме того, SFNT, формат шрифта масштабируемого / сплайнового контейнера, используемый в справочной таблице Google Web Fonts с их sfntly java библиотекой и уже зарегистрирован как тип MIME в IANA и может быть добавленным в этот список, а также в зависимости от индивидуальных потребностей.

ОБНОВЛЕНИЕ 4 октября 2017 года: Мы можем следить за развитием формата WOFF2 здесь , при этом большинство современных браузеров успешно поддерживают этот формат. Кроме того, мы можем следовать запросу IETF «Шрифт» для типа носителя верхнего уровня для комментариев (RFC) tracker и document относительно последнего набора предлагаемых типов шрифтов для утверждения.


Для желающих встроить гарнитуру в правильном порядке в ваш CSS, пожалуйста, посетите эту статью . Но мне снова повезло со следующим заказом:

@font-face {
    font-family: 'my-web-font';
    src: url('webfont.eot');
    src: url('webfont.eot?#iefix') format('embedded-opentype'),
         url('webfont.woff2') format('woff2'),
         url('webfont.woff') format('woff'),
         url('webfont.ttf') format('truetype'),
         url('webfont.svg#webfont') format('svg');
    font-weight: normal;
    font-style: normal;
}

Для авто-свойств Subversion они могут быть перечислены как:

# Font formats
svg   = svn:mime-type=image/svg+xml
ttf   = svn:mime-type=application/x-font-ttf
otf   = svn:mime-type=application/x-font-opentype
woff  = svn:mime-type=application/font-woff
woff2 = svn:mime-type=application/font-woff2
eot   = svn:mime-type=application/vnd.ms-fontobject
sfnt  = svn:mime-type=application/font-sfnt
129 голосов
/ 25 мая 2010

Попробуйте использовать "font / opentype".

124 голосов
/ 11 января 2011

Игнорировать предупреждение Chrome. Для шрифтов OTF стандартного типа MIME не существует.

font / opentype может заставить замолчать предупреждение, но это не делает его «правильным».

Возможно, вам лучше придумать, например, с "application / x-opentype", потому что по крайней мере "application" является зарегистрированным типом контента, а "font" - нет.

Обновление: OTF остается проблемой, но WOFF расширил тип IANA MIME application / font-woff в январе 2013 года.

Обновление 2: OTF увеличил тип MIME: application / font-sfnt В марте 2013 года. Этот тип также применяется к .ttf

68 голосов
/ 22 декабря 2013

С февраля 2017 г. RFC 8081 группирует все типы MIME для шрифтов под верхним уровнем font тип носителя. Старые типы MIME из моей первоначальной публикации теперь перечислены как устаревшие.

Типы шрифтов, перечисленные IANA , теперь:

Другие нестандартные форматы шрифтов оставлены как:


[Устаревшее исходное сообщение]

Поскольку в Интернете все еще много путаницы в отношении типов MIME для веб-шрифтов, я подумал, что дам текущий ответ, дополненный датами вступления в силу и поддерживающими ссылки на IANA и W3C.

Вот официальные типы MIME для веб-шрифтов:

Обратите внимание, что существует движение за изменение всех вышеперечисленных типов MIME на font/XXX, что подтверждается W3C в его предложении для WOFF v2. Это отслеживается Инженерной рабочей группой по Интернету (IETF) под Тип верхнего уровня шрифта и в феврале 2017 года был утвержден статус RFC (см. RFC 8081 ), поэтому все может измениться !

Что касается темы веб-серверов, то стоит упомянуть, что HTTP-ответы могут gzip (или иным образом сжимать) все вышеперечисленные форматы шрифтов, кроме .woff & .woff2, которые уже сильно сжаты.

Я говорю больше в MIME-типы для веб-шрифтов с простыней (Fantom) .

9 голосов
/ 10 апреля 2017

Как конкретный пример одного из двух сложных моментов в вычислительной технике, интересно посмотреть, как изменились ответы на этот вопрос с тех пор, как этот вопрос был первоначально опубликован. К счастью, силы, которые были наведены в хаосе:


В феврале этого года (2017) W3C опубликовал Standards Track RFC 8081: «Тип шрифта» верхнего уровня , который значительно упрощает соответствующие типы медиа для шрифта файлы:

Эта заметка служит для регистрации и документирования типа носителя "font" верхнего уровня, в соответствии с которым могут быть зарегистрированы подтипы для форматов представления шрифтов. Этот документ также служит в качестве заявки на регистрацию для набора предполагаемые подтипы, которые представляют некоторые существующие подтипы уже используется, и в настоящее время зарегистрирован в дереве приложений их отдельные регистрации.

Это довольно читаемый документ, в котором описывается исторический контекст (отсутствие «регистрация форматов для шрифта» ), что привело к запутанному сочетанию типов и подтипов мультимедиа. В связи с (относительно) недавним ростом популярности загружаемых веб-шрифтов W3C признал необходимость «интуитивно понятного типа шрифта верхнего уровня» . То, что они придумали, это ... font.

Соответственно, IANA с тех пор обновила свой официальный список типов носителей , указав тип носителя font и все его подтипы, которые они в настоящее время распознают:

collection  font/collection
otf     font/otf
sfnt    font/sfnt
ttf     font/ttf
woff    font/woff
woff2   font/woff2

Здесь мы надеемся, что это последний ответ, который нужен этому вопросу.

5 голосов
/ 09 мая 2013

Я только что провёл исследование по официальному списку IANA . Я полагаю, что приведенный здесь ответ «font / xxx» является неправильным, поскольку в стандарте MIME отсутствует тип «font».

На основании RFC и IANA, похоже, что текущее состояние игры на май 2013 года:

Эти три официальных и назначенных IANA:

  • svg как "image / svg + xml"
  • woff как "application / font-woff"
  • eot as "application / vnd.ms-fontobject"

Они не являются официальными / назначенными, и поэтому должны использовать синтаксис 'x-':

  • ttf как "application / x-font-ttf"
  • otf как "application / x-font-opentype"

Приложение / font-woff выглядит новым и, возможно, только официальным с января 2013 года. Поэтому «application / x-font-woff» может быть более безопасным / более совместимым в краткосрочной перспективе.

5 голосов
/ 07 февраля 2011

FWIW в отношении Apache 2.2 VirtualHosting и mod_mime, протестированных на Debian Linux и OS X Leopard и Snow Leopard:

Если у вас есть конфигурация VirtualHost, вы захотите добавить типы через директиву AddType следующим образом, по крайней мере, внизу конфигурации следующим образом:

....
   AddType font/opentype .otf
   AddType font/ttf .ttf
</VirtualHost>

Проверено на Chrome Unstable / Trunk и Safari WebKit Nightly, что исключает предупреждения о потоке mime-октетов для типов шрифтов ttf и otf.

Примечание: .htaccess не имеет эффекта при работе с VirtualHosting. Если вы разрабатываете для нескольких сайтов, вы будете использовать VirtualHosting, и каждая конфигурация будет нуждаться в этих дополнениях AddType.

4 голосов
/ 31 марта 2016

С марта 2013 года IANA.ORG рекомендует для .otf :
application/font-sfnt

Другие шрифты:

.eot  ->  application/vnd.ms-fontobject (as from December 2005)
.otf  ->  application/font-sfnt         (as from March 2013)
.svg  ->  image/svg+xml                 (as from August 2011)
.ttf  ->  application/font-sfnt         (as from March 2013)
.woff ->  application/font-woff         (as from January 2013)

См. подробнее ...

4 голосов
/ 10 июля 2013

Вот решение NGINX

файл

/usr/local/nginx/conf/mime.types

добавить

font/ttf                      ttf;
font/opentype                 otf;
application/font-woff         woff2;
application/font-woff         woff;
application/vnd.ms-fontobject eot;

удалить

application/octet-stream        eot;

Благодаря Майку Фулчеру

http://drawingablank.me/blog/font-mime-types-in-nginx.html

1 голос
/ 31 марта 2017

По состоянию на февраль 2017 года RFC 8081 добавляет шрифты / * типы носителей, которые также перечислены в списке IANA Media Types . font/otf находится в этом списке.

...