Ich habe ein paar Abende damit verbracht, herauszufinden, wie man @ font-face am besten mit modernen Browsern implementieren kann. Ich bin ein Vollzeit Web / Systementwickler mit einem Hintergrund als Grafikdesigner Ich finde die Möglichkeiten und Möglichkeiten mit Webdesign immer interessanter. Also habe ich ein paar Tests gemacht und würde gerne hören, ob irgendjemand Ratschläge, bessere Ideen oder Inputs dazu hat. Mein Testszenario sieht so aus.
Ich habe mit vielen verschiedenen Online-Tools und -Anwendungen getestet, aber am Ende habe ich das auf einen Online-Service und eine Anwendung reduziert.
Ich benutzte eine Schriftart, die mit meinem Mac, Tamil Sangam MN und Tamil Sangam MN Bold, beide als offener Typ, .otf ausgeliefert wurden.
Dies ist ein gutes Online-Tool, es ist sehr gut. Es gibt ein paar verschiedene Modi und ich habe die Basic und Optimal verwendet. Die Ausgabe meiner .otf-Datei war svg, ttf, eot und woff.
Regulär
Fett
Das erste, was mir bei den optimalen Schriften aufgefallen ist, ist, dass sie wesentlich kleiner sind als die Basisvarianten ~ 260 KB!
Regulär
Fett
Dieses Tool kann so viel mehr, als nur Schriften für das Web zu jonglieren. Es kann mehrere Formate untereinander konvertieren; wie Opentype, True Type, Webfonts, Postscript und so weiter. Das Ergebnis ist insgesamt sehr hohe Qualität der Dateien sind so groß, fast doppelt so groß wie FontSquirrels Basic-Versionen und über 7-mal größer als FontSquirrels Optimal Version.
Regulär
Fett
Es hat mich am Anfang etwas verwirrt, dass die Reihenfolge in der Fontliste wichtig war. Dann entdeckte ich, dass einige das erste Format verwenden, das sie für kompatibel hält, anstatt sich an das Format zu halten, das optimal ist - und es ist nervig. Nach einigen Labors habe ich festgestellt, dass dies die optimale Methode ist, um CSS zu formatieren (beachten Sie die Reihenfolge der Dateitypen | wichtig! ).
%Vor%Ich habe die beste Version mit einem * markiert
Firefox MAC (15.0.1)
Firefox Windows (15.0.1)
Safari Mac (6.0)
Chrome Mac (21.0)
Chrome Windows (21.0)
Internet Explorer (9.0)
Firefox MAC (15.0.1)
Firefox Windows (15.0.1)
Safari Mac (6.0)
Chrome Mac (21.0)
Chrome Windows (21.0)
Internet Explorer (9.0)
Normalerweise ordne ich meine Webfonts in folgendem Muster an: & lt; webfonts & gt; / & lt; Umwandlungsquelle & gt; / & lt; Umwandlungsmethode & gt; / & lt; Schriftarten & gt;
%Vor%Grafische Übersicht des Ergebnisses (Fullsize in Ссылка )
Es gibt kein einziges Tool, das Schriften liefert, die in allen Browsern auf dem Mac und Windows angezeigt werden. Sie müssen für jede Schriftart experimentieren und testen. Die oben beschriebene Methodik ist nur ein einfacher Weg und Vorschlag, wie Sie mit @ font-face's testen und experimentieren können.
Gibt es etwas, von dem Sie glauben, dass ich meine Methoden oder Implementierung ändern könnte? Gibt es eine Anwendung oder einen Service, die ich vermisst habe?
Alles Gute / T
Sie können src: local('ò?'),
hinzufügen, das nach einer lokalen Schriftart mit diesem Namen sucht. Dadurch wird der Browser gezwungen, lokale Zeichensätze zu ignorieren, wenn sie denselben Namen wie Ihre benutzerdefinierte Schriftart haben. Sie können dies auch umgekehrt verwenden, um das Herunterladen von benutzerdefinierten Schriftarten einzuschränken. siehe Mobiler Support
Ich sehe generell die ?#iefix
-Zeile nach dem Standard .eot
src, obwohl ich nicht sagen kann, dass ich sie je gebraucht habe, und auch nicht, ob eine spezifische Positionierung erforderlich ist (abgesehen von .eot
, die zuerst aufgelistet wird) .
Wenn Sie mehr Kontrolle über die Zeichensätze in dem Szenario suchen, in dem die Zeichensätze nicht geladen werden können, oder über den FOUC im IE, habe ich ein jQuery-Plugin, mit dem Sie Zeichensätze beim Laden verstecken können Ändern Sie die Schriftgröße bei fehlgeschlagen, damit Ihre Fallbackschrift nicht Ihr Layout zerstört. Wie zu wissen, ob Eine Schriftart (@ font-face) wurde bereits geladen?
Außerdem kann IE6-8 Probleme mit der EOT-Datei einiger Schriften haben. Dies kann entweder ( vollständige Anleitung hier ) behoben werden:
Scheint nur auf IE und FF bezogen zu sein. Alle anderen Browser (nur die neuesten getesteten Versionen) haben keine Probleme.
CORS sind ein häufiges Problem mit Zeichensätzen und treten auf, wenn Sie Zeichensätze aus einer anderen Domäne oder einem anderen Hostnamen laden. Dies beinhaltet die Angabe Ihrer Site mit www
oder nicht. Der Code @font-face
muss relativ referenziert werden, ebenso wie die CSS-Datei. Sie haben auch Probleme, wenn Sie ein <base>
-Tag in Ihrem HTML definieren. Wenn dies nicht möglich ist oder Sie sich nicht um CORS kümmern möchten, müssen Sie den folgenden Code in eine .htaccess
-Datei in Ihrem Font-Verzeichnis einfügen:
404 Probleme bei der Bereitstellung von Schriftarten können durch falsche MIME-Definitionen verursacht werden. Weitere Informationen finden Sie hier: Mime-Typ für WOFF Schriftarten?
Mobiler Support ist ziemlich schlecht. Android unterstützt es erst ab 4.0 und Windows Mobile unterstützt es soweit ich weiß überhaupt nicht. Ich untersuche jede mögliche Arbeit oder Lösungen dafür. Am besten habe ich bisher Wie kann man wissen, ob eine Schriftart (@ font-face) bereits geladen wurde? , um ein Bild des Textes beim Laden der Schriftart anzuzeigen. Dies funktioniert wirklich nur für Website-Titel und Symbole, sonst ist es eine schrecklich schlechte Arbeit herum, schlecht für SEO und schlechtes UX.
Siehe @font-face
support.
Außerdem werden Android 2.2 - x.x.x-Versionen fehlschlagen, wenn Ihr @font-face
local()
verwendet, was auch als Korrektur für IE verwendet wird. Möglicherweise sind mehrere Stylesheets erforderlich, wenn Sie alle Ihre Datenbanken abdecken möchten. Sehen Sie mehr hier: Ссылка
Chrome verwendet die SVG-Schriftart nicht, wenn Sie die #fontName
in die URL aufnehmen. Es wird auch WOFF vor SVG verwenden - und macht es nicht gut, es zu rendern. Dies ist wahrscheinlich der Grund, warum sich jeder über das schrille Font-Rendering in Chrome lustig macht ... Um dies zu umgehen, ist eine zusätzliche @ Font-Face-Deklaration erforderlich: