Pantrix UI

Tipografi

Pantrix'in yazı ölçeği, stili verilmeyen yazının neyle yazıldığı ve metin alanlarına yazılan yazının boyu.

1. Ölçek

PantrixTypography dokuz rol tutar. Boyutlar ve satır yükseklikleri sp iledir, sistemin yazı boyutuyla büyür.

RolBoyut / satırAğırlıkİşi
display36 / 42BoldSayfanın başlığı
headline28 / 34BoldBir bölümün başlığı
title22 / 28SemiBoldBir kartın, panelin, dialog'un başlığı
callout18 / 26MediumÖne çıkan metin
body16 / 24MediumParagraf; Android'de ve iOS'ta metin alanına yazılan
label14 / 20MediumKontrol etiketi; masaüstünde ve web'de metin alanına yazılan; temel yazı
footnote12 / 16MediumYardım metni, hata açıklaması
caption11 / 14MediumZaman damgası, sayaç
code14 / 20Medium, eş aralıklıKimlik, kod parçası

2. Rolüyle anmak: TypeRole

Bir bileşenin stili yazı tipi tutmaz, yalnız hangi rolde yazdığını söyler. Yazı tipi temanındır:

val style: TextStyle = PantrixTheme.typography[TypeRole.Body]

TypeRole her rol için bir değer taşır (Display … Code). Bir stilin TypeRole? alanı boş kalırsa preset'inki geçerlidir.

3. Temel yazı: LocalPantrixTextStyle

Stili verilmeyen yazının stili. PantrixText, PantrixLink ve PantrixAutoText style verilmediğinde bunu alır.

ProvidePantrixTextStyle(PantrixTheme.typography.body) {
    PantrixText("Bu bölümdeki paragraflar body ile yazılır.")
    ProvidePantrixTextStyle(TextStyle(fontWeight = FontWeight.SemiBold)) {
        PantrixText("Yalnız kalınlık değişir, boyut body'nin kalır.")
    }
}

Compose foundation'ın BasicText'i bu değeri okumaz

BasicText'e stil verilmezse metin TextStyle.Default ile yazılır: sistemin yazı tipi, 14sp. Material'in LocalTextStyle'ını da yalnız Material'in kendi bileşenleri okur. Uygulamanın kendi BasicText'i temel yazıyı kendisi almalıdır:

BasicText(text = words, style = LocalPantrixTextStyle.current)

Kütüphanenin kendi içinde stilsiz bir BasicText yoktur (2026-10-18'de tarandı): yazıların hepsi PantrixText'ten geçer.

4. Metin alanına yazılan yazının boyu

Metin alanının stili hangi rolde yazdığını textRole ile söyler: TextFieldStyle.textRole ve FilledTextFieldStyle.textRole.

PlatformRolBoyut
AndroidBody16sp
iOSBody16sp
MasaüstüLabel14sp
WebLabel14sp

Bu rolle yazılanlar:

Kutunun üstündeki etiket (label rolü) ve yardım metni (footnote) değişmez.

Material 3 ile karşılaştırma

ParçaMaterial 3Pantrix
Yazılan yazıbodyLarge (16/24, Regular)Android ve iOS: body (16/24, Medium); masaüstü ve web: label (14/20, Medium)
Yer tutucubodyLargeyazılan yazıyla aynı
İçerideki etiketdinlenirken bodyLarge, kalkınca bodySmall (12/16)yazılan yazının rolünden footnote'a (12/16)
Yardım metnibodySmallfootnote

Material 3'te bunlar OutlinedTextFieldTokens.InputFont = BodyLarge ile gelir; MaterialTheme de LocalTextStyle'a bodyLarge verir. Pantrix'in label'ı Material 3'te labelLarge'a denk gelir (14/20, Medium), ama M3 onu düğme ve sekme yazısında kullanır.

Bütün uygulama için değiştirmek

PantrixTheme(
    styles = pantrixStyles(
        TextFieldStyle.override(all = TextFieldStyle(textRole = TypeRole.Body)),
        FilledTextFieldStyle.override(all = FilledTextFieldStyle(textRole = TypeRole.Body))
    )
) { App() }

Tek bir alan için PantrixTextField(style = TextFieldStyle(textRole = TypeRole.Callout)) yeter.

5. Tuzaklar

6. Dosyalar

Dosyaİçinde
ui/foundation/.../token/typography/PantrixTypography.ktÖlçek, buildPantrixTypography, rememberPantrixTypography
ui/foundation/.../token/typography/TypeRole.ktTypeRole, PantrixTypography[role]
ui/foundation/.../token/typography/PantrixTextStyle.ktLocalPantrixTextStyle, ProvidePantrixTextStyle
ui/components/.../inputs/textfield/TextFieldStyle.kttextRole ve preset'leri
ui/components/.../inputs/filledtextfield/FilledTextFieldStyle.kttextRole ve preset'leri
app/shared/.../samples/TypographySamples.ktDemo: "Bir bölümün temel yazısı"