Правильний тип MIME для шрифтів


249

Шукаючи в Інтернеті, я знаходжу безліч різноманітних пропозицій щодо того, що є належним MIME-типом для шрифту, але я ще не повинен спробувати будь-який тип MIME, який позбавляє мене від попередження Chrome, наприклад:

Ресурс інтерпретується як шрифт, але передається за допомогою шрифту / otf типу MIME

Шрифт - це OTF.

Я до цього часу пробував такі типи MIME

  • шрифт / otf
  • додаток / шрифт-otf
  • додаток / шрифт
  • застосування / отф
  • додаток / октет-потік
  • додаток / x-font-otf
  • application / x-font-TrueType (я знаю, що це не truetype, але одне джерело цитувало це для OTF)

3
Як ви насправді пишете заголовок для цього? Я не дуже впевнений, що робити. Будь ласка, будь-яка допомога, яку ви можете надати.
Джош Сміт

1
@Josh: якщо ви подаєте шрифт за допомогою коду, ви хочете встановити заголовок "тип вмісту" на "шрифт / опетит" (якщо ви використовуєте OTF, як у моєму запитанні), але якщо ви просто вказуючи на файл фізичного шрифту, можливо, буде простіше встановити типи MIME на веб-сервері. Я не знаю, яким веб-сервером ви користуєтесь, тож виконайте пошук у Google за типами вашого сервера + mime або почніть нове запитання щодо ТА, що описує вашу проблему.
Девід Хедлунд

2
Назва неправильна. Це повинно бути "Як я замовчую" ресурс, інтерпретований як шрифт "в Chrome
djsadinoff

2
@djs: надано! Ви знаєте, якби я міг знайти спосіб змусити Chrome пам’ятати, що я хочу, щоб моя консоль перераховувала повідомлення та помилки журналу, але не попередження, є велика ймовірність, що я ніколи б не задав це питання в першу чергу.
Девід Гедлунд

Chrome попереджає нас, що він робить те, про що ми попросили. Я скоріше побачив би попередження, коли він успішно з'ясував растрові карти для використання в гліфах, якщо ви використовували @ font-face з .BMP файлом!
Космос Кардіфф людина

Відповіді:


137

Спробуйте використовувати "font / opentype".


51
Це, однак, незаконний міметик: в офіційних міметипах немає "шрифту /". Кращим типом mime буде "application / x-font-opentype" або "application / octet-stream". Перший - це "незареєстрований міметик з цією назвою", другий просто "двійкові дані"
dtech

Він не працює для мене на Chrome 16. Один з них працював: application / vnd.oasis.opendocument.formula-template.
jayarjo

16
Схоже, поточний переможець: application / x-font-woff - сподіваюся, що це допоможе!
погруддя

7
@busticated це було змінено на application / font-woff див. w3.org/TR/WOFF/#appendix-b
Holger

5
fontТип тепер офіційні iana.org/assignments/media-types/media-types.xhtml#font
MEMS

210

Існує ряд форматів шрифтів, для яких можна встановити типи 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) 

За даними спеціальної групи Internet Engineering, яка підтримує початковий документ щодо багатоцільового розширення Інтернет-пошти (типи 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 із запропонованим типом mime. Ймовірно, він повинен бути поданий до IANA в наступному році (можливо, до кінця 2016 року) відповідно до останніх строків виконання. Як і SFNT, формат шрифту масштабованого / сплайнованого контейнера, який використовується у посиланні на магістральну таблицю веб-шрифтів Google з їх бібліотекою sfntly java, і вже зареєстрований як тип mime з IANA і може бути доданий до цього списку, а також залежно від індивідуальних потреб.

ОНОВЛЕННЯ 4 жовтня 2017 року: ми можемо прослідкувати за розвитком формату WOFF2 тут, коли більшість сучасних браузерів успішно підтримують формат. Крім того, ми можемо слідувати "шрифтовому" запиту IETF "Шрифт" вищого рівня для відстеження коментарів (RFC) та документа щодо останнього набору запропонованих типів шрифту для затвердження.


Для тих, хто хоче вбудувати шрифт у відповідному порядку у свій 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

Гарні, дякую. У мене з’явилися повідомлення про помилку з .woff, і це виправлено у моєму файлі .htaccess. Я використавAddType application/x-font-woff
Danny Englander

application / x-font-opentype and application / x-font-ttf ідеально підходить для Linux Gnome Shell
Schmoove

1
Ttf, otf і woff2 застаріли. Дивіться stackoverflow.com/a/20723357/1356047
Йонас Берлін

126

Ігноруйте хромове попередження. Не існує стандартного типу MIME для шрифтів OTF.

шрифт / opentype може заглушити попередження, але це не робить його "правильним" ділом.

Можливо, вам краще скласти його, наприклад, з "application / x-opentype", оскільки принаймні "application" є зареєстрованим типом вмісту, тоді як "font" - ні.

Оновлення: OTF залишається проблемою, але WOFF вирішив додаток IANA MIME / font-woff у січні 2013 року.

Оновлення 2: OTF виріс тип MIME: application / font-sfnt У березні 2013 року. Цей тип також застосовується до .ttf


2
Цікаво. Чи є у вас посилання, які підтверджують це?
Kzqai

18
Не існує типу mime: "Примітка. Оскільки для шрифтів TrueType, OpenType і WOFF не визначені типи MIME, тип MIME у вказаному файлі не враховується." developer.mozilla.org/en/css/@font-face . Не створюйте нових типів mime верхнього рівня, використовуйте x- замість цього: tools.ietf.org/html/rfc2045#section-5 - djsadinoff 3 хв. Тому редагувати
djsadinoff

@djsadinoff Я вважаю, що IANA витісняє IETF. IETF подає проекти IANA , і оскільки IANA повідомляє, що woff - це тип MIME, то IETF змінюється в обмеженому списку.
Майк Корменді

@MikeKormendy, я не розумію ваш коментар, але ви, можливо, посилалися на попередню версію моєї відповіді, яка стосується лише WOFF. Я відновив оригінал
djsadinoff

@djsadinoff Це дивно, обмін стеками сказав, що ви щойно прокоментували це "3 хвилини тому".
Майк Корменді

85

З лютого 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) BedSheet .


2
Дублікатні публікації автоматично визначаються на SO, і ви ризикуєте видалити обидва повідомлення. Якщо у вас є корисна інформація для публікації, вам слід розглянути питання про відповідь і відповісти на власне запитання.
Бородін

Ак! Мене зловили! Так, мені було лінь. : / Я оновив іншу відповідь, тому вона більше стосується пов'язаного з нею питання. Я вважаю, що це все ще добре підходить для цієї сторінки.
Стів Ейнон

Існує величезна кількість сумнівних відповідей, які слід оцінити. Я намагаюсь прокоментувати те, що я зазначив, але найчастіше ваші відповіді просто зникнуть. Будь ласка, спробуйте залишатися актуальними.
Бородін

@SteveEynon: Opera, заснована на Presto, не відображає ꜱᴠɢ шрифтів, поданих із зображенням типу mime.
користувач2284570

12

Як специфічний екземпляр однієї з двох важких речей в обчислювальній техніці, цікаво побачити, як змінилися відповіді на це питання з моменту спочатку публікації цього питання. На щастя, повноваження, які навели порядок у хаосі:


У лютому цього року (2017 р.) W3C опублікував стандарт треку RFC 8081: "Шрифт" типу медіа верхнього рівня, що значно спрощує відповідні типи носіїв для файлів шрифтів:

Ця примітка служить для реєстрації та документування медіа-типу верхнього рівня "шрифт", під яким можуть бути зареєстровані підтипи форматів подання для шрифтів. Цей документ також служить заявкою на реєстрацію набору призначених підтипів, які є репрезентативними для деяких існуючих підтипів, які вже використовуються, і наразі зареєстровані в дереві «додаток» за їх окремими реєстраціями.

Це досить читабельний документ, який описує історичний контекст (відсутність "реєстрації форматів для шрифту" ), що спричинило заплутане поєднання типів та підтипів медіа. З (відносно) останнім зростанням популярності завантажуваних веб-шрифтів W3C визнав необхідність "інтуїтивного типу шрифту верхнього рівня" . Що вони придумали, це… font.

Відповідно, IANA з тих пір оновив свій офіційний список типів носіїв з fontтипом носія і всіх його підтипів , що в даний час вони визнають:

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

Ось сподіваємось, що це остання відповідь на це запитання.


2
Ентоні, це ще один чудовий ресурс на додаток до моєї посади. Дякуємо, що поділилися цим тут!
Майк Корменді


6

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.


6

Я щойно провів деякі дослідження в офіційному списку IANA . Я вважаю, що відповідь, надана тут "font / xxx", є невірною, оскільки в стандарті MIME немає типу "font".

Виходячи з RFC та IANA, це здається поточний стан п’єси станом на травень 2013 року:

Ці три офіційні та призначені IANA:

  • svg як "image / svg + xml"
  • woff як "додаток / шрифт-woff"
  • eot як "application / vnd.ms-fontobject"

Вони не є офіційними / призначеними, тому вони повинні використовувати синтаксис 'x-':

  • ttf як "додаток / x-font-ttf"
  • otf як "application / x-font-opentype"

Додаток / font-woff з'являється новим і, можливо, є офіційним лише з січня 2013 року. Отже, "application / x-font-woff" може бути безпечнішим / суміснішим за короткий термін.


5

З березня 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)

Детальніше ...


2

У просторі електронних книг можна використовувати наступне:

application/vnd.ms-opentype

Я б міг уявити, що це те саме для Інтернету.




1

Можливо, це комусь допоможе. Я бачив, що на IIS 7 .ttfвже відомий мім-тип. Він налаштований як:

application/octet-stream

Так що я просто додав , що для всіх типів CSS шрифту ( .oet, .svg, .ttf, .woff) і IIS почав служити їм. Інструменти для розробників Chrome також не скаржаться на повторну інтерпретацію типу.

Ура, Майкл


1
application/octet-streamє менш "відомим типом" і більше "загальним купою байтів". :) Веб-переглядач скаржиться на те, що цей тип подається, оскільки він не містить інформації про те, як слід інтерпретувати матеріал.
cHao

-1

Один із способів заглушити це попередження від Chrome - оновити Chrome, а потім переконатися, що тип вашої міми є одним із таких:

 "font/ttf"
 "font/opentype"
 "application/font-woff"
 "application/x-font-type1"
 "application/x-font-ttf"
 "application/x-truetype-font"

Цей список вказаний на виправлення, знайдене в Bug 111418 на веб-сайті webkit.org .

Цей же патч демонструє повідомлення з "Попередження" до "Журналу", тому просто оновлення Chrome до будь-якої версії березня 2013 року позбудеться жовтого трикутника.

Оскільки питання полягає у приглушенні попередження про Chrome, а люди можуть з будь-яких причин триматися за старі версії Chrome, я зрозумів, що це варто додати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.