排版
選擇完整文字樣式或單一字型 token,並一次設定網站字型。
本頁目錄
#概覽
使用 text-<token>,以單一 class 設定完整文字樣式:字級、行高與字距。字重、字型與顏色則分別以其他 class 補上。
易讀的文字層級
<p class="text-xs font-regular fg-text-muted">Field notes / 024</p><h2 class="text-2xl font-regular fg-text-strong">Make room for the details.</h2><p class="text-sm">A consistent type scale helps readers move from the main idea to the supporting detail.</p>產生的 CSS
@layer theme { :root, :host { --font-weight-regular: 400; --font-size-2xl: 1.5rem; --text-2xl: var(--font-size-2xl); --text-2xl--line-height: 1.35; --text-2xl--letter-spacing: -.015em }}@layer utilities { .text-2xl { font-size: var(--text-2xl); line-height: var(--text-2xl--line-height, normal); letter-spacing: var(--text-2xl--letter-spacing, normal) } .font-regular { font-weight: var(--font-weight-regular) }}此層級運用字級、間距與文字角色,同時維持一般字重。只在內容需要時加入強調;標題不必預設使用更粗的字重。文字樣式列出所有設定與新增方式。
#文字樣式與字級
font-<size> 只改變字級,保留繼承的行高與字距。text-<token> 則同時設定三者。比較兩種寫法在相同字級下的差異:
相同字級,也能呈現不同節奏
以根字級 16px 呈現預設集的實際排版。每一列標示一個行框;font-size 本身無法描述行與行之間的間距。
文字說明
- 只有字級. font-3xl 將字級設為 2rem。在此父元素中,會繼承 line-height 1.6 與一般字距。
- 完整文字樣式. text-3xl 設定相同的 2rem 字級,再加上 line-height 1.25 與 letter-spacing -0.02em。
- 比較行框. 根字級為 16px 時,範例文字為 32px,行高分別為 51.2px 與 40px。相同兩行文字佔用不同高度。
相同字級,兩種文字設定
<div class="leading-md tracking-normal"> <p class="font-3xl">Designing for a clearer reading experience.</p> <p class="text-3xl">Designing for a clearer reading experience.</p></div>產生的 CSS
@layer theme { :root, :host { --font-size-3xl: 2rem; --text-3xl: var(--font-size-3xl); --text-3xl--line-height: 1.25; --text-3xl--letter-spacing: -.02em }}@layer utilities { .text-3xl { font-size: var(--text-3xl); line-height: var(--text-3xl--line-height, normal); letter-spacing: var(--text-3xl--letter-spacing, normal) } .font-3xl { font-size: var(--font-size-3xl) }}內文、標題與大型展示文字使用 text-<token>。只有設計刻意偏離既有文字樣式時,才使用 font-<size>、leading-<token> 或 tracking-<token>。
font- 前綴也接受字型與字重鍵名:font-sans 選擇字型,font-bold 則要求指定字重。這些命名空間的自訂名稱應保持區別;字型列出各自的值與解析規則。
#網站字型
在 @theme 中設定一次應用程式字型。預設集的 base 層會將它套用到文件,因此標記不需字型 class。
@import "@master/css";@theme { --font-sans: "Geist", "Noto Sans TC"; --font-mono: "IBM Plex Mono"; --font-feature-sans: "ss02", "ss03", "ss04", "ss06", "ss07", "ss08"; --font-feature-mono: "cv01", "cv02", "cv29";}base 層透過 --font-family-sans 解析 --font-sans,並套用到 body 與 Shadow Host;透過 --font-family-mono 解析 --font-mono,並套用到 code、kbd、samp 與 pre。--font-feature-* token 可省略,預設退回 normal;表單控制項繼承周圍字型。使用 @font-face 或字型供應商的樣式表載入字型檔。若只針對單一元素,改用 font-mono 這類 class。
指定字型家族仍需有可用字型
範例呈現兩種可用性情況,不是實測下載時間軸。指定字型以已載入的 Geist 檔案示意,備援則使用瀏覽器的 serif 字型。
文字說明
- font-family 宣告指定有順序的偏好,本身不會下載字型。
- 若有符合且可用的字型,就能渲染文字;否則瀏覽器嘗試後續家族。字形涵蓋範圍也有影響,因此同一行不同字元可能使用不同字型。
- 透過 @font-face 或供應商樣式表載入網頁字型,並檢查實際渲染字型,不要只看計算後的 font-family 字串。
#以實際文字驗證
在實際內容寬度下,檢查短標題、長標題與完整段落,再以窄螢幕與放大文字重複檢查。除了計算後的字級,也要留意換行,以及重音符號或下伸部被裁切的情況。
文字欄寬改變,換行也隨之改變
只改變內容寬度。兩段都使用 14px Geist、24px 行高,並隨完整文字所需高度延展。
文字說明
- 較窄的欄寬會提早換行,讓同一段落變高。較寬的欄寬則讓每行容納更多單字。
- 兩個範例都沒有固定高度,也未縮短文字。評估排版時,除了字級,也要檢查段落實際寬度。
固定文字欄寬,讓高度成長
為了比較而控制寬度,兩個文字框都未固定高度;垂直範圍由內容決定。
文字說明
兩個等寬文字範例分別包含短文與長文。較長標題佔用更多行,將後續內容往下推。
宣告字型家族只是提出要求,並不能證明字型檔已載入或包含所有字形。請檢查實際呈現的字型,尤其是拉丁文字與中日韓文字混排時。讓容器能隨文字成長;不要只為維持某個英文範例的行數,就固定卡片高度。







