Richtiger MIME-Typ für Schriftarten

249

Beim Durchsuchen des Webs finde ich unzählige verschiedene Vorschläge für den richtigen MIME-Typ für eine Schriftart. Ich habe jedoch noch keinen MIME-Typ ausprobiert, der mich von einer Chrome-Warnung wie der folgenden befreit:

Ressource als Schriftart interpretiert, aber mit dem MIME-Typ font / otf übertragen

Die Schriftart ist eine OTF.

Ich habe bisher die folgenden MIME-Typen ausprobiert

  • font / otf
  • application / font-otf
  • Anwendung / Schriftart
  • Anwendung / otf
  • Anwendung / Oktett-Stream
  • application / x-font-otf
  • application / x-font-TrueType (Ich weiß, es ist kein wahrer Typ, aber eine Quelle hat dies für OTF zitiert)
David Hedlund
quelle
3
Wie schreibt man eigentlich den Header dafür? Ich bin mir nicht sicher, was ich tun soll. Prost für jede Hilfe, die Sie geben können.
Josh Smith
1
@Josh: Wenn Sie die Schriftart über Code bereitstellen, möchten Sie den Header "content-type" auf "font / opentype" setzen (wenn Sie eine OTF wie in meiner Frage verwenden), aber wenn Sie es einfach sind Wenn Sie auf eine physische Schriftartdatei verweisen, ist es möglicherweise einfacher, die MIME-Typen auf Ihrem Webserver festzulegen. Ich weiß nicht, welchen Webserver Sie verwenden. Führen Sie daher eine Google-Suche nach Servern + MIME-Typen durch oder starten Sie eine neue Frage zu SO, in der Ihr Problem beschrieben wird.
David Hedlund
2
Der Titel ist falsch. Es sollte "Wie kann ich die als" Schriftart interpretierte Ressource "
-Warnung
2
@djs: gewährt! Wenn ich einen Weg finden könnte, Chrome daran zu erinnern, dass meine Konsole Protokollmeldungen und Fehler, aber keine Warnungen auflisten soll, hätte ich diese Frage wahrscheinlich überhaupt nicht gestellt.
David Hedlund
Chrome warnt uns, dass es das tut, was wir gefragt haben. Ich würde lieber eine Warnung sehen, wenn es erfolgreich herausgefunden hat, welche Bitmaps für Glyphen verwendet werden sollen, wenn Sie @ font-face mit einer .BMP-Datei verwendet haben!
Cardiff Space Man

Antworten:

137

Versuchen Sie es mit "font / opentype".

spd
quelle
51
Dies ist jedoch ein illegaler Mimetyp: Die offiziellen Mimetypen enthalten keine "Schriftart /". Ein besserer MIME-Typ wäre "application / x-font-opentype" oder "application / octet-stream". Der erste ist im Grunde "nicht registrierter Mimetyp mit diesem Namen", der zweite nur "Binärdaten"
dtech
Unter Chrome 16 funktioniert es bei mir nicht. Eine, die funktioniert hat, war: application / vnd.oasis.opendocument.formula-template.
Jayarjo
16
Der aktuelle Gewinner sieht so aus: application / x-font-woff - hoffe es hilft!
Busticated
7
@busticated dies wurde in application / font-woff geändert, siehe w3.org/TR/WOFF/#appendix-b
Holger
5
fontTyp ist jetzt offiziell iana.org/assignments/media-types/media-types.xhtml#font
Mems
210

Es gibt eine Reihe von Schriftformaten, für die MIME-Typen sowohl auf Apache- als auch auf IIS-Servern festgelegt werden können. Ich hatte traditionell Glück mit Folgendem:

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) 

Laut der Internet Engineering Task Force, die das ursprüngliche Dokument zu Mehrzweck-Internet-Mail-Erweiterungen (MIME-Typen) hier verwaltet: http://tools.ietf.org/html/rfc2045#section-5 ... heißt es im Einzelnen:

" Es wird erwartet, dass Ergänzungen zu dem größeren Satz unterstützter Typen im Allgemeinen durch die Erstellung neuer Untertypen dieser Anfangstypen erreicht werden können. In Zukunft können mehr Top-Level-Typen nur durch eine Standard-Track-Erweiterung dieses Standards definiert werden Wenn ein anderer Top-Level-Typ aus irgendeinem Grund verwendet werden soll, muss ihm ein Name gegeben werden, der mit "X-" beginnt, um seinen nicht standardmäßigen Status anzuzeigen und einen möglichen Konflikt mit einem zukünftigen offiziellen Namen zu vermeiden. "

Sozusagen und im Laufe der Zeit werden zusätzliche MIME-Typen hinzugefügt, wenn Standards erstellt und akzeptiert werden. Daher sehen wir Beispiele für herstellerspezifische MIME-Typen wie vnd.ms-fontobject und dergleichen.

UPDATE 16. August 2013: WOFF wurde am 3. Januar 2013 offiziell bei IANA registriert und Webkit wurde am 5. März 2013 aktualisiert. Browser, die dieses Update in ihren neuesten Versionen beziehen, geben Warnungen über die Server-MIME-Typen mit den alten aus x-font-woff-Deklaration. Da die Warnungen nur ärgerlich sind, würde ich empfehlen, sofort zum zugelassenen MIME-Typ zu wechseln. In einer idealen Welt werden sich die Warnungen rechtzeitig auflösen.

UPDATE 26. Februar 2015: WOFF2 befindet sich jetzt im Entwurf des W3C-Editors mit dem vorgeschlagenen MIME-Typ. Es sollte voraussichtlich im nächsten Jahr (möglicherweise bis Ende 2016) bei IANA eingereicht werden, nachdem neuere Fortschrittspläne vorliegen. Auch SFNT, das skalierbare / Spline-Container-Schriftformat, das in der Backbone-Tabellenreferenz von Google Web Fonts mit ihrer sfntly-Java-Bibliothek verwendet wird und bereits als MIME- Typ bei IANA registriert ist und je nach Bedarf auch zu dieser Liste hinzugefügt werden kann.

UPDATE 4. Oktober 2017: Wir können den Fortschritt des WOFF2-Formats hier verfolgen , wobei die meisten modernen Browser das Format erfolgreich unterstützen. Wie gut, können wir die IETF „font“ Top-Level - Medientyp Request for Comments (RFC) folgen Tracker und Dokument über die neueste Reihe von vorgeschlagenen Schriftarten zur Genehmigung vor .


Wenn Sie die Schrift in der richtigen Reihenfolge in Ihr CSS einbetten möchten, besuchen Sie bitte diesen Artikel . Aber ich hatte wieder Glück mit der folgenden Reihenfolge:

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

Für Subversion-Autoeigenschaften können diese wie folgt aufgeführt werden:

# 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
quelle
Gute, danke. Ich hatte Fehlermeldungen mit .woff und diese wurden in meiner .htaccess-Datei behoben. Ich benutzteAddType application/x-font-woff
Danny Englander
application / x-font-opentype und application / x-font-ttf funktionieren perfekt für Linux Gnome Shell
Schmoove
1
Ttf, otf und woff2 sind veraltet. Siehe stackoverflow.com/a/20723357/1356047
Jonas Berlin
126

Ignorieren Sie die Chromwarnung. Es gibt keinen Standard-MIME-Typ für OTF-Schriftarten.

font / opentype kann die Warnung zum Schweigen bringen, aber das macht es nicht zum "richtigen" Vorgehen.

Es ist wahrscheinlich besser, wenn Sie sich eine ausdenken, z. B. mit "application / x-opentype", da mindestens "application" ein registrierter Inhaltstyp ist, während "font" dies nicht ist.

Update: OTF bleibt ein Problem, aber WOFF hat im Januar 2013 einen IANA MIME- Anwendungstyp / Font-Woff entwickelt .

Update 2: OTF hat einen MIME-Typ entwickelt: application / font-sfnt Im März 2013. Dieser Typ gilt auch für .ttf

djsadinoff
quelle
2
Interessant. Haben Sie Referenzen, die dies belegen?
Kzqai
18
Es gibt keinen MIME-Typ: "Hinweis: Da für TrueType-, OpenType- und WOFF-Schriftarten keine MIME-Typen definiert sind, wird der MIME-Typ der angegebenen Datei nicht berücksichtigt." developer.mozilla.org/en/css/@font-face . Erstelle keine neuen MIME -Typen der obersten Ebene, sondern verwende stattdessen x-: tools.ietf.org/html/rfc2045#section-5 - djsadinoff vor 3 Minuten edit
djsadinoff
@djsadinoff Ich glaube, IANA ersetzt die IETF. IETF übermittelt Entwürfe an IANA . Da IANA meldet, dass woff ein MIME-Typ ist, wird IETF in seiner begrenzten Liste überschrieben.
Mike Kormendy
@ MikeKormendy, ich verstehe Ihren Kommentar nicht, aber Sie haben möglicherweise auf eine frühere Version meiner Antwort verwiesen, die sich nur mit WOFF befasst. Ich habe das Original wiederhergestellt
djsadinoff
@djsadinoff Das ist seltsam, Stack Exchange sagte, dass Sie gerade das "vor 3 Minuten" kommentiert hatten.
Mike Kormendy
85

Seit Februar 2017 gruppiert RFC 8081 alle MIME-Typen für Schriftarten unter dem fontMedientyp der obersten Ebene . Die älteren MIME-Typen aus meinem ursprünglichen Beitrag werden jetzt als veraltet aufgeführt.

Die von IANA aufgelisteten Schriftarten sind jetzt:

Andere nicht standardmäßige Schriftformate bleiben wie folgt:


[Veralteter Originalbeitrag]

Da im Web immer noch große Verwirrung über MIME-Typen für Web-Schriftarten herrscht, dachte ich, ich würde eine aktuelle Antwort mit Datum des Inkrafttretens und unterstützenden Links zu IANA und W3C geben.

Hier sind die offiziellen MIME-Typen für Web-Schriftarten:

Beachten Sie, dass es eine Bewegung gibt, alle oben genannten in MIME-Typen von zu ändern font/XXX, wie dies vom W3C in seinem Vorschlag für WOFF v2 unterstützt wird. Dies wird von der Internet Engineering Task Force (IETF) unter der Schriftart "Top Level Type" verfolgt und im Februar 2017 wurde der RFC-Status genehmigt (siehe RFC 8081 ), sodass sich möglicherweise noch alles ändert!

Beim Thema Webserver ist zu erwähnen, dass HTTP-Antworten gzipalle oben genannten Schriftformate außer .woff& komprimieren können (oder auf andere Weise komprimieren), außer &, .woff2die bereits stark komprimiert sind.

Ich sage mehr in MIME-Typen für Web-Schriftarten mit (Fantom) BedSheet .

Steve Eynon
quelle
2
Doppelte Beiträge werden in SO automatisch erkannt, und Sie riskieren, dass beide Beiträge gelöscht werden. Wenn Sie nützliche Informationen veröffentlichen möchten, sollten Sie in Betracht ziehen, Ihre eigene Frage zu stellen und zu beantworten.
Borodin
Bestätigen Sie! Ich bin erwischt worden! Ja, ich war faul. : / Ich habe die andere Antwort aktualisiert, damit sie für die zugehörige Frage relevanter ist. Ich glaube, es passt immer noch gut zu dieser Seite.
Steve Eynon
Es gibt eine Vielzahl fragwürdiger Antworten, die bewertet werden müssen. Ich versuche, diejenigen, die ich notiere, zu kommentieren, aber am häufigsten verschwinden Ihre Antworten einfach. Bitte versuchen Sie aktuell zu bleiben.
Borodin
@SteveEynon: Presto-basierte Opera rendert keine ꜱᴠɢ-Schriftarten, die mit einem MIME-Bildtyp bereitgestellt werden.
user2284570
12

Als ein spezielles Beispiel von einem der zwei harten Dinge bei der Berechnung ist es interessant zu sehen , wie die Antworten auf diese Frage , da diese Frage wurde zuerst geändert haben. Zum Glück haben die Mächte Ordnung ins Chaos gebracht:


Im Februar dieses Jahres (2017) veröffentlichte das W3C den Standards Track RFC 8081: Der Top-Level- Medientyp "font", der die entsprechenden Medientypen für Schriftdateien erheblich vereinfacht:

Dieses Memo dient zum Registrieren und Dokumentieren des Medientyps "Schriftart" der obersten Ebene, unter dem Untertypen für Darstellungsformate für Schriftarten registriert werden können. Dieses Dokument dient auch als Registrierungsantrag für eine Reihe von beabsichtigten Untertypen, die für einige bereits verwendete Untertypen repräsentativ sind und derzeit durch ihre separaten Registrierungen unter dem Baum "Anwendung" registriert sind.

Es ist ein ziemlich lesbares Dokument und beschreibt den historischen Kontext (Fehlen einer „Registrierung von Formaten für Schriftarten“ ), der zu einer verwirrenden Mischung von Medientypen und Untertypen geführt hat. Mit dem (relativ) jüngsten Anstieg der Popularität von herunterladbaren Web-Schriftarten erkannte das W3C die Notwendigkeit eines „intuitiven Schrifttyps der obersten Ebene“ . Was sie sich ausgedacht haben, ist… font.

Dementsprechend hat die IANA seitdem ihre offizielle Liste der fontMedientypen mit dem Medientyp und allen seinen derzeit anerkannten Untertypen aktualisiert :

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

Wir hoffen, dass dies die letzte Antwort ist, die diese Frage benötigt.

Anthony Geoghegan
quelle
2
Anthony, dies ist eine weitere großartige Ressource neben meinem Beitrag. Vielen Dank, dass Sie dies hier teilen!
Mike Kormendy
7

Hier ist die NGINX-Lösung

Datei

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

hinzufügen

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

entfernen

application/octet-stream        eot;

Vielen Dank an Mike Fulcher

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

BG Bruno
quelle
6

FWIW bezüglich Apache 2.2 VirtualHosting und mod_mime, getestet unter Debian Linux und OS X Leopard und Snow Leopard:

Wenn Sie eine VirtualHost-Konfiguration haben, möchten Sie die Typen über die AddType-Direktive wie folgt hinzufügen, zumindest am Ende der Konfiguration wie folgt:

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

Getestet gegen Chrome Unstable / Trunk und Safari WebKit Nightly, wodurch die Mime-Octet-Stream-Warnungen für die Schriftarten ttf und otf beseitigt werden.

Hinweis: .htaccess hat beim Umgang mit VirtualHosting keine Auswirkung. Wenn Sie für mehrere Sites entwickeln, verwenden Sie die VirtualHosting-Entwicklung, und für jede Konfiguration sind diese AddType-Ergänzungen erforderlich.

Marc J. Driftmeyer
quelle
6

Ich habe gerade einige Nachforschungen über die offizielle IANA-Liste angestellt . Ich glaube, die hier gegebene Antwort 'font / xxx' ist falsch, da der MIME-Standard keinen 'font'-Typ enthält.

Basierend auf den RFCs und IANA scheint dies der aktuelle Stand des Spiels im Mai 2013 zu sein:

Diese drei sind offiziell und von der IANA vergeben:

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

Diese sind nicht offiziell / zugewiesen und müssen daher die 'x-' Syntax verwenden:

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

Die Anwendung / font-woff erscheint neu und möglicherweise erst seit Januar 2013 offiziell. Daher könnte "application / x-font-woff" kurzfristig sicherer / kompatibler sein.

Aaron
quelle
5

Ab März 2013 empfiehlt IANA.ORG für .otf :
application/font-sfnt

Andere Schriftarten:

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

Sehen Sie mehr ...

Serge
quelle
2

Folgendes kann im eBook-Bereich verwendet werden:

application/vnd.ms-opentype

Ich würde mir vorstellen, dass es für das Web genauso ist.

Arktype
quelle
2

Ab Februar 2017 fügt RFC 8081 Schriftarten / * Medientypen hinzu, die auch in der Liste der IANA- Medientypen aufgeführt sind . font/otfist in dieser Liste.

George Helyar
quelle
1

Vielleicht hilft das jemandem. Ich habe gesehen, dass auf IIS 7 .ttfbereits ein MIME-Typ bekannt ist. Es ist konfiguriert als:

application/octet-stream

Also habe ich nur noch, dass für alle die CSS Schrifttypen ( .oet, .svg, .ttf, .woff) und IIS begann , sie dienen. Chrome-Entwicklungstools beschweren sich auch nicht über eine Neuinterpretation des Typs.

Prost, Michael

Michael Kennedy
quelle
1
application/octet-streamist weniger ein "bekannter Typ" als vielmehr ein "generischer Bündel von Bytes". :) Der Browser beschwert sich darüber, dass dieser Typ bedient wird, da er keine Informationen darüber enthält, wie das Zeug interpretiert werden soll.
CHao
-1

Eine Möglichkeit, diese Warnung von Chrome auszuschalten, besteht darin, Chrome zu aktualisieren und dann sicherzustellen, dass Ihr MIME-Typ einer der folgenden ist:

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

Diese Liste entspricht dem Patch, der unter Bug 111418 auf webkit.org gefunden wurde .

Mit demselben Patch wird die Nachricht von einer "Warnung" in ein "Protokoll" herabgestuft. Wenn Sie also nur Chrome auf eine beliebige Version nach März 2013 aktualisieren, wird das gelbe Dreieck entfernt.

Da es um die Stummschaltung einer Chrome-Warnung geht und die Leute möglicherweise aus irgendeinem Grund an alten Chrome-Versionen festhalten, dachte ich, dass dies eine Hinzufügung wert ist.

Cardiff Space Man
quelle