Jenis MIME yang tepat untuk font

249

Mencari di web, saya menemukan banyak saran berbeda untuk apa jenis MIME yang tepat untuk font, tetapi saya belum mencoba jenis MIME apa pun yang membuat saya mendapat peringatan Chrome seperti berikut:

Sumber daya diartikan sebagai font tetapi ditransfer dengan jenis font MIME / otf

Fonnya adalah OTF.

Saya sudah mencoba jenis MIME berikut sejauh ini

  • font / otf
  • aplikasi / font-otf
  • aplikasi / font
  • aplikasi / otf
  • application / octet-stream
  • application / x-font-otf
  • application / x-font-TrueType (saya tahu ini bukan truetype, tetapi satu sumber mengutip ini untuk OTF)
David Hedlund
sumber
3
Bagaimana Anda sebenarnya menulis tajuk untuk ini? Saya tidak begitu yakin apa yang harus saya lakukan. Sorakan atas bantuan yang bisa Anda berikan.
Josh Smith
1
@Josh: jika Anda menyajikan font melalui kode, Anda ingin mengatur header "tipe konten" menjadi "font / opentype" (jika Anda menggunakan OTF seperti dalam pertanyaan saya), tetapi jika Anda hanya menunjuk ke file font fisik, mungkin lebih mudah untuk mengatur tipe MIME di server web Anda. Saya tidak tahu server web apa yang Anda gunakan, jadi lakukan pencarian google untuk server + tipe mime Anda atau mulai pertanyaan baru pada SO yang menjelaskan masalah Anda.
David Hedlund
2
Judulnya salah. Seharusnya peringatan "Bagaimana cara membungkam" sumber daya yang ditafsirkan sebagai font "di Chrome
djsadinoff
2
@ DJ: diberikan! Anda tahu, jika saya dapat menemukan cara untuk membuat Chrome mengingat bahwa saya ingin konsol saya mencantumkan pesan dan kesalahan log, tetapi bukan peringatan, ada kemungkinan saya tidak akan pernah menanyakan pertanyaan ini sejak awal.
David Hedlund
Chrome memperingatkan kami bahwa ia melakukan apa yang kami minta. Saya lebih suka melihat peringatan ketika berhasil menemukan bitmap yang digunakan untuk mesin terbang jika Anda menggunakan @ font-face dengan file .BMP!
Pria luar angkasa cardiff

Jawaban:

137

Coba gunakan "font / opentype".

spd
sumber
51
Ini adalah mimetype ilegal: tidak ada "font /" di mimetype resmi. Jenis mime yang lebih baik adalah "application / x-font-opentype" atau "application / octet-stream". Yang pertama pada dasarnya "mimetype tidak terdaftar dengan nama ini", yang kedua hanya "data biner"
dtech
Tidak berfungsi untuk saya di Chrome 16. Salah satu yang berfungsi adalah: application / vnd.oasis.opendocument.formula-template.
jayarjo
16
Sepertinya pemenang saat ini adalah: application / x-font-woff - semoga membantu!
Disahkan
7
@busticated ini telah diubah untuk aplikasi / font-WOFF melihat w3.org/TR/WOFF/#appendix-b
Holger
210

Ada sejumlah format font yang dapat Anda atur untuk tipe MIME, pada server Apache dan IIS. Secara tradisional saya beruntung dengan yang berikut ini:

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) 

Menurut Gugus Tugas Teknik Internet yang mengelola dokumen awal mengenai Ekstensi Email Serbaguna (tipe MIME) di sini: http://tools.ietf.org/html/rfc2045#section-5 ... katanya secara spesifik:

" Diharapkan bahwa penambahan pada set yang lebih besar dari jenis yang didukung umumnya dapat dicapai dengan penciptaan subtipe baru dari tipe awal ini. Di masa depan, lebih banyak tipe level atas dapat didefinisikan hanya dengan perpanjangan jalur standar untuk standar ini. Jika jenis tingkat atas lain digunakan untuk alasan apa pun, ia harus diberi nama yang dimulai dengan "X-" untuk menunjukkan statusnya yang tidak standar dan untuk menghindari kemungkinan konflik dengan nama resmi di masa mendatang. "

Seperti itu, dan seiring waktu, jenis MIME tambahan ditambahkan ketika standar dibuat dan diterima, karenanya kita melihat contoh tipe MIME khusus vendor seperti vnd.ms-fontobject dan sejenisnya.

UPDATE 16 Agustus 2013: WOFF secara resmi terdaftar di IANA pada 3 Januari 2013 dan Webkit telah diperbarui pada 5 Maret 2013 dan browser yang mencari pembaruan ini dalam versi terbaru mereka akan mulai mengeluarkan peringatan tentang jenis server MIME dengan yang lama deklarasi x-font-woff. Karena peringatan hanya mengganggu, saya akan merekomendasikan segera beralih ke jenis MIME yang disetujui. Di dunia yang ideal, peringatan akan menyelesaikan sendiri tepat waktu.

UPDATE 26 Februari 2015: WOFF2 sekarang ada dalam W3C Editor's Draft dengan tipe mime yang diusulkan. Itu kemungkinan harus diserahkan ke IANA di tahun berikutnya (mungkin pada akhir 2016) mengikuti jadwal kemajuan yang lebih baru. Selain SFNT, format font kontainer scalable / spline yang digunakan dalam referensi tabel tulang punggung Google Web Font dengan pustaka java sfntly mereka dan sudah terdaftar sebagai tipe mime dengan IANA dan dapat ditambahkan ke daftar ini juga tergantung pada kebutuhan individu.

UPDATE 4 Oktober 2017: Kita dapat mengikuti perkembangan format WOFF2 di sini dengan mayoritas browser modern yang mendukung format tersebut dengan sukses. Selain itu, kita dapat mengikuti pelacak jenis Permintaan Media ("Jenis") IETF untuk komentar (RFC) pelacak dan dokumen mengenai set jenis font yang diusulkan terbaru untuk persetujuan.


Bagi mereka yang ingin menyematkan jenis huruf dalam urutan yang tepat di CSS Anda, silakan kunjungi artikel ini . Tapi sekali lagi, saya beruntung dengan urutan berikut:

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

Untuk properti otomatis Subversion, ini dapat didaftar sebagai:

# 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
sumber
Bagus, terima kasih. Saya memiliki pesan kesalahan dengan .woff dan memperbaikinya di file .htaccess saya. Saya menggunakanAddType application/x-font-woff
Danny Englander
application / x-font-opentype dan application / x-font-ttf bekerja dengan sempurna untuk Linux Gnome Shell
Schmoove
1
The ttf, otf dan woff2 sudah usang. Lihat stackoverflow.com/a/20723357/1356047
Jonas Berlin
126

Abaikan peringatan chrome. Tidak ada tipe MIME standar untuk font OTF.

font / opentype dapat membungkam peringatan, tetapi itu tidak menjadikannya hal yang "benar" untuk dilakukan.

Boleh dibilang, Anda lebih baik mengada-ada, mis. Dengan "application / x-opentype" karena setidaknya "application" adalah tipe konten terdaftar, sedangkan "font" tidak.

Pembaruan: OTF tetap menjadi masalah, tetapi WOFF mengembangkan jenis aplikasi / font-woff IANA MIME pada Januari 2013.

Pembaruan 2: OTF telah mengembangkan jenis MIME: application / font-sfnt Pada Maret 2013. Jenis ini juga berlaku untuk .ttf

djsadinoff
sumber
2
Menarik. Apakah Anda memiliki referensi yang mendukung hal ini?
Kzqai
18
Tidak ada tipe mime: "Catatan: Karena tidak ada tipe MIME yang didefinisikan untuk font TrueType, OpenType, dan WOFF, tipe MIME dari file yang ditentukan tidak dipertimbangkan." developer.mozilla.org/en/css/@font-face . Jangan membuat tipe mime baru tingkat atas, gunakan x- sebagai gantinya: tools.ietf.org/html/rfc2045#section-5 - djsadinoff 3 menit yang lalu edit
djsadinoff
@djsadinoff Saya percaya IANA menggantikan IETF. IETF mengirimkan draft ke IANA , dan karena IANA melaporkan bahwa woff adalah tipe MIME, maka IETF ditimpa dalam daftar terbatasnya.
Mike Kormendy
@MikeKormendy, saya tidak mengerti komentar Anda, tetapi Anda mungkin merujuk ke versi sebelumnya dari jawaban saya yang hanya membahas WOFF. Saya telah memulihkan yang asli
djsadinoff
@djsadinoff Aneh, pertukaran stack mengatakan bahwa Anda baru saja mengomentari "3 menit yang lalu".
Mike Kormendy
85

Sejak Feb 2017 RFC 8081 mengelompokkan semua jenis MIME untuk font di bawah fontjenis media level atas . Jenis MIME lama dari postingan asli saya sekarang terdaftar sebagai usang.

Jenis font seperti yang tercantum oleh IANA sekarang:

Format font non-standar lainnya dibiarkan seperti:


[Posting Asli Yang Kadaluarsa]

Karena masih ada banyak kebingungan di web tentang jenis MIME untuk font web, saya pikir saya akan memberikan jawaban saat ini, lengkap dengan tanggal yang efektif, dan tautan pendukung ke IANA dan W3C.

Berikut adalah jenis MIME resmi untuk Font Web:

Perhatikan ada gerakan untuk mengubah semua hal di atas menjadi tipe MIME font/XXX, seperti yang didukung oleh W3C dalam proposal untuk WOFF v2. Ini sedang dilacak oleh Internet Engineering Task Force (IETF) di bawah Jenis huruf Top Level dan pada bulan Februari 2017 disetujui status RFC (lihat RFC 8081 ) sehingga semuanya dapat berubah!

Sementara pada topik server web, perlu disebutkan bahwa respons HTTP dapat gzip(atau mengompres) semua format font di atas kecuali .woff& .woff2yang sudah sangat terkompresi.

Saya katakan lebih banyak di MIME Types for Web Fonts dengan (Fantom) BedSheet .

Steve Eynon
sumber
2
Duplikat posting secara otomatis terdeteksi pada SO, dan Anda berisiko kedua posting dihapus. Jika Anda memiliki informasi yang berguna untuk dipublikasikan, Anda harus mempertimbangkan untuk bertanya dan menjawab pertanyaan Anda sendiri.
Borodin
Ack! Saya tertangkap! Ya, saya sedang malas. : / Saya telah memperbarui jawaban lain sehingga lebih relevan dengan pertanyaan terkait. Saya percaya ini masih cocok untuk halaman ini.
Steve Eynon
Ada sejumlah besar jawaban yang dipertanyakan untuk dinilai. Saya mencoba mengomentari hal-hal yang saya tandai, tetapi paling sering jawaban Anda lenyap begitu saja. Silakan coba untuk tetap hangat.
Borodin
@SteveEynon: Opera berbasis Presto tidak merender font yang disajikan dengan tipe pantomim gambar.
user2284570
12

Sebagai contoh spesifik dari salah satu dari dua hal sulit dalam komputasi, menarik untuk melihat bagaimana jawaban untuk pertanyaan ini telah berubah sejak pertanyaan ini awalnya diposting. Syukurlah, kekuatan yang telah menertibkan kekacauan:


Pada bulan Februari tahun ini (2017), W3C menerbitkan Track Standar RFC 8081: Tipe Media Top-Level "font" yang sangat menyederhanakan tipe media yang sesuai untuk file font:

Memo ini berfungsi untuk mendaftarkan dan mendokumentasikan jenis media tingkat atas "font", di mana subtipe untuk format representasi untuk font dapat didaftarkan. Dokumen ini juga berfungsi sebagai aplikasi pendaftaran untuk satu set subtipe yang dimaksudkan, yang merupakan perwakilan dari beberapa subtipe yang ada yang sudah digunakan, dan saat ini terdaftar di bawah pohon "aplikasi" dengan registrasi terpisah mereka.

Ini adalah dokumen yang cukup mudah dibaca dan menggambarkan konteks historis (tidak adanya "pendaftaran format untuk font" ) yang memunculkan campuran yang membingungkan antara jenis dan sub-jenis media. Dengan meningkatnya popularitas font web yang dapat diunduh (relatif) baru-baru ini, W3C mengakui perlunya “jenis huruf tingkat atas yang intuitif” . Apa yang mereka datang dengan adalah ... font.

Karenanya, IANA telah memperbarui daftar resmi jenis Media dengan jenisfont media dan semua sub-jenisnya yang saat ini mereka kenali:

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

Semoga ini jawaban terakhir yang dibutuhkan pertanyaan ini.

Anthony Geoghegan
sumber
2
Anthony, ini adalah sumber yang bagus selain posting saya. Terima kasih telah berbagi ini di sini!
Mike Kormendy
7

Berikut ini adalah solusi NGINX

mengajukan

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

Menambahkan

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

menghapus

application/octet-stream        eot;

Terima kasih kepada Mike Fulcher

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

BG Bruno
sumber
6

FWIW mengenai Apache 2.2 VirtualHosting dan mod_mime diuji pada Debian Linux dan OS X Leopard dan Snow Leopard:

Jika Anda memiliki konfigurasi VirtualHost, Anda akan ingin menambahkan jenis melalui Petunjuk AddType sebagai berikut setidaknya di bagian bawah konfigurasi sebagai berikut:

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

Diuji terhadap Chrome Unstable / Trunk dan Safari WebKit Nightly yang menghilangkan peringatan mime octet-stream untuk kedua jenis font ttf dan otf.

Catatan: .htaccess tidak memiliki efek apa pun ketika berhadapan dengan VirtualHosting. Jika Anda mengembangkan untuk beberapa situs, Anda akan menggunakan pengembangan VirtualHosting dan setiap konfigurasi memerlukan tambahan AddType ini.

Marc J. Driftmeyer
sumber
6

Saya baru saja melakukan riset pada daftar resmi IANA . Saya percaya jawaban yang diberikan di sini 'font / xxx' salah karena tidak ada tipe 'font' dalam standar MIME.

Berdasarkan RFC dan IANA, ini tampaknya menjadi kondisi saat ini pada Mei 2013:

Ketiganya adalah resmi dan ditugaskan oleh IANA:

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

Ini tidak resmi / ditugaskan, dan karenanya harus menggunakan sintaks 'x-':

  • ttf sebagai "application / x-font-ttf"
  • otf sebagai "application / x-font-opentype"

Aplikasi / font-woff muncul baru dan mungkin hanya resmi sejak Jan 2013. Jadi "application / x-font-woff" mungkin lebih aman / lebih kompatibel dalam jangka pendek.

Harun
sumber
5

Mulai Maret 2013 IANA.ORG merekomendasikan untuk .otf :
application/font-sfnt

Font lain:

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

Lihat lebih lanjut ...

Serge
sumber
2

Berikut ini dapat digunakan di ruang e-book:

application/vnd.ms-opentype

Saya akan membayangkan bahwa itu sama untuk web.

Arktype
sumber
2

Pada Februari 2017, RFC 8081 menambahkan font / * jenis media, yang juga tercantum dalam daftar Jenis Media IANA . font/otfada di daftar ini.

George Helyar
sumber
1

Mungkin ini akan membantu seseorang. Saya melihat bahwa pada IIS 7 .ttfsudah dikenal sebagai tipe mime. Dikonfigurasi sebagai:

application/octet-stream

Jadi saya hanya menambahkan bahwa untuk semua jenis font yang CSS ( .oet, .svg, .ttf,.woff ) dan IIS mulai melayani mereka. Alat dev Chrome juga tidak mengeluh tentang menafsirkan ulang tipe.

Cheers, Michael

Michael Kennedy
sumber
1
application/octet-streamkurang "tipe yang dikenal" dan lebih banyak "sekelompok byte generik". :) Browser mengeluh tentang dilayani jenis ini, karena tidak membawa info tentang bagaimana hal itu harus ditafsirkan.
cao
-1

Salah satu cara untuk membungkam peringatan ini dari Chrome adalah dengan memperbarui Chrome dan kemudian memastikan tipe mime Anda adalah salah satunya:

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

Daftar ini sesuai dengan tambalan yang ditemukan di Bug 111418 di webkit.org .

Tambalan yang sama menurunkan pesan dari "Peringatan" ke "Log", jadi hanya meningkatkan Chrome ke pos mana pun versi Maret-2013 akan menghilangkan segitiga kuning.

Karena pertanyaannya adalah tentang membungkam peringatan Chrome, dan orang-orang mungkin berpegang pada versi Chrome lama untuk alasan apa pun, saya pikir ini layak untuk ditambahkan.

pria ruang cardiff
sumber