Właściwy typ MIME dla czcionek

249

Przeszukując internet, znajduję mnóstwo różnych sugestii dotyczących tego, jaki jest właściwy typ MIME dla czcionki, ale jeszcze nie wypróbowałem żadnego typu MIME, który pozbawiłby mnie ostrzeżenia Chrome, takiego jak:

Zasób interpretowany jako czcionka, ale przesłany za pomocą czcionki / otf typu MIME

Czcionka jest OTF.

Do tej pory wypróbowałem następujące typy MIME

  • font / otf
  • application / font-otf
  • aplikacja / czcionka
  • application / otf
  • application / octet-stream
  • application / x-font-otf
  • application / x-font-TrueType (wiem, że to nie jest prawdziwy typ, ale jedno źródło zacytowało to dla OTF)
David Hedlund
źródło
3
Jak piszesz do tego nagłówek? Nie jestem do końca pewien, co robić. Pozdrawiam za wszelką możliwą pomoc.
Josh Smith
1
@Josh: jeśli podajesz czcionkę za pomocą kodu, chcesz ustawić nagłówek „content-type” na „font / opentype” (jeśli używasz OTF jak w moim pytaniu), ale jeśli po prostu wskazując na fizyczny plik czcionek, ustawienie typów MIME na serwerze sieciowym może być łatwiejsze. Nie wiem, jakiego serwera używasz, więc wyszukaj w Google typy serwerów + mime lub rozpocznij nowe pytanie na SO opisujące Twój problem.
David Hedlund,
2
Tytuł jest zły. Powinno to być ostrzeżenie „Jak wyciszyć” „zasób interpretowany jako czcionka” w Chrome
djsadinoff 11.01.11
2
@djs: przyznano! Wiesz, gdybym mógł znaleźć sposób, by Chrome zapamiętał, że chcę, aby moja konsola wyświetlała komunikaty dziennika i błędy, ale nie ostrzeżenia, istnieje spora szansa, że ​​nigdy nie zadałbym tego pytania.
David Hedlund
Chrome ostrzega nas, że robi to, o co prosiliśmy. Wolę zobaczyć ostrzeżenie, gdy z powodzeniem wymyśli bitmapy do użycia dla glifów, jeśli użyjesz @ font-face z plikiem .BMP!
mężczyzna z kosmosu w Cardiff

Odpowiedzi:

137

Spróbuj użyć „font / opentype”.

spd
źródło
51
Jest to jednak nielegalny typ mimetyczny: w oficjalnych typach mimetycznych nie ma „font /”. Lepszym typem MIME byłoby „application / x-font-opentype” lub „application / octet-stream”. Pierwszy to „niezarejestrowany
typ mimetyczny
Nie działa dla mnie w przeglądarce Chrome 16. Jednym z nich było: application / vnd.oasis.opendocument.formula-template.
jayarjo
16
Wygląda na to, że obecny zwycięzca to: application / x-font-woff - mam nadzieję, że to pomoże!
aresztowano
7
@ustified to zostało zmienione na application / font-woff patrz w3.org/TR/WOFF/#appendix-b
Holger
5
fonttyp jest teraz oficjalny iana.org/assignments/media-types/media-types.xhtml#font
mems
209

Istnieje wiele formatów czcionek, dla których można ustawić typy MIME, zarówno na serwerach Apache, jak i IIS. Tradycyjnie miałem szczęście :

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) 

Według grupy zadaniowej ds. Inżynierii internetowej, która prowadzi wstępny dokument dotyczący rozszerzeń wielozadaniowej poczty internetowej (typy MIME) tutaj: http://tools.ietf.org/html/rfc2045#section-5 ... w szczegółach mówi:

Oczekuje się, że uzupełnienia do większego zestawu obsługiwanych typów można zasadniczo osiągnąć poprzez utworzenie nowych podtypów tych typów początkowych. W przyszłości więcej typów najwyższego poziomu można zdefiniować jedynie poprzez rozszerzenie standardowej ścieżki do tego standardu Jeżeli z jakiegokolwiek powodu ma zostać użyty inny typ najwyższego poziomu, należy nadać mu nazwę rozpoczynającą się od „X-”, aby wskazać jego niestandardowy status i uniknąć potencjalnego konfliktu z przyszłą oficjalną nazwą.

W miarę upływu czasu dodawane są dodatkowe typy MIME, gdy standardy są tworzone i akceptowane, dlatego widzimy przykłady specyficznych dla dostawcy typów MIME, takich jak vnd.ms-fontobject i tym podobne.

AKTUALIZACJA 16 sierpnia 2013: WOFF został formalnie zarejestrowany w IANA 3 stycznia 2013 r., A Webkit został zaktualizowany 5 marca 2013 r., A przeglądarki, które pozyskują tę aktualizację w swoich najnowszych wersjach, zaczną wyświetlać ostrzeżenia o typach MIME serwera ze starymi Deklaracja x-font-woff. Ponieważ ostrzeżenia są irytujące, zaleciłbym natychmiastowe przejście na zatwierdzony typ MIME. W idealnym świecie ostrzeżenia znikną z czasem.

AKTUALIZACJA 26 lutego 2015: WOFF2 jest teraz w wersji roboczej Redakcji W3C z proponowanym typem MIME. Prawdopodobnie należy go przesłać do IANA w następnym roku (być może do końca 2016 r.) Zgodnie z nowszymi terminami postępu. Podobnie SFNT, skalowalny / wielowypustowy format czcionki kontenera używany w tabeli szkieletu czcionek Google Web Fonts z ich biblioteką sfntly java i jest już zarejestrowany jako typ MIME w IANA i może być dodany do tej listy, a także może być dodany w zależności od indywidualnych potrzeb.

UPDATE 04 październik 2017: Możemy śledzić postęp formacie WOFF2 tutaj z większością nowoczesnych przeglądarek wspierających format pomyślnie. Możemy również śledzić żądanie IETF „Czcionki” najwyższego poziomu typu mediów do śledzenia komentarzy i dokumentów dotyczących najnowszego zestawu proponowanych typów czcionek do zatwierdzenia.


Jeśli chcesz osadzić krój pisma we właściwej kolejności w swoim CSS, odwiedź ten artykuł . Ale znowu miałem szczęście w następującej kolejności:

@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;
}

W przypadku auto-właściwości Subversion można je wymienić jako:

# 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
Mike Kormendy
źródło
Dobre, dzięki. Miałem komunikaty o błędach z rozszerzeniem .woff i naprawiłem to w moim pliku .htaccess. UżyłemAddType application/x-font-woff
Danny Englander
application / x-font-opentype i application / x-font-ttf działają idealnie dla Linux Gnome Shell
Schmoove
1
Ttf, otf i woff2 są nieaktualne. Zobacz stackoverflow.com/a/20723357/1356047
Jonas Berlin,
126

Zignoruj ​​chromowane ostrzeżenie. Nie ma standardowego typu MIME dla czcionek OTF.

font / opentype może wyciszyć ostrzeżenie, ale nie oznacza to, że jest to „właściwe” działanie.

Prawdopodobnie lepiej jest je wymyślić, np. Z „application / x-opentype”, ponieważ przynajmniej „application” jest zarejestrowanym typem treści, a „font” nie.

Aktualizacja: OTF pozostaje problemem, ale WOFF wyhodował aplikację typu IANA MIME / font-woff w styczniu 2013 r.

Aktualizacja 2: OTF rozwinął typ MIME: application / font-sfnt W marcu 2013 r. Ten typ dotyczy również .ttf

djsadinoff
źródło
2
Ciekawy. Czy masz jakieś referencje, które to potwierdzają?
Kzqai
18
Nie ma typu MIME: „Uwaga: Ponieważ nie ma zdefiniowanych typów MIME dla czcionek TrueType, OpenType i WOFF, typ MIME określonego pliku nie jest brany pod uwagę.” developer.mozilla.org/en/css/@font-face . Nie twórz nowych typów mime najwyższego poziomu, zamiast tego użyj x-: tools.ietf.org/html/rfc2045#section-5 - djsadinoff 3 minuty temu edycja
djsadinoff
@ djsadinoff Wierzę, że IANA zastępuje IETF. IETF przesyła wersje robocze do IANA , a ponieważ IANA zgłasza, że ​​woff jest typem MIME, IETF jest zastępowany na ograniczonej liście.
Mike Kormendy
@MikeKormendy, nie rozumiem twojego komentarza, ale być może odnosiłeś się do poprzedniej wersji mojej odpowiedzi, która dotyczy tylko WOFF. Przywróciłem oryginał
djsadinoff
@ djsadinoff To dziwne, wymiana stosów powiedziała, że ​​właśnie skomentowałeś to „3 minuty temu”.
Mike Kormendy
84

Od lutego 2017 r. RFC 8081 grupuje wszystkie typy MIME dla czcionek poniżej fonttypu mediów najwyższego poziomu . Starsze typy MIME z mojego oryginalnego posta są teraz wymienione jako przestarzałe.

Typy czcionek wymienione przez IANA to teraz:

Pozostały inne niestandardowe formaty czcionek, takie jak:


[Nieaktualny oryginalny post]

Ponieważ w sieci wciąż istnieje wiele nieporozumień dotyczących typów czcionek MIME, pomyślałem, że podam aktualną odpowiedź, wraz ze skutecznymi datami i obsługą linków do IANA i W3C.

Oto oficjalne typy MIME czcionek internetowych:

Należy zauważyć, że istnieje ruch, aby zmienić wszystkie powyższe typy MIME font/XXX, co zostało poparte przez W3C w jego propozycji dotyczącej WOFF v2. Jest to śledzone przez Internet Engineering Task Force (IETF) w obszarze Czcionka najwyższego poziomu, aw lutym 2017 r. Uzyskał status RFC (patrz RFC 8081 ), więc może jeszcze się zmienić!

W temacie dotyczącym serwerów internetowych warto wspomnieć, że odpowiedzi HTTP mogą gzip(lub w inny sposób kompresować) wszystkie powyższe formaty czcionek, z wyjątkiem .woff&.woff2 które są już mocno skompresowane.

Mówię więcej w typach MIME dla czcionek internetowych za pomocą (Fantom) BedSheet .

Steve Eynon
źródło
2
Duplikaty postów są automatycznie wykrywane w SO i możesz ryzykować usunięcie obu postów. Jeśli masz przydatne informacje do opublikowania, powinieneś rozważyć zadanie i udzielenie odpowiedzi na swoje pytanie.
Borodin
Ack! Zostałem złapany! Tak, byłem leniwy. : / Zaktualizowałem drugą odpowiedź, więc jest bardziej adekwatna do związanego z nią pytania. Uważam jednak, że nadal dobrze pasuje do tej strony.
Steve Eynon,
Istnieje ogromna liczba wątpliwych odpowiedzi do oceny. Staram się komentować te, które zaznaczam, ale najczęściej twoje odpowiedzi po prostu znikają. Spróbuj pozostać aktualny.
Borodin
@SteveEynon: Opera oparta na Presto nie renderuje served czcionek obsługiwanych z typem mime obrazu.
user2284570,
12

Jako konkretny przykład jednej z dwóch trudnych rzeczy w informatyce, interesujące jest zobaczenie, jak zmieniły się odpowiedzi na to pytanie, odkąd to pytanie zostało pierwotnie opublikowane. Na szczęście moce, które wprowadziły porządek w chaosie:


W lutym tego roku (2017) W3C opublikowało Standard Stand Track RFC 8081: „Typ czcionki” najwyższego poziomu typu „font”, który znacznie upraszcza odpowiednie typy multimediów dla plików czcionek:

Ta notatka służy do zarejestrowania i udokumentowania najwyższego poziomu typu nośnika „czcionka”, pod którym można rejestrować podtypy formatów reprezentacji czcionek. Dokument ten służy również jako aplikacja rejestracyjna dla zestawu zamierzonych podtypów, które są reprezentatywne dla niektórych istniejących podtypów już używanych, a obecnie zarejestrowanych w drzewie „aplikacji” przez ich oddzielne rejestracje.

Jest to dość czytelny dokument i opisuje kontekst historyczny (brak „rejestracji formatów czcionek” ), co spowodowało mylącą mieszankę typów i podtypów mediów. Dzięki (stosunkowo) niedawnemu wzrostowi popularności czcionek internetowych do pobrania, W3C uznało potrzebę „intuicyjnego rodzaju czcionek najwyższego poziomu” . Co wymyślili to ... font.

W związku z tym już od IANA updated ich oficjalną listę typów mediów z fontrodzaju mediów i wszystkich jego podtypów że obecnie uznają:

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

Mam nadzieję, że to ostatnia odpowiedź, jakiej potrzebuje to pytanie.

Anthony Geoghegan
źródło
2
Anthony, to kolejny świetny zasób oprócz mojego postu. Dziękujemy za udostępnienie tego tutaj!
Mike Kormendy,
7

Oto rozwiązanie NGINX

plik

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

Dodaj

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

usunąć

application/octet-stream        eot;

Dzięki Mike Fulcher

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

BG Bruno
źródło
6

FWIW dotyczące Apache 2.2 VirtualHosting i mod_mime przetestowane na systemach Debian Linux i OS X Leopard i Snow Leopard:

Jeśli masz konfigurację VirtualHost, będziesz chciał dodać typy za pomocą dyrektywy AddType w następujący sposób przynajmniej na dole konfiguracji w następujący sposób:

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

Testowany przeciwko Chrome Unstable / Trunk i Safari WebKit Nightly, który eliminuje ostrzeżenia mime-octet-stream zarówno dla czcionek ttf, jak i otf.

Uwaga: .htaccess ma zerowy efekt w przypadku VirtualHosting. Jeśli tworzysz dla kilku witryn, będziesz używać programowania VirtualHosting i każda konfiguracja będzie wymagać tych dodatków AddType.

Marc J. Driftmeyer
źródło
6

Właśnie przeprowadziłem badania na oficjalnej liście IANA . Uważam, że podana tutaj odpowiedź „font / xxx” jest niepoprawna, ponieważ w standardzie MIME nie ma typu „font”.

W oparciu o RFC i IANA wydaje się, że jest to obecny stan gry z maja 2013 r .:

Te trzy są oficjalne i przypisane przez IANA:

  • SVG jako „image / svg + xml”
  • woff jako „application / font-woff”
  • eot jako „application / vnd.ms-fontobject”

Nie są one oficjalne / przypisane, dlatego należy użyć składni „x-”:

  • ttf jako „application / x-font-ttf”
  • otf jako „application / x-font-opentype”

Aplikacja / font-woff wydaje się nowa i być może oficjalna od stycznia 2013 r. Tak więc „application / x-font-woff” może być bezpieczniejsza / bardziej kompatybilna w krótkim okresie.

Aaron
źródło
5

Począwszy od marca 2013 IANA.ORG zaleca dla .OTF :
application/font-sfnt

Inne czcionki:

.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)

Zobacz więcej ...

Serge
źródło
2

W przestrzeni eBook można używać:

application/vnd.ms-opentype

Wyobrażam sobie, że to samo dotyczy Internetu.

Arktype
źródło
2

Od lutego 2017 r. RFC 8081 dodaje typy czcionek / *, które są również wymienione na liście typów mediów IANA . font/otfjest na tej liście.

George Helyar
źródło
1

Może to komuś pomoże. Widziałem, że na IIS 7 .ttfjest już znany typ MIME. Jest skonfigurowany jako:

application/octet-stream

Więc po prostu dodać, że dla wszystkich rodzajów czcionek CSS ( .oet, .svg, .ttf,.woff ) i IIS rozpoczęła służąc im. Narzędzia deweloperskie Chrome również nie narzekają na ponowne interpretowanie tego typu.

Pozdrawiam, Michael

Michael Kennedy
źródło
1
application/octet-streamjest mniej „znanym typem”, a bardziej „ogólną wiązką bajtów”. :) Przeglądarka narzeka na obsługę tego typu, ponieważ nie zawiera żadnych informacji o tym, jak należy interpretować te rzeczy.
cHao
-1

Jednym ze sposobów wyciszenia tego ostrzeżenia z Chrome byłoby zaktualizowanie Chrome, a następnie upewnienie się, że Twój typ MIME jest jednym z następujących:

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

Ta lista jest według łaty znalezionej w Bug 111418 na webkit.org .

Ta sama łatka obniża wiadomość z „Ostrzeżenia” do „Logu”, więc po prostu aktualizacja Chrome do dowolnej wersji po marcu 2013 r. Pozbyłaby się żółtego trójkąta.

Ponieważ pytanie dotyczy wyciszenia ostrzeżenia Chrome, a ludzie mogą trzymać się starych wersji Chrome z jakichkolwiek powodów, uznałem, że warto to dodać.

Cardiff Space Man
źródło