Methoden zur Steuerung von Abständen in der Web-Typografie

Avatar of Geoff Graham
Geoff Graham am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wenn Sie 2006 Websites entwickelt haben, haben Sie vielleicht mit einem Designer wie mir zusammengearbeitet, der sich sehr darum kümmerte, dass die Schriftarten im Browser nicht *genau* gleich aussahen wie auf den Mockups.

Dann haben Sie mir vielleicht die Schmerzen der browserübergreifenden Kompatibilität erklärt und wie verschiedene Browser Schriftarten unterschiedlich darstellen. Als Antwort hätte ich Ihnen wahrscheinlich eine Bilddatei geschickt, die den Inhalt enthält, um sicherzustellen, dass alles in allen Browsern gleich aussah. Ja, ich war einer dieser Designer.

Web-Schriftarten haben sich seitdem sehr gut entwickelt, und wir haben jetzt Werkzeuge, um die Darstellung von Schriftarten in Browsern zu optimieren. Einige gibt es schon seit geraumer Zeit. Ich erinnere mich, wie mein Verstand vor Aufregung fast platzte, als ich FitText.js und Lettering.js entdeckte.

Es gibt auch heute noch viele Situationen, in denen die Anpassung von Schriftarten erforderlich ist, um die beste Lesbarkeit zu gewährleisten, trotz all dieser schicken Werkzeuge. Wir werden einige davon in diesem Beitrag behandeln, zusammen mit Methoden, wie man damit umgeht.

Eine exakte Überschrift richtig aussehen lassen

Das passiert mir oft, besonders wenn ein Design eine stark angepasste Web-Schriftart enthält, die im Allgemeinen gut aussieht, aber in einem bestimmten Kontext seltsam wirken könnte.

Nehmen wir die folgende Überschrift mit Abril Fatface von Google Fonts

Es ist eine schöne Schriftart! Allerdings gibt es ein paar Punkte, die mir bei dieser speziellen Überschrift nicht gefallen, insbesondere der Abstand zwischen ein paar Buchstaben, was die Dinge etwas überladen macht.

Hier kommt die Spationierung (Kerning) zur Rettung! Spationierung wird wörtlich als der Abstand zwischen Buchstaben definiert. Alle Schriftdateien enthalten, ob wir es wissen oder nicht, einen gewissen Grad an Spationierung, und wir haben die CSS-Eigenschaft font-kerning, um sie zu entfernen.

.no-kern-please {
  font-kerning: none;
}
<h1 class="no-kern-please">Rubber Baby Buggy Bumpers</h1>

Es ist ein subtiler Unterschied, aber einer, der nützlich sein kann, wenn Ihr Designer (oder Ihr eigenes Auge) dies tun möchte.

Beachten Sie, dass die Deaktivierung der Spationierung nicht immer in Ihrem Interesse ist. Wie James Kolce in einem Kommentar unten bemerkte, verwenden gut gestaltete Schriften Spationierung als Werkzeug und haben einen Grund dafür. Das Entfernen der Spationierung mit CSS könnte, während es einige spezifische Designanforderungen in einer Einzelsituation anspricht, unbeabsichtigte Folgen für den Abstand zwischen den Buchstaben in der Schrift insgesamt haben, was den Abstand zwischen anderen Buchstaben nicht so gut machen könnte.

Siehe den Stift Kerning Toggle von CSS-Tricks (@css-tricks) auf CodePen.

Diese Browser-Supportdaten stammen von Caniuse, das mehr Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.

Desktop

ChromeFirefoxIEEdgeSafari
29*34Nein797*

Mobil / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
1271274.4*8*

Schlechte Zeichenabstände überall beheben

Wenn Sie jemals mit einer Web-Schriftart gearbeitet haben, bei der der Abstand zwischen jedem einzelnen Buchstaben entweder zu groß oder zu klein ist, wissen Sie genau, wie schmerzhaft diese Situation ist. Hier ist ein Beispiel mit einer weiteren schönen Google-Web-Schriftart namens Dorsa

Das mag für Überschriften eine brauchbare Display-Schrift sein, aber können Sie sich vorstellen, das als Absatz zu lesen? Nicht gut.

Diese Inhalte sind schwer zu lesen!

Die CSS-Eigenschaft letter-spacing kann helfen, den Absatzinhalt weitreichend zu ändern, wenn wir ein paar Pixel zwischen jeden Buchstaben einfügen.

.spaced-out {
  letter-spacing: 2px;
}

Ich würde nicht so weit gehen zu sagen, dass dies immer noch die beste Schriftart für den Absatztext ist, aber sie ist mit dem zusätzlichen Abstand viel leichter zu lesen.

Siehe den Stift zKkPqK von CSS-Tricks (@css-tricks) auf CodePen.

Diese Browser-Supportdaten stammen von Caniuse, das mehr Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.

Desktop

ChromeFirefoxIEEdgeSafari
3029126.1

Mobil / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
1271274.44.0-4.1

Zu wenig oder zu viel Abstand zwischen Wörtern

Dies ist eine Abzweigung der letzten Situation, außer dass die Abstandsprobleme zwischen jedem Wort und nicht zwischen einzelnen Zeichen liegen.

Hier ist die CSS-Eigenschaft word-spacing großartig und wird von allen Browsern universell akzeptiert. Hier ist ein Beispiel für einen Text, der die Prompt-Web-Schriftart verwendet, die etwas breiter ist als viele andere Schriftarten und schöner aussehen würde, wenn sie für diesen Anwendungsfall etwas zurückgestellt würde.

Siehe den Stift GjJaaE von Geoff Graham (@geoffgraham) auf CodePen.

Unangenehme Zeilenabstände

Nicht alle Zeilenhöhen sind gleich. Betrachten Sie die Art und Weise, wie einige Schriftarten größer aussehen als andere, obwohl sie denselben zugewiesenen Wert für font-size haben.

Siehe den Stift Unterschied in der Zeilenhöhe nach Schriftart von CSS-Tricks (@css-tricks) auf CodePen.

Die Einstellung von font-size legt die Begrenzungsbox fest, innerhalb derer eine Schriftart Platz einnehmen darf. Wenn wir unsere font-size auf 20px setzen, wird eine Box erstellt, die 20px vertikalen Platz für jedes Zeichen beansprucht.

Manche Schriftarten beanspruchen mehr Platz als andere, was den Anschein erweckt, dass eine Schriftart größer ist als die andere, aber auch, dass mehr oder weniger vertikaler Platz zwischen den Zeilen vorhanden ist.

Wir können die line-height-Eigenschaft verwenden, um diesen vertikalen Abstand anzupassen. Eine gute Faustregel ist etwa font-size * 1,5 = line-height (oder verwenden Sie eine einheitenlose line-height: 1,5;) für die Lesbarkeit, aber das hängt von der verwendeten Schriftart und davon ab, wie sie vertikalen Platz einnimmt. Schauen Sie sich Molten Leading an.

Schärfe und Lesbarkeit

Nicht alle Schriftarten sind auf verschiedenen Betriebssystemen gleich gut. Das liegt daran, dass jedes Betriebssystem, sei es Windows, Mac OS oder etwas anderes, unterschiedliche Prozesse hat, wie viele Pixel für die Anzeige von Schriftarten verwendet werden.

Viele von uns Webdesignern verabscheuen den Gedanken, von der Art und Weise abhängig zu sein, wie ein System unsere typografischen Entscheidungen interpretiert.

Bildquelle: webtype.com

Es gibt CSS-Eigenschaften, die uns zur Verfügung stehen, um die scheinbare Auflösung der angezeigten Schriftarten auf verschiedenen Systemen zu erhöhen. Dieser Prozess ist formeller als Subpixel-Rendering bekannt, da er den Browser anweist, zu versuchen, fehlende Pixel zu füllen, wo sie existieren könnten.

Es gibt keine Knappheit an #heißer Drama darüber, ob es angemessen ist, mit dem Subpixel-Rendering von Schriftarten zu spielen. Obwohl einige Jahre alt, fasste Dmitry Fadeyev seine Argumentation gegen die Praxis schön zusammen.

Der Kantenglättungsmodus ist keine „Korrektur“ für das Subpixel-Rendering – in den meisten Fällen ist er ein Handicap. Subpixel-Rendering ist technisch überlegen, klarer und lesbarer als Kantenglättung, da es durch die Nutzung jedes einzelnen Subpixels seine effektive Auflösung zur Schriftglättung um das Dreifache erhöht. Kantenglättung ist nützlich für bestimmte Umstände, wie z. B. für helle auf dunkle Texte, aber sie ist keineswegs ein Ersatz für Subpixel-Rendering und schon gar keine „Korrektur“.

Aber nehmen wir an, wir wollten es trotzdem tun. CSS gibt uns ein gewisses Maß an Kontrolle über die Schärfe und Lesbarkeit, indem wir font-smooth verwenden, um das aufzufüllen, was Betriebssysteme möglicherweise übrig lassen.

Die font-smooth-Werte umfassen

  • auto: Ermöglicht dem Browser, die beste Option zum Füllen von Pixeln bei Schriftarten zu entscheiden.
  • never: Deaktiviert die automatische Glättung von Schriftarten durch das System. Dies zeigt die Schriftart in ihrem natürlichen Zustand, mit gezackten Kanten und allem.
  • always: Weist den Browser an, Schriftarten immer Pixel hinzuzufügen, wo er die Möglichkeit dazu sieht.

Hinweis: Die Eigenschaft font-smooth gilt zum Zeitpunkt des Schreibens als inoffizielle Eigenschaft und wird nicht für den Einsatz in Produktionsumgebungen empfohlen. Es gibt Vendor-Präfixe, um den Effekt in WebKit und Mozilla zu erzielen, aber es gibt keine Standardimplementierung.

Angesichts dieser Anmerkung sind die folgenden Vendor-Präfixe derzeit mit ihren eigenen Werten verfügbar

-webkit-font-smoothing

  • none: Deaktiviert die Schriftglättung in WebKit-Browsern.
  • antialiased: Glättet die Schrift auf der gleichen Ebene wie die vom System bereitgestellten Pixel.
  • subpixel-antialiased: Glättet die Schrift auf einer mikroskopischeren Ebene, um den schärfsten Text zu erzielen, insbesondere auf hochauflösenden Bildschirmen.

-moz-osx-font-smoothing

  • auto: Ermöglicht dem Browser, die Glättung der Schriftart zu optimieren.
  • inherit: Nimmt den Eigenschaftswert des übergeordneten Elements an.
  • unset: Das Gleiche wie die Angabe von none im WebKit-Präfix.
  • grayscale: Ähnlich dem Wert antialiased im WebKit-Präfix.

Diese Browser-Supportdaten stammen von Caniuse, das mehr Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.

Desktop

ChromeFirefoxIEEdgeSafari
130*132*Nein127*TP*

Mobil / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
NeinNeinNeinNein

Oh, Moment mal, du benutzt SVG?!

SVG hat seine eigene Unterstützung für die Techniken, die wir in diesem Beitrag behandelt haben. Wir haben Spationierung (wahrscheinlich nicht viel zu tun) und die üblichen Verdächtigen Zeichenabstand und Wortabstand. Interessanterweise haben wir auch ein Attribut textLength, das verwendet werden kann, um explizit festzulegen, wie breit der Text gerendert werden soll, und es wird den Text dehnen/stauchen, um ihn anzupassen. Das Attribut lengthAdjust steuert, ob dies nur auf die Zeichen oder auch auf die Glyphen (wie Satzzeichen) geschieht.

Siehe den Stift SVG Text Spacing von CSS-Tricks (@css-tricks) auf CodePen.

Fazit

Typografie im Web ist schwer! Ja, wir haben viel Kontrolle darüber, wie Schriftarten auf dem Bildschirm angezeigt, gerendert und positioniert werden. Aber mit großer Macht kommt große Verantwortung. Zumindest haben Sie jetzt ein paar Werkzeuge zur Verfügung, um Webdesignern zu antworten, die auf die Präzision des typografischen Designs im Browser festgelegt sind.