@font-face - Die sicherste Methode Webfonts zu nutzen

Geschrieben am 04. Februar 2011 von Alexander Schmidt 11 Kommentare

Fontspring schreibt im Artikel „The New Bulletproof @Font-Face Syntax“ über die browserübergreifende Methode Webfonts zu nutzen, also eigene Schrifttypen. Der Trick besteht dabei aus einem einzigen Zeichen: Der Raute #.

webfonts-font-face

Die „Fontspring-CSSNinja @Font-Face Syntax“

Der folgenden Code wurde von Fontspring entwickelt und von CSSNinja verbessert. Voraus ging damals der Artikel Bulletproof @font-face syntax von Paul Irish 2009.

@font-face {
  font-family: 'MyFontFamily';
  src: url('myfont-webfont.eot#') format('eot'),
       url('myfont-webfont.woff') format('woff'),
       url('myfont-webfont.ttf')  format('truetype'),
       url('myfont-webfont.svg#svgFontName') format('svg');
}

Warum es funktioniert

Die Internet Explorer Versionen unter 9 haben alle einen Bug im Parser für das src-Attribut. Wenn du darüber mehr als eine Schriftart einbindest, schafft es der IE nicht sie zu laden und meldet einen 404-Fehler. Der Grund dafür ist, dass der IE versucht, alles zwischen den Klammern als eine Datei zu laden. Das zwingt dich das EOT-Format als erstes zu nennen, angehängt mit einer einzelnen Raute #. Der IE denkt dann, dass der Rest der Zeichenfolge ein URL-Fragment ist und lädt nur die EOT-Datei. Alle andere Browser folgen weiter den Spezifikationen und wählen das Format, was sie brauchen.

Browser-konform

Getestet wurde der Code unter

  • Safari 5.03
  • IE 6-9
  • Firefox 3,6-4
  • Chrome 8
  • iOS 3,2-4,2
  • Android 2,2-2,3
  • Opera 11

Demo anschauen

Über den Autor

Alexander Schmidt

Alexander Schmidt ist Webentwickler, Buchautor und Dozent. Er lebt mit seiner Familie in Bad Nauheim / Hessen. Seit 2005 realisiert er als Einzelunternehmer Websites mit Joomla und hat sich sich auf hochwertige Template-Umsetzungen spezialisiert. Er ist Fachautor der Zeitschrift t3n.

 

 

Kommentare (11)

  • Alexey

    Alexey

    04 Februar 2011 um 11:14 |
    Folgende Methode habe ich verwendet und musste leider fest stellen, dass bei Window /Firefox die Schrift nicht dem entspricht was ich haben wollte.
    • Alexander Schmidt

      Alexander Schmidt

      04 Februar 2011 um 12:55 |
      Welche Version von Firefox nutzt Du? Ich habe eine Demo erstellt. Schau sie Dir mal an.
  • Markus Tamler

    Markus Tamler

    07 Februar 2011 um 16:45 |
    Funktioniert in allen Browsern (Safari, Chrome, Mozilla) einwandfrei bis auf komischerweise den IE8 (auch im Kompatibilitätsmodus haut es nicht hin). Gibts hier was besonderes zu beachten?
  • Markus Tamler

    Markus Tamler

    08 Februar 2011 um 09:09 |
    Ganz witzig... Browserlab zeigt es mir auch komplett falsch an egal welchen Browser ich auswähle. Habe es heute früh auch nochmal mit dem Safari unter Mac auspropiert. Der macht es korrekt. Am Doctype kannst ja wohl nicht wirklich liegen. Ich schau mal weiter... trotzdem vielen Dank.
    • Alexander Schmidt

      Alexander Schmidt

      08 Februar 2011 um 09:35 |
      Der Tipp mit Browserlab war nicht als Witz gedacht. Die Demoseite sieht darunter korrekt aus http://itr.im/1jb (Screenshot). So http://itr.im/1jc sähe es aus, wenn als Fallback Arial genommen würde. Schau Dir den Quelltext der Demo an und vergleiche ihn mit Deinem.
  • Markus Tamler

    Markus Tamler

    08 Februar 2011 um 11:48 |
    War auch nicht so gemeint sondern eher weil das Browserlab mir ganz was anderes anzeigt als ich es schon gesehen habe (FF,Safari etc.). Ich werd den Code mal vergleichen. Mal sehen was rauskommt. Danke :-)
  • Markus Tamler

    Markus Tamler

    08 Februar 2011 um 11:57 |
    Ich glaube langsam das ist ein lokales Problem bei mir. Habe mir mal den Quellcode der DEMO-Seite kopiert und die Schriften eingesetzt. Alle Brower korrekt bis auf IE. Vom Quellcode ist auch die DEMO-Seite mit meiner "fast" identisch. Naja... weitersuchen. Trotzdem Danke.
  • mcliquid

    mcliquid

    15 Februar 2011 um 19:58 |
    Vielen Dank für den Tipp, nun zeigt der internet explorer meine Seite auch mit meinem Font an!
  • David Bolk

    David Bolk

    15 Dezember 2011 um 11:47 |
    Hallöchen,
    Ich habe einen ähnlichen Code zusammengestellt und konnet diesen dank deinem Code verbessern. Was ich mich allerdings noch frage, wie ich im Opera 9 die Webschriften zum laufen bringe in allen anderen Versionen und Browsern läuft es. Hast du da vielleicht ne Idee?
  • Aquaice

    Aquaice

    15 Februar 2012 um 17:53 |
    Bei mir liegts tatsächlich daran, dass es lokal ist. Wenn ich die eine Page mit dieser Methode online Stelle funktionierts auch im IE5+, Lokal nicht. Fall jemand eine Lösung findet, schreibts hier mal bitte :)

Bitte Kommentar schreiben

Sie kommentieren als Gast.