Tipo MIME corretto per i caratteri


249

Cercando sul web, trovo molti suggerimenti diversi su quale sia il tipo MIME corretto per un font, ma devo ancora provare qualsiasi tipo MIME che mi libera da un avviso di Chrome come il seguente:

Risorsa interpretata come font ma trasferita con font / otf di tipo MIME

Il carattere è un OTF.

Finora ho provato i seguenti tipi MIME

  • font / otf
  • application / font-otf
  • applicazione / font
  • application / otf
  • application / octet-stream
  • application / x-font-otf
  • application / x-font-TrueType (so che non è vero, ma una fonte lo ha citato per OTF)

3
Come si scrive effettivamente l'intestazione per questo? Non sono davvero sicuro di cosa fare. Saluti per qualsiasi aiuto tu possa dare.
Josh Smith,

1
@Josh: se stai offrendo il font tramite il codice, vuoi impostare l'intestazione "content-type" su "font / opentype" (se stai usando un OTF come nella mia domanda), ma se stai semplicemente puntando a un file di font fisico, potrebbe essere più semplice impostare i tipi MIME nel tuo server web. Non so quale server Web stai usando, quindi fai una ricerca su Google per i tuoi server + tipi MIME o fai una nuova domanda su SO che descriva il tuo problema.
David Hedlund,

2
Il titolo è sbagliato Dovrebbe essere "Come posso mettere a tacere l'avvertenza" risorsa interpretata come carattere "in Chrome
djsadinoff,

2
@djs: concesso! Sai, se potessi trovare un modo per far ricordare a Chrome che voglio che la mia console elencherà i messaggi di registro e gli errori, ma non gli avvisi, c'è una buona possibilità che non avrei mai fatto questa domanda in primo luogo.
David Hedlund, l'

Chrome ci sta avvisando che sta facendo ciò che gli abbiamo chiesto. Preferirei vedere un avviso quando è riuscito a capire le bitmap da usare per glifi se hai usato @ font-face con un file .BMP!
cardiff space man,

Risposte:


137

Prova a utilizzare "font / opentype".


51
Questo è un mimetipo illegale però: non esiste un "carattere /" nei mimetipi ufficiali. Un tipo mime migliore sarebbe "application / x-font-opentype" o "application / octet-stream". Il primo è fondamentalmente "mimetype non registrato con questo nome", il secondo solo "dati binari"
dtech

Non funziona per me su Chrome 16. Uno che ha funzionato è stato: application / vnd.oasis.opendocument.formula-template.
jayarjo,

16
Sembra che l'attuale vincitore sia: application / x-font-woff - spero che ti aiuti!
bugnato il

7
@busticated questo è stato modificato in application / font-woff vedi w3.org/TR/WOFF/#appendix-b
Holger,


210

Esistono numerosi formati di carattere per i quali è possibile impostare i tipi MIME, sia su server Apache che IIS. Tradizionalmente ho avuto fortuna con il seguente:

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) 

Secondo l'Internet Engineering Task Force che mantiene il documento iniziale relativo alle estensioni di posta Internet multiuso (tipi MIME) qui: http://tools.ietf.org/html/rfc2045#section-5 ... dice nello specifico:

" Si prevede che le aggiunte al più ampio set di tipi supportati possano essere generalmente realizzate mediante la creazione di nuovi sottotipi di questi tipi iniziali. In futuro, più tipi di livello superiore possono essere definiti solo da un'estensione standard di questo standard Se un altro tipo di livello superiore deve essere utilizzato per qualsiasi motivo, deve essere assegnato un nome che inizia con "X-" per indicare il suo stato non standard ed evitare un potenziale conflitto con un futuro nome ufficiale. "

Per così dire, e nel tempo, vengono aggiunti altri tipi MIME man mano che gli standard vengono creati e accettati, per cui vediamo esempi di tipi MIME specifici del fornitore come vnd.ms-fontobject e simili.

AGGIORNAMENTO 16 agosto 2013: WOFF è stato formalmente registrato presso IANA il 3 gennaio 2013 e Webkit è stato aggiornato il 5 marzo 2013 e i browser che stanno acquistando questo aggiornamento nelle loro ultime versioni inizieranno a emettere avvisi sui tipi MIME del server con il vecchio dichiarazione x-font-woff. Poiché gli avvisi sono solo fastidiosi, consiglierei di passare immediatamente al tipo MIME approvato. In un mondo ideale, gli avvertimenti si risolveranno da soli nel tempo.

AGGIORNAMENTO 26 febbraio 2015: WOFF2 è ora nella bozza dell'editor del W3C con il tipo mime proposto. Dovrebbe probabilmente essere presentato all'IAANA il prossimo anno (possibilmente entro la fine del 2016) seguendo le tempistiche più recenti. Inoltre SFNT, il formato di carattere contenitore scalabile / spline utilizzato nel riferimento della tabella backbone di Google Web Fonts con la loro libreria java sfntly ed è già registrato come tipo mime con IANA e potrebbe essere aggiunto a questo elenco anche in base alle esigenze individuali.

AGGIORNAMENTO 4 ottobre 2017: possiamo seguire la progressione del formato WOFF2 qui con la maggior parte dei browser moderni che supportano il formato con successo. Inoltre, possiamo seguire il tracker e il documento del tipo di supporto di livello superiore "IETF" per i tracker di commenti (RFC) e documenti relativi all'ultima serie di tipi di font proposti per l'approvazione.


Per coloro che desiderano incorporare il carattere tipografico nell'ordine corretto nel CSS, visitare questo articolo . Ma ancora una volta, ho avuto fortuna con il seguente ordine:

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

Per le proprietà automatiche di Subversion, queste possono essere elencate come:

# 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

Buoni, grazie. Ho ricevuto messaggi di errore con .woff e questo è stato risolto nel mio file .htaccess. Ho usatoAddType application/x-font-woff
Danny Englander il

application / x-font-opentype e application / x-font-ttf funzionano perfettamente per Linux Gnome Shell
Schmoove,

1
Il ttf, otf e woff2 sono obsoleti. Vedi stackoverflow.com/a/20723357/1356047
Jonas Berlin,

126

Ignora l'avviso di Chrome. Non esiste un tipo MIME standard per i caratteri OTF.

font / opentype può mettere a tacere l'avvertimento, ma ciò non lo rende la cosa "giusta" da fare.

Probabilmente, è meglio inventarne uno, ad esempio con "application / x-opentype" perché almeno "application" è un tipo di contenuto registrato, mentre "font" non lo è.

Aggiornamento: OTF rimane un problema, ma WOFF ha sviluppato un tipo IANA MIME di application / font-woff a gennaio 2013.

Aggiornamento 2: OTF ha sviluppato un tipo MIME: application / font-sfnt a marzo 2013. Questo tipo si applica anche a .ttf


2
Interessante. Hai qualche riferimento a sostegno di questo?
Kzqai,

18
Non esiste un tipo MIME: "Nota: poiché non esistono tipi MIME definiti per i caratteri TrueType, OpenType e WOFF, il tipo MIME del file specificato non viene considerato." developer.mozilla.org/en/css/@font-face . Non inventare nuovi tipi mime di primo livello, usa invece x-: tools.ietf.org/html/rfc2045#section-5 - djsadinoff 3 minuti fa modifica
djsadinoff

@djsadinoff Credo che IANA sostituisca l'IETF. IETF invia bozze a IANA e poiché IANA segnala che woff è un tipo MIME, IETF viene sostituito nella sua lista limitata.
Mike Kormendy,

@MikeKormendy, non capisco il tuo commento, ma potresti aver fatto riferimento a una versione precedente della mia risposta che riguarda solo WOFF. Ho restaurato l'originale
djsadinoff

@djsadinoff È strano, lo scambio di stack ha detto che hai appena commentato "3 minuti fa".
Mike Kormendy,

85

Da febbraio 2017 RFC 8081 raggruppa tutti i tipi MIME per i caratteri con il fonttipo di supporto di livello superiore . I vecchi tipi MIME dal mio post originale sono ora elencati come obsoleti.

I tipi di carattere elencati da IANA sono ora:

Altri formati di carattere non standard vengono lasciati così come sono:


[Post originale obsoleto]

Dato che c'è ancora molta confusione sul web sui tipi MIME per i caratteri web, ho pensato di dare una risposta attuale, completa di date efficaci e collegamenti di supporto a IANA e al W3C.

Ecco i tipi MIME ufficiali per i font Web:

Nota che c'è un movimento per cambiare tutto quanto sopra in tipi MIME font/XXX, come supportato dal W3C nella sua proposta per WOFF v2. Questo viene monitorato dall'Internet Engineering Task Force (IETF) sotto Il carattere Top Level Type e nel febbraio 2017 è stato approvato lo stato RFC (vedi RFC 8081 ), quindi potrebbe ancora cambiare tutto!

Mentre sul tema del web server, vale la pena ricordare che HTTP risposte possono gzip(o in altro modo impacco) tutti i formati di font di cui sopra, ad eccezione .woffe .woff2che sono già fortemente compressi.

Dico di più in Tipi MIME per font Web con lenzuolo (Fantom) .


2
I post duplicati vengono rilevati automaticamente su SO e si rischia che entrambi i post vengano eliminati. Se hai informazioni utili da pubblicare, dovresti considerare di porre e rispondere alla tua domanda.
Borodin,

Ack! Sono stato catturato! Sì, ero pigro. : / Ho aggiornato l'altra risposta, quindi è più pertinente alla sua domanda correlata. Credo che sia comunque adatto a questa pagina.
Steve Eynon,

C'è un'enorme quantità di risposte discutibili da valutare. Cerco di commentare quelli che segnerò, ma più comunemente le tue risposte svanirebbero. Si prega di provare a rimanere attualità.
Borodin,

@SteveEynon: Opera basata su Presto non esegue il rendering di served caratteri serviti con un tipo mime di immagine.
user2284570

12

Come istanza specifica di una delle due cose difficili nel campo dell'informatica, è interessante vedere come sono cambiate le risposte a questa domanda da quando questa domanda è stata originariamente pubblicata. Per fortuna, i poteri che hanno portato l'ordine nel caos:


Nel febbraio di quest'anno (2017), il W3C ha pubblicato la traccia standard RFC 8081: il tipo di supporto di livello superiore "font" che semplifica notevolmente i tipi di media appropriati per i file di font:

Questo memo serve a registrare e documentare il tipo di supporto di livello superiore "font", in base al quale è possibile registrare sottotipi per formati di rappresentazione per font. Questo documento funge anche da domanda di registrazione per una serie di sottotipi previsti, che sono rappresentativi di alcuni sottotipi esistenti già in uso e attualmente registrati sotto l'albero delle "applicazioni" dalle loro registrazioni separate.

È un documento abbastanza leggibile e descrive il contesto storico (mancanza di "una registrazione di formati per font" ) che ha dato origine al confuso mix di tipi e sottotipi di media. Con il (relativamente) recente aumento della popolarità dei font web scaricabili, il W3C ha riconosciuto la necessità di un "tipo di carattere di livello superiore intuitivo" . Quello che è venuto in mente è ... font.

Di conseguenza, lo IANA da allora ha aggiornato il suo elenco ufficiale di tipi di media con il fonttipo di media e tutti i suoi sottotipi che attualmente riconoscono:

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

Speriamo che questa sia l'ultima risposta di cui ha bisogno questa domanda.


2
Anthony, questa è un'altra grande risorsa oltre al mio post. Grazie per averlo condiviso qui!
Mike Kormendy,


6

FWIW riguardante Apache 2.2 VirtualHosting e mod_mime testati su Debian Linux e OS X Leopard e Snow Leopard:

Se si dispone di una configurazione VirtualHost, si desidera aggiungere i tipi tramite la direttiva AddType come segue almeno nella parte inferiore della configurazione come segue:

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

Testato su Chrome Unstable / Trunk e Safari WebKit Nightly che elimina gli avvisi mime octet-stream sia per i tipi di carattere ttf che otf.

Nota: .htaccess non ha alcun effetto quando si ha a che fare con VirtualHosting. Se stai sviluppando per diversi siti, utilizzerai lo sviluppo di VirtualHosting e ogni configurazione avrà bisogno di queste aggiunte AddType.


6

Ho appena fatto qualche ricerca sulla lista ufficiale IANA . Credo che la risposta fornita qui 'font / xxx' sia errata in quanto non esiste un tipo 'font' nello standard MIME.

Basato su RFC e IANA, questo sembra essere lo stato attuale del gioco a maggio 2013:

Questi tre sono ufficiali e assegnati da IANA:

  • svg come "immagine / svg + xml"
  • woff come "application / font-woff"
  • eot come "application / vnd.ms-fontobject"

Questi non sono ufficiali / assegnati e quindi devono usare la sintassi 'x-':

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

L'applicazione / font-woff appare nuova e forse ufficiale solo da gennaio 2013. Quindi "application / x-font-woff" potrebbe essere più sicuro / più compatibile a breve termine.


5

Da marzo 2013 IANA.ORG consiglia per .otf :
application/font-sfnt

Altri caratteri:

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

Vedi di più ...


2

Quanto segue può essere utilizzato nello spazio eBook:

application/vnd.ms-opentype

Immagino che sia lo stesso per il web.




1

Forse questo aiuterà qualcuno. Ho visto che su IIS 7 .ttfè già noto un tipo MIME. È configurato come:

application/octet-stream

Così ho solo aggiunto che per tutti i tipi di font CSS ( .oet, .svg, .ttf,.woff ) e IIS iniziato a servirli. Inoltre, gli strumenti di sviluppo di Chrome non si lamentano della reinterpretazione del tipo.

Saluti, Michael


1
application/octet-streamè meno un "tipo noto" e più un "gruppo generico di byte". :) Il browser si lamenta di essere stato offerto questo tipo, perché non contiene informazioni su come interpretare le cose.
cHao,

-1

Un modo per silenziare questo avviso da Chrome sarebbe quello di aggiornare Chrome e quindi assicurarsi che il tuo tipo mime sia uno di questi:

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

Questo elenco è per la patch trovata nel Bug 111418 su webkit.org .

La stessa patch riduce il messaggio da un "Avviso" a un "Registro", quindi l'aggiornamento di Chrome a qualsiasi versione post marzo-2013 eliminerebbe il triangolo giallo.

Poiché la domanda riguarda il silenziamento di un avviso di Chrome e la gente potrebbe essere aggrappata alle vecchie versioni di Chrome per qualsiasi motivo, ho pensato che valesse la pena aggiungere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.