Przejdź do treści

Typografia

Jeden krój, jedna skala ról semantycznych i detale optyczne, dzięki którym tekst wygląda na starannie złożony, a nie po prostu wyrenderowany.

Interfejsy to przede wszystkim tekst. prfct traktuje typografię jako podstawowy materiał systemu: jedna, wyjątkowo czytelna rodzina krojów, niewielki zestaw nazwanych ról i dyskretne detale — rozmiar optyczny, dynamiczne odstępy międzyliterowe, cyfry tabelaryczne — które odróżniają zaprojektowany interfejs od domyślnego.

Informacje o wydaniu

Szybsze kompilacje, spokojniejsze pulpity

v1.4Opublikowano 18 września · 4 min czytania

Kompilacje przyrostowe wykorzystują teraz skompilowane moduły między gałęziami, co skraca medianę czasu wdrożenia o 38%. Pulpit przebudowaliśmy na prfct — z gęstszymi tabelami i cyframi tabelarycznymi, które układają się w równe kolumny.

Co się zmieniło

Całą pracę wykonują role nagłówka, treści i podpisu — bez jednorazowych rozmiarów i przypadkowych grubości.

Kroje pisma

Inter

prfct jest złożony krojem Inter 4.1 — zmienną rodziną zaprojektowaną z myślą o ekranach. Ma dwie osie: grubość i rozmiar optyczny, dzięki któremu kształty liter subtelnie zmieniają się wraz z rozmiarem. W rozmiarach tekstowych litery mają otwarte światła i swobodne odstępy; od 32 px pałeczkę przejmuje odmiana Display, z ciaśniejszymi odstępami i drobniejszymi detalami. Nie zmieniasz kroju dla nagłówków — to krój się dopasowuje.

Aa

Inter 4.1Inter 4.1, zmienny, hostowany samodzielnie ze wszystkimi funkcjami OpenType. Rozmiar optyczny przełącza się na krój Display od 32px.

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 ąćęłńóśźż ÄÖÜß €$£ → ← ✓ ⌘ ⌥ ⇧

Ag300
Ag400
Ag500
Ag600
Ag700
Ag800

prfct hostuje krój Inter samodzielnie, zamiast ładować go z CDN z fontami. Wersje z takich serwisów często wycinają funkcje OpenType, żeby oszczędzić bajty — w tym cyfry tabelaryczne, na których opierają się interfejsy pełne danych. Build prfct zachowuje wszystkie funkcje i obie osie, ogranicza zestaw znaków do pisma łacińskiego (z pełną obsługą polskiego, czeskiego, tureckiego i innych języków z zakresu Latin Extended-A), wstępnie ładuje tylko odmianę prostą i dostarcza font zastępczy o dopasowanych metrykach, żeby tekst nie przeskakiwał, kiedy font się doładuje.

Geist Mono

Kod, klawisze i wartości techniczne zapisujemy krojem Geist Mono: zwartym, o znakach równej szerokości i zaprojektowanym do pracy w parze z neogroteskowymi krojami bezszeryfowymi.

Aa

Geist MonoGeist Mono do kodu, klawiszy i danych tabelarycznych. Załaduj go przez next/font jako --font-geist-mono; bez niego użyty zostanie monospace platformy.

ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 ąćęłńóśźż ÄÖÜß €$£ → ← ✓ ⌘ ⌥ ⇧

Ag300
Ag400
Ag500
Ag600
Ag700
Ag800

Skala typograficzna

prfct nazywa style tekstu według roli, a nie rozmiaru. Rola łączy rozmiar, interlinię, odstępy międzyliterowe i grubość w jedną decyzję, więc style tekstu nie mogą rozjechać się po jednej właściwości naraz.

72px / 72px · 620
-0.032em

Interfejsy, które wydają się oczywiste

Nagłówki hero na powierzchniach marketingowych.

60px / 62px · 620
-0.03em

Interfejsy, które wydają się oczywiste

Sekcje hero stron.

48px / 52px · 620
-0.028em

Interfejsy, które wydają się oczywiste

Otwarcia sekcji.

40px / 44px · 620
-0.025em

Interfejsy, które wydają się oczywiste

Tytuły funkcji.

32px / 38px · 620
-0.022em

Interfejsy, które wydają się oczywiste

Tytuły stron dokumentacji.

28px / 36px · 600
-0.021em

Raport przychodów kwartalnych

Tytuły stron najwyższego poziomu w aplikacji.

24px / 32px · 600
-0.019em

Raport przychodów kwartalnych

Tytuły sekcji w interfejsie produktu.

20px / 28px · 600
-0.016em

Raport przychodów kwartalnych

Tytuły kart i okien dialogowych.

16px / 24px · 600
-0.011em

Raport przychodów kwartalnych

Tytuły grup i paneli.

14px / 20px · 600
-0.006em

Raport przychodów kwartalnych

Nagłówki gęstych list i tabel.

18px / 28px · 400
-0.014em

prfct zamienia decyzje w ustawienia domyślne, dzięki czemu zespoły dostarczają interfejsy spójne, dostępne i spokojne.

Akapity wprowadzające, wstępy.

16px / 26px · 400
-0.011em

prfct zamienia decyzje w ustawienia domyślne, dzięki czemu zespoły dostarczają interfejsy spójne, dostępne i spokojne.

Dłuższe teksty do czytania.

14px / 22px · 400
-0.006em

prfct zamienia decyzje w ustawienia domyślne, dzięki czemu zespoły dostarczają interfejsy spójne, dostępne i spokojne.

Domyślny tekst interfejsu produktu.

13px / 20px · 400
-0.003em

prfct zamienia decyzje w ustawienia domyślne, dzięki czemu zespoły dostarczają interfejsy spójne, dostępne i spokojne.

Tekst drugorzędny w gęstym interfejsie.

16px / 24px · 500
-0.011em

Zapisz zmiany

Duże kontrolki.

14px / 20px · 500
-0.006em

Zapisz zmiany

Przyciski, pola, pozycje menu.

13px / 18px · 500
-0.003em

Zapisz zmiany

Kompaktowe kontrolki, odznaki.

12px / 16px · 500
0em

Zapisz zmiany

Mikroetykiety, liczniki.

12px / 16px · 400
+0.002em

Zaktualizowano 2 minuty temu

Podpisy, znaczniki czasu, tekst pomocniczy.

11px / 16px · 600
+0.08em

Fundamenty

Nadtytuły nad nagłówkami. Wersaliki.

13px / 22px · 400
0em

const theme = resolveTheme({ brand })

Kod w tekście i w blokach (mono).

<h1 className="text-display-sm">Settings</h1>
<h2 className="text-heading-md">Notifications</h2>
<p className="text-body-sm text-muted-foreground">Choose what we email you about.</p>

Rozmiarowe klasy Tailwinda (text-sm, text-lg…) nadal są dostępne do precyzyjnej pracy nad interfejsem i też mają odstępy międzyliterowe prfct.

Rodzina rólZastosowanie
DisplaySekcje hero w marketingu, tytuły stron w dokumentacji i na stronach docelowych. Nigdy w interfejsie samego produktu.
HeadingTytuły w produkcie: strony, sekcje, karty, okna dialogowe.
BodyTekst do czytania. body-md do dłuższych tekstów, body-sm jako domyślny w interfejsie.
LabelTekst na kontrolkach: przyciski, pola, pozycje menu, zakładki.
Caption / overlineMetadane, znaczniki czasu, tekst pomocniczy, nadtytuły nad nagłówkami.

Detale, które mają znaczenie

Dynamiczne odstępy międzyliterowe

Odstępy między literami podążają za zależnymi od rozmiaru metrykami kroju Inter: przy 12 px są lekko rozluźnione, bo litery potrzebują powietrza, a im większy rozmiar, tym są ciaśniejsze, bo domyślne odstępy zaczynają wyglądać luźno. Każda rola i każdy rozmiar Tailwinda mają już właściwą wartość — nie dodawaj tracking-* do zwykłego tekstu.

Własny głos nagłówków

Role Display włączają jednopiętrowe a (cv11) i zaokrąglone cudzysłowy (ss03) kroju Inter. Duże nagłówki zyskują dzięki temu łagodniejszy, bardziej charakterystyczny głos, a tekst podstawowy i interfejs zachowują domyślne dwupiętrowe a, które w małych rozmiarach jest czytelniejsze.

Cyfry w równych kolumnach

Liczby w tabelach, statystykach i licznikach czasu muszą układać się w równe kolumny. Tabele prfct domyślnie włączają cyfry tabelaryczne; w każdym innym miejscu dodaj klasę numeric.

Cyfry proporcjonalne
Frankfurt1 204 11881,4 ms
Warszawa987 45074,9 ms
Wirginia11 009 871112,0 ms
Cyfry tabelaryczne (numeric)
Frankfurt1 204 11881,4 ms
Warszawa987 45074,9 ms
Wirginia11 009 871112,0 ms
<span className="numeric">1,204,118</span>

Zrównoważone i estetyczne łamanie wierszy

Nagłówki używają text-wrap: balance, więc ich wiersze mają zbliżoną długość; akapity — text-wrap: pretty, żeby ostatnie słowo nie zostawało samotnie w ostatnim wierszu. Oba ustawienia działają globalnie.

Wytyczne

  • Używaj ról, nie rozmiarów. Jeśli projekt wymaga rozmiaru, którego nie daje żadna rola, zwykle potrzebuje po prostu innej roli.
  • Jeden styl na poziom nagłówka. Nie przeskakuj poziomów — ani w znacznikach HTML, ani w skali wizualnej.
  • Wyróżniaj grubością, nie rozmiarem. Słowo w font-medium wewnątrz body-sm w zupełności wystarczy.
  • Trzymaj długość wiersza w granicach 45–75 znaków. Do długich tekstów używaj max-w-prose albo max-w-2xl.
  • Wielka litera tylko na początku — w nagłówkach, na przyciskach, w pozycjach menu. Pisanie Każdego Wyrazu Wielką Literą to w polszczyźnie anglicyzm; w interfejsie wygląda jak krzyk i zaciera różnicę między nazwami własnymi a zwykłymi słowami.

E-mail do rozliczeń

Faktury wysyłamy na adres finance@acme.co.

Dobrze.Hierarchia z ról: jeden nagłówek, jeden styl tekstu podstawowego, jeden podpis.

E-mail Do Rozliczeń

Faktury Wysyłamy Na Adres finance@acme.co.

Źle.Mieszane rozmiary, grubości i wielkie litery walczą o uwagę.

Dostępność

  • Wszystkie rozmiary są podane w rem, więc tekst skaluje się razem z rozmiarem czcionki ustawionym w przeglądarce. Układy testujemy przy powiększeniu 200%.
  • Role Body mają interlinię co najmniej 1,5× dla tekstu do czytania, a w małych rozmiarach nigdy nie schodzą poniżej grubości 400.
  • Wyciszony tekst nadal spełnia 4,5:1; zobacz Kolor.
  • Wersaliki są zarezerwowane dla krótkich nadtytułów, które mają zwiększone odstępy między literami i interpunkcję dopasowaną do wersalików, dzięki czemu pozostają czytelne.