Dark mode und variable Schriftarten

Avatar of Robin Rendle
Robin Rendle am

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

Vor nicht allzu langer Zeit haben wir über Dark Mode in CSS geschrieben und ich habe darüber nachgedacht, wie weiße Schrift auf schwarzem Hintergrund praktisch immer schwerer zu lesen ist als schwarze Schrift auf weißem Hintergrund. Nachdem ich eine Weile darüber nachgedacht hatte, wurde mir klar, dass wir dieses Problem lösen können, indem wir die Schrift im Dark Mode dünner machen, indem wir variable Schriftarten verwenden!

Hier ist ein Beispiel für das Problem, bei dem ich die Schriftart Yanone Kaffeesatz von Google Fonts verwende. Beachten Sie, dass der Abschnitt mit weißer Schrift auf schwarzem Hintergrund schwerer aussieht als der Abschnitt mit schwarzer Schrift auf weißem Hintergrund.

Seltsamerweise verwenden diese beiden Textabschnitte tatsächlich denselben `font-weight`-Wert von `400`. Aber für mein Auge sieht die weiße Schrift auf schwarzem Hintergrund extra fett aus.

Starren Sie dieses Beispiel eine Weile an. So sieht weiße Schrift auf einem dunkleren Hintergrund aus; so nehmen unsere Augen Formen und Farben wahr. Und das mag in manchen Fällen kein großes Problem sein, aber das Lesen heller Schrift auf dunklem Hintergrund ist für Leser immer viel schwieriger. Und wenn wir uns nicht um das Design von Text in einem Dark-Mode-Kontext kümmern, kann es sich so anfühlen, als würde der Text beim Lesen vibrieren.

Wie lösen wir das?

Nun, hier kommen variable Schriftarten ins Spiel! Wir können eine leichtere Schriftstärke verwenden, um den Text leichter lesbar zu machen, wenn der Dark Mode aktiv ist.

body {
  font-weight: 400;
}

@media (prefers-color-scheme: dark) {
  body {
    font-weight: 350;
  }
}

So sieht das mit diesem neuen Beispiel aus.

Das ist besser! Die beiden Varianten sehen für mich jetzt viel ausgewogener aus.

Wieder ist es nur ein kleiner Unterschied, aber alle großartigen Designs bestehen aus solchen Mikroanpassungen. Und ich denke, wenn Sie bereits variable Schriftarten verwenden und all diese Gewichte laden, dann sollten Sie den Text definitiv so anpassen, dass er besser lesbar ist.

Dieser Effekt ist leichter zu erkennen, wenn wir die Unterschiede zwischen längeren Textabsätzen vergleichen. Hier ist es, diesmal in Literata.

Beachten Sie, dass der Text auf der rechten Seite fetter *wirkt*, aber das ist er einfach nicht. Es ist nur eine optische Täuschung – beide obigen Beispiele haben eine Schriftstärke von 500.

Um dieses Problem zu beheben, können wir dasselbe tun wie im obigen Beispiel.

body {
  font-weight: 500;
}

@media (prefers-color-scheme: dark) {
  body {
    font-weight: 400;
  }
}

Auch hier ist es eine geringfügige Änderung, aber sie ist wichtig, denn bei diesen Größen hilft jede typografische Verbesserung, die wir vornehmen, dem Leseerlebnis.

Oh, und hier ein schneller Tipp für Google Fonts!

Google Fonts ermöglicht es Ihnen, eine Schriftart auf Ihrer Website einzubinden, indem Sie ein `` im `` des Dokuments hinzufügen, wie hier:

<head>
  <link href="https://fonts.googleapis.com/css2?family=Rosario:wght@515&display=swap" rel="stylesheet"> 
</head>

Das ist die Verwendung der Schriftart Rosario und das Hinzufügen einer Schriftstärke von `515` – das ist der Teil im obigen Code, der `wght@515` sagt. Selbst wenn dies eine variable Schriftart ist, wird nur diese Schriftstärke heruntergeladen. Wenn wir jedoch versuchen, so etwas zu tun…

body {
  font-weight: 400;
}

…passiert nichts! Tatsächlich wird die Schrift überhaupt nicht geladen. Stattdessen müssen wir deklarieren, welchen Bereich von Schriftstärkenwerten wir wünschen, indem wir Folgendes tun:

<link href="https://fonts.googleapis.com/css2?family=Yanone+Kaffeesatz:[email protected]&display=swap" rel="stylesheet">

Der Teil `@300..500` im obigen Code teilt Google Fonts mit, eine Schriftdatei mit allen Gewichten zwischen `300` und `500` herunterzuladen. Alternativ werden durch das Hinzufügen eines `;` zwischen jedem Gewicht nur die Gewichte `300` und `500` heruntergeladen – Sie können also zum Beispiel kein Gewicht `301` wählen.

<link href="https://fonts.googleapis.com/css2?family=Yanone+Kaffeesatz:wght@300;500&display=swap" rel="stylesheet">

Ich habe ein paar Minuten gebraucht, um herauszufinden, was schiefgelaufen ist und warum die Schriftart überhaupt nicht geladen wurde. Hoffentlich kann das Google Fonts-Team dies in Zukunft mit den Einbettungscodes etwas klarer gestalten. Vielleicht sollte es irgendwo eine Option oder einen Schalter geben, um einen Bereich oder bestimmte Gewichte auszuwählen (oder vielleicht habe ich ihn einfach nicht gesehen).

Wie auch immer, ich denke, all das ist der Grund, warum variable Schriftarten so verdammt hilfreich sein können; sie ermöglichen es uns, Text auf eine Weise anzupassen, die wir noch nie zuvor konnten. Also, Hurra für variable Schriftarten!