Die Standardeinstellung auf die Systemschriftart eines bestimmten Betriebssystems kann die Leistung verbessern, da der Browser keine Schriftartdateien herunterladen muss, sondern eine verwendet, die er bereits hatte. Das gilt allerdings für jede „Web-sichere“ Schriftart. Der Reiz von „Systemschriftarten“ liegt darin, dass sie der aktuellen OS-Schriftart entsprechen, sodass sie eine angenehme Optik haben können.
Welche sind diese Systemschriftarten? Zum Zeitpunkt des Schreibens gliedert es sich wie folgt
| OS | Version | Systemschriftart |
|---|---|---|
| macOS | Monterey | San Francisco Pro (variabel) |
| macOS | El Capitan | San Francisco |
| macOS | Yosemite | Helvetica Neue |
| macOS | Mavericks | Lucida Grande |
| Windows | Vista | Segoe UI |
| Windows | XP | Tahoma |
| Windows | 3.1 bis ME | Microsoft Sans Serif |
| Android | Ice Cream Sandwich (4.0)+ | Roboto |
| Android | Cupcake (1.5) bis Honeycomb (3.2.6) | Droid Sans |
| Ubuntu | Alle Versionen | Ubuntu |
Zum Snippet, bitte!
Der Grund für die Einleitung ist, dass sie zeigt, wie tief Sie zurückgehen müssen, um Systemschriftarten zu unterstützen. Außerdem zeigt sie, dass mit neuen Systemversionen neue Schriftarten kommen und somit die Möglichkeit besteht, Ihren Schriftartstapel zu aktualisieren.
Methode 1: Systemschriftarten auf Elementebene
Chrome und Safari haben kürzlich „system-ui“ eingeführt, was eine generische Schriftfamilie ist, die anstelle von „-apple-system“ und „BlinkMacSystemFont“ in den folgenden Beispielen verwendet werden kann. Hut ab vor J.J. für die Info.
Eine Methode zur Anwendung von Systemschriftarten ist der direkte Aufruf auf einem Element über die Eigenschaft font-family.
GitHub nutzt diese Methode auf seiner Website und wendet Systemschriftarten auf dem body-Element an
/* System Fonts as used by GitHub */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
Sowohl Medium als auch das WordPress-Admin verwenden einen ähnlichen Ansatz, mit einer leichten Abwandlung, insbesondere der Unterstützung für Oxygen Sans (entwickelt für das GNU+Linux-Betriebssystem) und Cantarell (entwickelt für das GNOME-Betriebssystem). Dieser Snippet unterstützt auch bestimmte Arten von Emojis und Symbolen nicht mehr
/* System Fonts as used by Medium and WordPress */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue",sans-serif;
}
In jüngerer Zeit haben Chrome und Safari system-ui eingeführt, eine generische Schriftfamilie, die -apple-system und BlinkMacSystemFont ersetzen kann. Das bedeutet, dass der GitHub-Snippet wie folgt reduziert werden könnte
/* System Fonts with system-ui */
body {
font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
Hinweis: Booking.com hat eine ausführliche Abhandlung veröffentlicht, die davor warnt, die Snippets, die mit -apple-system beginnen, in der Kurzschrifteigenschaft font zu verwenden, da einige Browser die führende Schriftart als Vendor-Präfix ansehen und ignorieren werden. Verwenden Sie stattdessen die Eigenschaft font-family oder ersetzen Sie -apple-system und BlinkMacSystemFont durch system-ui.
Die offensichtliche Einschränkung hier ist, dass Sie diese lange Liste von Schriftarten jedes Mal aufrufen müssen, wenn Sie sie auf ein einzelnes Element anwenden möchten. Mit der Zeit könnte das umständlich werden und Ihren Code aufzublähen. Stattdessen könnten Sie erwägen, eine CSS-Variable dafür zu verwenden
:root {
--system-ui: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
.element {
font-family: var(--system-ui);
}
Dies ist sicherlich leichter zu lesen, aber auch besser wartbar, falls der Stapel jemals aktualisiert werden muss. Ändern Sie ihn einmal und er gilt überall!
Methode 2: Systemschriftstapel
Jonathan Neal bietet eine alternative Methode, bei der Systemschriftarten mithilfe von @font-face deklariert werden.
/* Define the "system" font family */
@font-face {
font-family: system-ui;
font-style: normal;
font-weight: 300;
src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Ubuntu Light"), local("Segoe UI Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma");
}
/* Now, let's apply it on an element */
body {
font-family: "system-ui";
}
Der Snippet wurde zum Zeitpunkt des Schreibens seit einiger Zeit nicht mehr aktualisiert und kann zu unterschiedlichen Schriftarten führen, aber der Grund, warum wir ihn hier aufnehmen, ist, dass er die Möglichkeit zeigt, Variationen der in der obigen Snippet definierten system-ui-Schriftfamilie zu definieren, um Kursivschrift, Fettdruck und zusätzliche Schnitte zu berücksichtigen.
Wenn wir keine CSS-Variablen hätten, wäre dies eine viel effizientere Methode, den Code zu schreiben und zu aktualisieren.
Verwandt
- OS-spezifische Schriftarten in CSS – einschließlich einer JavaScript-Methode zum Testen der verwendeten Schriftart.
- Systemschriftarten in SVG
- Implementierung von Systemschriftarten auf Booking.com – Eine Lektion gelernt – Booking.com teilt mit, wie sie gelernt haben, dass die Verwendung eines Systemschriftstapels in der Kurzschrifteigenschaft
fontnicht wie erwartet funktioniert.
Das ergibt viel Sinn und ich plane, dies auf meiner nächsten Website zu verwenden, aber dies sind alles serifenlose Schriftarten. Ich frage mich, ob es möglich ist, ähnliche Stapel für serifenlose und serifenbasierte Systemschriftarten zu erstellen. Ich möchte vielleicht serifenbasierte Schriftarten für Überschriften oder Blockzitate zur Hervorhebung verwenden und serifenlose Schriftarten für pre- und code-Elemente anwenden.
Gibt es ein Betriebssystem, das eine Serifenschrift als Systemschriftart verwendet?
Chris Coyier fragte
Chris, ich könnte falsch liegen, aber ich glaube nicht, dass ein Betriebssystem oder eine X11-Desktop-Umgebung serifenbasierte Schriftarten als Systemschriftarten verwendet. Mein ursprünglicher Kommentar hätte jedoch klarer sein können. Ich war daran interessiert, Stapel von serifenbasierten und serifenlosen Schriftarten zu verwenden, die auf vorinstallierten Schriftarten verschiedener Betriebssysteme basieren, für die Verwendung in gebündelten Textverarbeitungsprogrammen wie WordPad und Terminalemulatoren wie Terminal.app.
Zum Beispiel kommt Windows mit Times New Roman und Courier New. OS X kommt mit Apple Garamond und Monaco. Vor Version 4.0 wurde Android neben der Droid Sans UI-Schriftart mit Droid Serif und Droid Mono geliefert.
Basierend auf vorläufigen Recherchen habe ich die folgenden „System“-Schriftstapel für Serifenschrift und serifenlose Schrift erstellt. Ich entnehme diese meinem Sass-Variablen-Partial.
Dies sind nur vorläufige Ergebnisse; ich bin noch lange nicht mit dem Testen fertig.
Es gibt noch eine weitere Sache zu beachten, wenn man Systemschriftstapel verwendet:
Einige Metriken wie „ex“ basieren auf dem Laden der ersten Schriftart! Dies ist wichtig, wenn Ihre Schriftart mit Ihrem Raster ausgerichtet sein soll.
Andernfalls wird die Metrik einer anderen Schriftart verwendet, und Sie könnten eine Überraschung erleben!
Woher stammt die Schriftartzeichenkette:
.SFNSText-Light? Ich sehe diesen Namen nirgendwo in der Schriftartdefinitionsdatei. Nur neugierig, Prost!Ich glaube, das ist der private (System-)Schriftartname, der vom OS verwendet wird. Er erscheint nicht in den System- oder Anwendungs-Schriftart-Auswahlen, kann aber manuell angegeben werden.
Es ist San Francisco (New Sans?) von Apple und wird als Systemschriftart unter macOS verwendet
Die Verwendung lokaler Schriftarten verbraucht so viel Netzwerk (kein) wie z. B. sans-serif – warum mir der zweite Ansatz seltsam erscheint. Wenn es darum geht, weniger zu tippen, würde ich eine SCSS-Variable verwenden – wie
Bitte korrigieren Sie mich, wenn ich falsch liege :-)
Du hast Recht.
Die Verwendung der @font-face-Methode funktioniert auch ohne SCSS.
Ja, Sie tätigen zwar eine Anfrage an diese Schriftarten lokal, aber Sie haben keine Latenz.
Es ist erwähnenswert, dass
system-uiin neueren Versionen von Chrome anstelle vonBlinkMacSystemFontfunktioniert.Wie sieht es mit iOS aus?
Wird es eine dieser Syntaxen unterstützen?
Mit welcher Schriftart wird es gerendert?
iOS verwendet San Francisco als Systemschriftart, genau wie OS X El Capitan. Rendert es auf Mobile Safari anders als auf dem Desktop?
Booking.com hat über seine Erfahrungen bei der Implementierung von Systemschriftstapeln geschrieben und davor gewarnt,
-apple-systeman erster Stelle zu setzen, wenn Siefontanstelle vonfont-familyverwenden.Körper {
font: 16px/1.2 BlinkMacSystemFont, -apple-system, “Segoe UI”, Roboto, Helvetica, Arial, sans-serif;
}
vs.
Körper {
font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, Helvetica, Arial, sans-serif;
}
Vielleicht könnte hierzu ein Sternchen gemacht werden. Ansonsten sehr coole Sache!
Absolut, guter Hinweis! Tatsächlich haben wir einen Link zum Booking.com-Post in einem anderen Beitrag veröffentlicht und hätten ihn auch hier angeben sollen. Betrachten Sie diesen Beitrag als aktualisiert!
Bitte entschuldigen Sie meine Unwissenheit, aber welchen Vorteil hat dies gegenüber der Verwendung von
serifodersans-serif?Diese entsprechen nicht der Systemschriftart. Zum Beispiel würde ich auf meinem Mac, wenn ich
sans-serifverwenden würde, Helvetica erhalten, während die Systemschriftart San Francisco ist.Hallo Ben, schauen Sie sich meinen Kommentar unten und den Link an.
Danke euch beiden, das hatte ich nicht gewusst … ich werde es ausprobieren!
„-apple-system“ und „BlinkMacSystemFont“ werden durch die neue Standard-Generalschriftartfamilie „system-ui“ ersetzt.
„system-ui“ wird auch von Firefox unterstützt.
Siehe
https://www.chromestatus.com/feature/5640395337760768
system-uiwird in Firefox 57.0.2 (64-bit) unter Win7 nicht unterstützt, aber ich kann nichts über Win10 sagenGibt es einen ähnlichen Stapel für System-Monospace-Schriftarten? Es ist recht einfach, den korrekten Schriftartnamen für die meisten Nicht-Apple-Plattformen zu erhalten, aber es wäre schön, SF Mono über ein Flag wie -apple-system-monospace zugänglich zu machen. Bisher scheint es dazu keine Dokumentation zu geben.
Bedeutet das, dass wenn Sie den
font-face-Stapel nach der Methode von Jonathan Neal nicht verwenden, Sie sich darauf verlassen müssen, dass Ihr Browser Dinge „unecht“ fett und kursiv darstellt?Ich habe vor kurzem wieder bei Null angefangen, eine HTML-Seite erstellt und dann festgestellt, wie viele Schriftarten ich hochladen müsste, damit diese Seite allgemein verfügbar ist… also habe ich eine PDF-Datei erstellt. Vielleicht ist sie für Amateure wie mich nützlich.
Es ist eine Reihe von Schriftarten (sans, serif, humanist, mono), jeweils mit ein paar Zeilen identischem Beispieltext, angeordnet nach zunehmender Größe. Wählen Sie aus: Eine Website, an der ich arbeite, hat eine Spaltenbreite von 540px, also wird diese Zeilenbreite verwendet.
Skalieren Sie sie auf 900 % (fragen Sie nicht!), um eine genaue Wiedergabe des HTML auf meinem 1920 x 1200 Mac-Bildschirm zu erhalten.
Selbst wenn die Skalierung nicht reproduzierbar ist, können die relativen Größen und Stärken der Schriftarten eingeschätzt werden.
wavehands.net/some text examples.pdf
Prost.
Scheint, als ob IE11
-apple-systeminfont-familynicht erkennen kann. IE11 betrachtet dies als ungültigen Wert.Uff. Ich bin so übersättigt von Roboto.
Eine Anmerkung: GitHub – und sie machen das immer noch – hat irgendwie die Reihenfolge falsch. Sie verwenden die generische
sans-serif-Familie mitten im Stapel, was das Folgende bedeutungslos machen sollte.Beachten Sie, dass nach
sans-serifEmoji/Symbol-Schriftarten folgen – wenn der Browser ein Zeichen unter sans-serif nicht anzeigen kann, versucht er es weiterhin mit diesen Symbol-Schriftarten. Gut für Emojis.Möchten Sie wirklich die Systemschriftart? Ich bin ziemlich sicher, dass die meisten Leute einfach eine saubere serifenlose Schriftart wie Segoe oder San Francisco mögen. Oder sollen Ihre chinesischen Benutzer eine pixelige Schriftart erhalten? Sollen Ihre Ubuntu-Benutzer die kleine, schrullige Ubuntu-Schriftart lesen? Nein? Aber das ist genau ihre Systemschriftart.
Vielleicht ist es besser, eine bestimmte serifenlose Schriftart zu wählen, z. B. Open Sans, Source Sans Pro oder Montserrat, die zu Ihrer Tonart passt und diese als Webfont einbinden. Wenn Sie dies nicht können oder wollen, können Sie diesen Systemschriftstapel verwenden, aber lassen Sie system-ui und andere unerwünschte Optionen besser weg.
Achten Sie auch auf Fehler, die durch die Verwendung unterschiedlicher Schriftarten auf verschiedenen Plattformen entstehen. Ich habe einige in meinem Blogbeitrag gesammelt – testen Sie also gründlich.
Welche sind die Schriftarten für Windows 7, 8 und 10?
Bin ich der Einzige, der sich fragt, warum die empfohlenen Standardschriftarten überhaupt benötigt werden?
Das ist ein toller Beitrag! Ich denke, es wäre sehr hilfreich, auch den Systemschriftstapel für Monospace-Schriftarten hinzuzufügen.
Ich fand den Kommentar von Chris Coyier vom 13. Juni 2017 faszinierend. Für Ladezeit und Konsistenz (Benutzerkomfort) sind „serif“ oder „sans serif“ derzeit nicht gut genug. Es scheint mir, dass dies nach einem zusätzlichen Standard verlangt. Dann, wenn ein bestimmtes Betriebssystem oder ein Browser die richtige Schriftart nicht anzeigt, wird dies einfach in der nächsten standardkonformen Version behoben. Dies würde denselben vereinfachenden Evolutionspfad verfolgen, den wir an der Spitze von HTML5-Webseiten und in der Zeichenkodierung sehen.
Die @font-face-Regel am Ende des Beitrags rendert Tahoma für mich unter Google Chrome 71 Windows 10
Aber was ist der Sinn eines Systemschriftstapels, warum nicht einfach „font: sans-serif“ verwenden und gut ist? Oder eine einzelne serifenlose Schriftart auf Ihren Webspace hochladen und diese verwenden, wenn Sie Kontinuität oder Markenimage beibehalten möchten.
Es gibt einige klare Punkte
In iOS 13 würde die Einstellung für den Systemschriftstapel Times New Roman anzeigen.
Für mich sieht es so aus, als ob die macOS-Systemschriftart in Chrome zu eng gerendert wird, besonders bei kleineren Größen. Die Zeichen sind zu nah beieinander. Nur ich?
Eine Sache, über die ich verwirrt bin, ist, dass Apple die San Francisco-Schriftarten zum Download auf seiner Website veröffentlicht. In meinem Design-Tool (Sketch App) verwende ich SF Pro Text, aber diese Schriftart scheint nicht mit
-apple-system, BlinkMacSystemFontübereinzustimmen. Sie sehen unter macOS anders aus (ich habe sowohl Chrome als auch Safari ausprobiert).Ich habe keine Lust, SF Pro Text auf meiner Website zu installieren, wenn ich es nicht brauche, aber es stört mich wirklich, dass sie nicht übereinstimmen. Ich möchte die Version, die auf http://www.apple.com zu sehen ist.
Habe ich etwas übersehen?
Das hat auch mich verwirrt! Meine Vermutung ist, dass SF Pro anders ist als SF Display, was anders ist als SF UI… Letzteres ist zumindest die Systemschriftart. Zumindest ist das meine unerforschte beste Vermutung.
Es sieht so aus, als ob „SF Pro Display bei Schriftgrößen von 20 Punkten oder höher verwendet wird, während SF Pro Text bei Schriftgrößen von 19 Punkten und darunter verwendet wird. “ Die Systemschriftart wechselt dynamisch zwischen den beiden, wenn sich die Schriftgröße ändert.
Allerdings sehe ich etwas sehr Seltsames: Die SF Pro Text, die ich von Apple heruntergeladen habe, sieht aus wie die SF Pro Display, die ich im Browser sehe, und die SF Pro Display, die ich heruntergeladen habe, sieht aus wie die SF Pro Text, die ich im Browser sehe. Es ist, als ob sie vertauscht wären. Ich kann es am Abstand zwischen den Buchstaben erkennen. Das ist sehr seltsam.
Hallo Stuart,
Das habe ich auch gerade auf meiner Website in Chrome und Safari auf einem Mac entdeckt.
Haben Sie eine Lösung gefunden, damit tatsächlich die San Francisco Font angezeigt wird?
Wie wäre es mit der Monospace-Version?
Einfach
Was ist das Szenario, wenn einige Zeichen in der ersten Schriftart nicht verfügbar sind, aber in der zweiten?
Wird der Text aus beiden Schriftarten gemischt?
Yep.
Danke! Ich habe ein Problem.
Ihr Artikel erklärt nicht, wie ich die variable Segoe UI-Schriftart in CSS im Systemstapel verwenden soll. Sie wissen vielleicht, dass Microsoft diese Schriftart mit Windows 11 eingeführt hat, aber ich weiß nicht, wie ich sie im Systemstapel verwenden kann, damit meine Website auf Windows 11-Geräten gut aussieht. Bitte leiten Sie.
Sie müssen sie nicht überall wiederholen oder @font-face verwenden. Verwenden Sie einfach CSS Custom Properties („CSS-Variablen“)
Verwenden Sie dann diese Sammlung überall
Ein kleiner Vorbehalt, bevor Sie zu
system-uiwechselnhttps://infinnie.github.io/blog/2017/systemui.html
Das ist ein Nicht-Problem. Das ist das beabsichtigte Standardverhalten auf Chinesisch und sollte nicht mehr als Punkt betrachtet werden. Siehe https://github.com/JLHwung/postcss-font-family-system-ui/issues/210#issuecomment-531519416 und https://github.com/primer/css/issues/1589#issuecomment-919985344.
Methode 2 unterstützt
font-size-adjustnicht? Stimmt?Muss der Artikel aktualisiert werden, um zu sagen, dass Methode 2 einfach nicht mehr funktioniert? Unter macOS 12.5 erhalte ich für das gegebene Beispiel Ubuntu Light in Firefox und Chrome und Tahoma in Safari (wegen des Anti-Fingerprinting-Banns von Safari für benutzerdefinierte Schriftarten). Mit anderen Worten, keine dieser Systemschriftartnamen (beginnend mit einem Punkt) wird überhaupt erkannt.
Nun, Methode 2 ist nicht mehr notwendig, wenn Sie nur die native Systemschriftart ansprechen möchten, da
system-uidies heutzutage gut handhabt. Aber wenn Sie gezielt die SF-Systemschriftarten auf Apple-Geräten ansprechen und auf anderen Systemen auf etwas anderes zurückfallen möchten, scheinen Sie immer noch bei-apple-system, BlinkMacSystemFont, "Something Else"festzustecken. Es ist schade, dass Chrome-apple-systemimmer noch nicht erkennt.Ausgezeichnete Anmerkungen, danke!
Toller Beitrag! Hut ab!