{"id":4902,"date":"2017-06-06T09:24:39","date_gmt":"2017-06-06T07:24:39","guid":{"rendered":"https:\/\/8660.at\/?p=1325"},"modified":"2017-06-06T09:24:39","modified_gmt":"2017-06-06T07:24:39","slug":"css-font-stack-alternative-schriften-im-webdesign-klug-einsetzen","status":"publish","type":"post","link":"https:\/\/zeichenschatz.net\/en\/typografie\/css-font-stack-alternative-schriften-im-webdesign-klug-einsetzen\/","title":{"rendered":"CSS Font Stack \u2013 Alternative Schriften im Webdesign klug einsetzen"},"content":{"rendered":"<p class=\"leadin\">In Zeiten von Webfonts k\u00f6nnte man glauben, dass die Angabe von Fallback-Schriften \u00fcberfl\u00fcssig ist. Dabei sind sie wegen Mobile wichtiger denn je. In diesem Artikel erkl\u00e4re ich, warum und wie man einen robusten Font Stack erstellt, um die Anmutung einer Website zu erhalten, wenn etwas nicht nach Plan l\u00e4uft.<\/p>\n<h2>Was ist ein Font Stack?<\/h2>\n<p>Der CSS Font Stack ist eine Liste von <code>font-family<\/code>-Angaben. Da man sich (auch heutzutage) nie sicher sein kann, welche Schriftarten auf einem Endger\u00e4t installiert sind, gibt man eine Abfolge an weit verbreiteten vorinstallierten Schriftarten an. Ein Font Stack sieht z.B. so aus:<\/p>\n<pre lang=\"css\">font-family: \"Open Sans\", Helvetica, Arial, sans-serif;\n<\/pre>\n<p>Der Browser \u00fcberpr\u00fcft nach der Reihe, ob die angegebene Schrift am Ger\u00e4t vorhanden ist. Falls nicht, geht er solange in der Liste weiter, bis er die erste Schriftart findet, die installiert ist. Sollte es gar keine der angegebenen <code>font-family<\/code> geben, kann man mit Keywords f\u00fcr generische Schriftfamilien (wie <code>sans-serif<\/code>) die Standard-Schriften des Betriebssystems bzw. Browsers darstellen.<\/p>\n<h2>Warum ist es sinnvoll einen Font Stack zu definieren?<\/h2>\n<p>Auch wenn Webfonts es erm\u00f6glichen, Schriften auf Ger\u00e4ten anzuzeigen, auf denen sie nicht installiert sind, sollte man immer eine Ausweichl\u00f6sung haben, falls etwas nicht funktioniert. Denn in fast allen Situationen ist ein guter Fallback wichtig:<\/p>\n<h3>Wenn Webfonts nicht gleich dargestellt werden<\/h3>\n<p>Das liegt daran, dass sie noch geladen werden. In diesem Moment wird im Idealfall die n\u00e4chste definierte Systemschrift dargestellt (besser irgendein Inhalt als gar kein Inhalt) und dann durch den Webfont ausgetauscht. Dieser Austausch wird Flash of Unstyled Text, abgek\u00fcrzt <a href=\"https:\/\/matuzo.at\/webfont-performance\/\">FOUT<\/a>, genannt. Meistens springt das Layout dabei, da der Webfont andere Abmessungen als die Systemschrift hat. Mit einer m\u00f6glichst \u00e4hnlichen Fallback-Schrift l\u00e4sst sich dieser Effekt verringern.<\/p>\n<figure id=\"attachment_1408\" aria-describedby=\"caption-attachment-1408\" style=\"width: 768px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1408 size-full\" src=\"https:\/\/zeichenschatz.net\/wp-content\/uploads\/2017\/05\/flash-of-unstyled-text-fout-webfont-loading-1-1.gif\" alt=\"Beim langsamen Laden der Seite sieht man einen \u201eFlash of Unstyled Text\u201c\" width=\"768\" height=\"372\" \/><figcaption id=\"caption-attachment-1408\" class=\"wp-caption-text\">FOUT \u2013 Flash of Unstyled Text: Beim langsamen Laden der Seite sieht man wie die Systemschrift durch den Webfont ersetzt wird und das Layout sich dadurch ver\u00e4ndert.<\/figcaption><\/figure>\n<h3>Wenn Webfonts gar nicht dargestellt werden<\/h3>\n<p>Ursachen daf\u00fcr k\u00f6nnen eine langsame Internetverbindung, ein <strong>Ladefehler<\/strong> oder tempor\u00e4re Unerreichbarkeit eines Third-Party Services (wie Fontdeck oder Typekit) sein. Aber auch, wenn der Browser das gew\u00e4hlte <a href=\"https:\/\/css-tricks.com\/snippets\/css\/using-font-face\/\">Font Format nicht unterst\u00fctzt<\/a>, spezifische Browsereinstellungen oder <a href=\"https:\/\/www.thoughtco.com\/font-stack-definition-3467414\" target=\"_blank\" rel=\"noopener noreferrer\">Inhalts-Blocker<\/a> k\u00f6nnen Gr\u00fcnde daf\u00fcr sein, warum Webfonts gar nicht dargestellt werden. Mobil kann es h\u00e4ufiger bei schlechten Verbindungen zu unvollst\u00e4ndig oder nicht geladenen Webfonts kommen. Hier ist Zeit kostbar und der Font Stack sollte eine gute Alternative liefern.<\/p>\n<h3>Wenn auf Webfonts bewusst verzichtet wird<\/h3>\n<p>Das mag vor allem daran liegen, dass Webfonts aus <strong>Performance-Gr\u00fcnden<\/strong> (Ladezeit) als zu viel Ballast betrachtet werden bzw. man gestalterisch ohne auskommt. Dann muss man sehen mit welchen websicheren Systemschriften man die gew\u00fcnschte Anmutung am besten erzeugt, im Prinzip Webdesign wie vor zehn Jahren. Vor allem hier gilt es den Fallback gut zu \u00fcberlegen, alle Alternativen durchzuspielen und zu bedenken, dass es auf Android keine der g\u00e4ngigen websicheren Schriften gibt (mehr dazu sp\u00e4ter).<\/p>\n<p><strong>Doch wie erstellt man nun einen guten Font Stack?<\/strong> Hierf\u00fcr m\u00f6chte ich eine Anleitung in vier Schritten anhand eines konkreten Beispiels geben:<\/p>\n<h2>1. Den gew\u00fcnschten Webfont angeben<\/h2>\n<p>F\u00fcr dieses Beispiel w\u00e4hle ich den Webfont <i>PT Serif<\/i>. Da diese Schriftart prim\u00e4r dargestellt werden soll, muss sie an die erste Stelle meines CSS Font Stacks:<\/p>\n<pre lang=\"css\">font-family: \"PT Serif\";<\/pre>\n<h2>2. \u00c4hnliche Alternativen w\u00e4hlen<\/h2>\n<p>Nun geht es darum, eine dem Webfont im Stil m\u00f6glichst entsprechende <strong>Systemschrift<\/strong> auszuw\u00e4hlen. Hierf\u00fcr gibt es einige Listen und Tools, bei denen man nachsehen kann, welche Schriften es auf den verschiedenen Betriebssystemen gibt:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.cssfontstack.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CSS Font Stack<\/a> \u2013 zeigt welche Systemschriften auf Windows und Mac OS zu finden sind. Immer noch eine sehr gute Quelle, wenn auch schon etwas \u00e4lter, daher fehlen auch die Angaben zu den mobilen Betriebssystemen.<\/li>\n<li><a href=\"http:\/\/fontfamily.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Font Family Reunion<\/a> \u2013 zeigt, ob eine Schrift auf einem Betriebssystem installiert ist und was die Standard Schrift ist.<\/li>\n<li>Wikipedia Listen von vorinstallierten <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_typefaces_included_with_macOS\" target=\"_blank\" rel=\"noopener noreferrer\">Schriften auf Mac OS<\/a> und <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_typefaces_included_with_Microsoft_Windows\" target=\"_blank\" rel=\"noopener noreferrer\">Schriften auf Windows<\/a>.<\/li>\n<li><a href=\"http:\/\/www.apaddedcell.com\/sites\/www.apaddedcell.com\/files\/fonts-article\/final\/index.html\">Complete Guide to Pre-Installed Fonts<\/a> f\u00fcr Linux, Mac und Windows \u2013 eine sehr lange Tabelle von aPaddedCell, die zwar die Schriftart selbst mit Bildern zeigt, dadurch aber leider nicht durchsuchbar ist.<\/li>\n<\/ul>\n<p>Ich w\u00e4hle f\u00fcr unser Beispiel <em>Cambria<\/em>. Diese Systemschrift entspricht der <em>PT Serif<\/em> im Stil ziemlich gut, ist nach <a href=\"http:\/\/www.cssfontstack.com\/Cambria\">CSS Font Stack<\/a> auf Windows vorinstalliert und durch Microsoft Office auch auf einigen Macs.<\/p>\n<p>Als n\u00e4chste Alternative w\u00e4hle ich aus den <strong>websicheren Schriften<\/strong> die <em>Georgia. <\/em>Diese entspricht der <em>PT Serif<\/em> auch noch ziemlich gut und hat sehr \u00e4hnliche Abmessungen.<\/p>\n<figure id=\"attachment_1374\" aria-describedby=\"caption-attachment-1374\" style=\"width: 1400px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1374\" title=\"\" src=\"https:\/\/zeichenschatz.net\/wp-content\/uploads\/2017\/05\/css-font-stack-beispiel-font-families-1.png\" alt=\"\" width=\"1400\" height=\"806\" \/><figcaption id=\"caption-attachment-1374\" class=\"wp-caption-text\">Die verschiedenen Schriften im Font Stack im Vergleich<\/figcaption><\/figure>\n<p>An dieser Stelle muss man <strong>auf die Reihenfolge achten.<\/strong> St\u00fcnde <em>Georgia<\/em> vor <em>Cambria,<\/em> dann w\u00fcrde <em>Cambria<\/em> nie angezeigt werden. Das liegt daran, dass <em>Georgia<\/em> als websichere Systemschrift auf fast allen Ger\u00e4ten installiert ist. Damit auch die systemspezifische Schrift nach Verf\u00fcgbarkeit zum Einsatz kommen kann, sollte sie vor der websicheren Schrift angegeben werden. In diesem Fall also <em>Cambria<\/em> vor <em>Georgia<\/em>. Mein CSS Font Stack nun so aus:<\/p>\n<pre lang=\"css\">font-family: \"PT Serif\", Cambria, Georgia;<\/pre>\n<p>Es zahlt sich aus das ganze Layout oder l\u00e4ngere Texte <strong>nur in den Alternativschriften anzusehen<\/strong> und so zu beurteilen, ob sie sich wirklich bew\u00e4hren.<\/p>\n<h2>3. Generische Schriftfamilie als Abschluss<\/h2>\n<p>Dieser Punkt ist vor alle f\u00fcr Mobilger\u00e4te relevanter denn je, die immerhin einen Anteil von etwa 40 % des Webbrowsens ausmachen. Manche websicheren Schriften sind auf iOS nicht installiert, auf <strong>Android<\/strong> hingegen findet sich <strong>gar keine <\/strong>der g\u00e4ngigen Alternativen. Deshalb ist es wichtig, am Ende des Font Stacks ein Keyword f\u00fcr eine generische Schriftfamilie anzugeben:<\/p>\n<ul>\n<li><code>sans-serif<\/code>\u2013 die Standard-Serifenlose des Betriebssystems (am Mac <em>Helvetica,<\/em> auf Windows <em>Arial<\/em> oder auf Android <em>Roboto<\/em>)<\/li>\n<li><code>serif<\/code> \u2013 die Standard-Serifenschrift des Betriebssystems (am Mac <em>Times,<\/em> auf Windows <em>Times New Roman<\/em> oder auf Android <em>Noto Serif<\/em>)<\/li>\n<li><code>monospace<\/code> \u2013 die Standard-<a href=\"https:\/\/de.wikipedia.org\/wiki\/Nichtproportionale_Schriftart\">Festbreitenschrift<\/a> des Betriebssystems (am Mac <em>Courier,<\/em> auf Windows <em>Courier New<\/em> oder auf Andorid <em>Dorid Sans Mono<\/em>)<\/li>\n<\/ul>\n<p>Welche die Standard-Schriften sind, kann man auf <a href=\"http:\/\/fontfamily.io\">fontfamily.io<\/a> nachsehen, indem man die entsprechenden Keywords eingibt. Neben diesen drei bekannten CSS Keywords gibt auch noch die weniger bekannten <code>fantasy<\/code> und <code>cursive<\/code>. Doch vor der Verwendung dieser sollte man sich h\u00fcten, da sie je nach Browser und Betriebssystem sehr unterschiedliche Schriften darstellen und so extrem unterschiedliche Ergebnisse liefern. Wer mehr zu solchen Feinheiten erfahren m\u00f6chte sollte diesen <a href=\"https:\/\/www.zachleat.com\/web\/font-family-reunion\/\">Artikel von Zach Leatherman<\/a> lesen.<\/p>\n<p>Mit der Erg\u00e4nzung des Standard Font-Family-Keywords sieht mein CSS nun so aus:<\/p>\n<pre lang=\"css\">font-family: \"PT Serif\", Cambria, Georgia, serif;<\/pre>\n<h2>4. Bonus: Auf die optische Gr\u00f6\u00dfe achten<\/h2>\n<p>Es ist sinnvoll darauf zu achten, ob die Alternativschriften in den Abmessungen der Prim\u00e4rschrift m\u00f6glichst entsprechen. 16 px sind nicht gleich 16 px, denn jede Schrift hat leicht andere Gr\u00f6\u00dfenverh\u00e4ltnisse und \u00fcberhaupt ist das <a href=\"http:\/\/www.typolexikon.de\/schriftgrad\/\">Bemessen der Schriftgr\u00f6\u00dfe<\/a> eine komplizierte Sache. Was aber wesentlich zum optischen Eindruck der Schriftgr\u00f6\u00dfe beitr\u00e4gt, ist das Verh\u00e4ltnis der Kleinbuchstabenh\u00f6he (oder x-H\u00f6he) zum Gesamtkegel. Ist dieses Verh\u00e4ltnis sehr unterschiedlich, wird die Alternativschrift einen auffallend abweichenden Eindruck machen. Um dieses Gr\u00f6\u00dfenverh\u00e4ltnis herauszufinden, gibt es einen praktischen <a href=\"https:\/\/www.brunildo.org\/test\/xheight.pl\">x-Height Calculator<\/a>. Dieser funktioniert jedoch nur mit Schriften, die am System installiert sind.<\/p>\n<figure id=\"attachment_1375\" aria-describedby=\"caption-attachment-1375\" style=\"width: 1400px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1375 size-full\" src=\"https:\/\/zeichenschatz.net\/wp-content\/uploads\/2017\/05\/font-size-adjust-example-1.png\" alt=\"\" width=\"1400\" height=\"778\" \/><figcaption id=\"caption-attachment-1375\" class=\"wp-caption-text\">Links die PT Serif und rechts die Alternativschrift Cambria mit einer niedrigeren x-H\u00f6he. Dadurch sieht Cambria optisch kleiner aus. Mit <code>font-size-adjust<\/code> kann man diesen Unterschied ausgleichen.<\/figcaption><\/figure>\n<p>Bei unserem Beispiels sieht man eine Abweichung der x-H\u00f6he bei <em>PT Serif<\/em> und <em>Cambria.<\/em> Der x-Height Calculator ergibt f\u00fcr <code>font-size-adjust<\/code> ein Verh\u00e4ltnis von <code>0.5<\/code>. Das muss ich in meinem CSS nun nur nach der <code>font-family<\/code> erg\u00e4nzen, schon wird es in Betracht gezogen und alle Alternativschriften werden entsprechend vergr\u00f6\u00dfert:<\/p>\n<pre lang=\"css\">font-family: \"PT Serif\", Cambria, Georgia, serif;\nfont-size-adjust: 0.5; \/* Wert der Prim\u00e4rschrift *\/<\/pre>\n<p>Das w\u00e4re nun wunderbar einfach, doch nun die schlechte Nachricht: <code>font-size-adjust<\/code> wird leider <a href=\"http:\/\/caniuse.com\/#feat=font-size-adjust\">nur von Firefox unterst\u00fctzt<\/a>, und das hat sich seit 2008 nicht ge\u00e4ndert. Chrome unterst\u00fctzt das Feature nur <a href=\"https:\/\/www.chromestatus.com\/features\/5720910061371392\">unter einer Flag.<\/a> Damit der Support steigt <strong>votet f\u00fcr font-size-adjust<\/strong> bei <a href=\"https:\/\/wpdev.uservoice.com\/forums\/257854-microsoft-edge-developer\/suggestions\/6514821-font-size-adjust-other-font-properties\">Microsoft Edge<\/a> (ist schnell, einfach und ohne Registrierung).<\/p>\n<p>Auch wenn man nicht wirklich auf <code>font-size-adjust<\/code> setzen kann, schadet es nicht es anzugeben und wer wei\u00df, was die Zukunft bringt. Was dieses Beispiel aber nochmal klar macht, ist das man bei der Auswahl der Alternativschriften auch ohne <code>font-size-adjust<\/code> auf eine \u00e4hnliche x-H\u00f6he achten sollte. Hier gibt es noch mehr zum Thema:<\/p>\n<ul>\n<li><a href=\"http:\/\/caniuse.com\/#feat=font-size-adjust\">font-size-adjust auf CSS-Tricks<\/a> mit praktischen Code-Pen-Beispielen (funktionieren nur in Firefox)<\/li>\n<li><a href=\"https:\/\/www.w3.org\/TR\/css-fonts-3\/#propdef-font-size-adjust\">W3C font-size-adjust Candidate Recommendation<\/a> mit weiteren Beispielen und Veranschaulichungen<\/li>\n<\/ul>\n<hr \/>\n<p>Ein ganz sch\u00f6ner Prozess, der nicht immer einfach ist. Man muss sich durch viele Listen und Tools w\u00fchlen, um gute Alternativschriften zu finden und die wichtigsten F\u00e4lle zu bedenken. Es zahl sich aus viel auszuprobieren, um die Atmosph\u00e4re der nicht vorhandenen Wunschschrift noch am ehesten zu vermittelt. Nat\u00fcrlich werden die Systemschriften immer ein Kompromiss sein (sonst h\u00e4tte der Webfont ja keine Eigenst\u00e4ndigkeit), aber darauf gilt es sich einzulassen. Der Lohn daf\u00fcr ist ein robuster Font Stack der f\u00fcr die Unkontrollierbarkeit aber auch wundbare Flexibilit\u00e4t des Webs gewappnet ist.<\/p>\n<p><strong>M\u00f6chtest du mehr dazu erfahren?<\/strong> Dann sieh dir doch meinen <a href=\"https:\/\/zeichenschatz.net\/en\/web-typografie-workshop\/\">Inhouse Workshop Web Typografie<\/a> an.<\/p>\n<p>Abschlie\u00dfend m\u00f6chte ich noch <a href=\"https:\/\/stefangrassberger.at\/\">Stefan<\/a> f\u00fcr seine Unterst\u00fctzung mit Feedback und Lektorat zu diesem umfangreichen Artikel danken.<\/p>","protected":false},"excerpt":{"rendered":"<p>In Zeiten von Webfonts k\u00f6nnte man glauben, dass die Angabe von Fallback-Schriften \u00fcberfl\u00fcssig ist. Dabei sind sie wegen Mobile wichtiger denn je. In diesem Artikel erkl\u00e4re ich, warum und wie man einen robusten Font Stack erstellt, um die Anmutung einer Website zu erhalten, wenn etwas nicht nach Plan l\u00e4uft. Was ist ein Font Stack? Der [&hellip;]<\/p>","protected":false},"author":3,"featured_media":4988,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[83,411,412,414],"class_list":["post-4902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-typografie","tag-css","tag-web-fonts","tag-web-typografie","tag-webdesign"],"_links":{"self":[{"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/posts\/4902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/comments?post=4902"}],"version-history":[{"count":0,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/posts\/4902\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/media\/4988"}],"wp:attachment":[{"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/media?parent=4902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/categories?post=4902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zeichenschatz.net\/en\/wp-json\/wp\/v2\/tags?post=4902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}