← 所有文章

字級階梯:我如何選擇 13 個級距,以及比例為何重要

Robert Bringhurst 的《The Elements of Typographic Style》確立了一個原則:和諧的字型關係遵循音樂中相同的數學比例——完全四度(1.333)、完全五度(1.5)以及黃金比例(1.618)。我從完全四度開始,最終得出一個標準比例無法產生的自訂級數——因為我的內容結構需要在內文與展示標題之間有特定的級距。1

TL;DR

字級階梯透過基準尺寸與數學比例生成一套字型大小層級。在建構 blakecrosley.com 的字型排版系統之後——13 個級距,從 0.75rem(12px)到 5rem(80px),完全使用系統字型——我學到的是,比例本身不如內文與 H1 之間的級距重要。我的階梯在相鄰級距之間大約使用 1.18 的遞增比例,但在內容結構需要視覺分隔的地方(從 3.875rem 到 5rem)刻意加大跳幅。以下的互動比較展示了嚴格比例與內容驅動調整之間的差異。


我的字級階梯:13 個級距

以下是我網站 critical.css 中的實際階梯:

:root {
  --font-size-xs:      0.75rem;   /* 12px — metadata, timestamps */
  --font-size-sm:      0.875rem;  /* 14px — captions, fine print */
  --font-size-base:    1rem;      /* 16px — body text, default */
  --font-size-lg:      1.125rem;  /* 18px — lead paragraphs */
  --font-size-xl:      1.3125rem; /* 21px — large body, section intro */
  --font-size-2xl:     1.5625rem; /* 25px — H4, card titles */
  --font-size-3xl:     1.875rem;  /* 30px — H3 */
  --font-size-4xl:     2.25rem;   /* 36px — H2 */
  --font-size-5xl:     2.7rem;    /* 43.2px — H1 */
  --font-size-6xl:     3.25rem;   /* 52px — large H1 */
  --font-size-7xl:     3.875rem;  /* 62px — page title */
  --font-size-display: 5rem;      /* 80px — hero headline */
}

相鄰級距之間的遞增並非嚴格的數學比例。從 xsxl 的級距大約遵循 1.17-1.18 倍。從 5xldisplay 的級距跳幅更大(1.20-1.29 倍),因為主視覺標題需要與頁面層級標題產生視覺分隔。2

為什麼不使用嚴格比例?

以 16px 為基準的嚴格大三度(1.25)會產生以下級距:16、20、25、31.25、39.06、48.83、61.04。從內文(16px)到 H3(31.25px)的跳幅接近 2 倍——對於 H3 頻繁出現的內容密集頁面來說太過劇烈。我的階梯壓縮了中間範圍(18、21、25、30、36),讓標題與內文保持適當比例,同時擴展頂端範圍(43、52、62、80)用於展示型排版。

是內容結構驅動了階梯,而非數學。我將每個級距對照真實部落格文章內容進行測試,並在模糊測試失敗的地方調整尺寸。3


為什麼選擇系統字型

我的字型堆疊:

:root {
  --font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text",
                 "SF Pro Display", "Helvetica Neue", Arial, sans-serif;
}

效能論點

系統字型的載入時間為零毫秒。沒有網路請求、沒有 FOIT(不可見文字閃爍)、沒有 FOUT(無樣式文字閃爍)。這個選擇對我達成 Lighthouse 效能滿分 100/100 有直接貢獻。

自訂網頁字型通常會因字型檔案下載和瀏覽器渲染決策而增加 100-300 毫秒的首次內容繪製時間。Google Fonts 從 CDN 載入(至少需要一次 DNS 查詢加一次 HTTP 請求)。自行託管字型雖然免去 DNS 查詢,但仍需要下載。系統字型則消除了字型載入延遲的每一個環節。4

設計論點

系統字型與平台一致。在 macOS 上,我的網站以 SF Pro 渲染——這與 macOS 系統介面、Apple Mail 和 Safari 瀏覽器框架使用的是同一套字型。作業系統與網站之間的視覺連續性帶來原生感,而非品牌感。

Linear、Vercel 和 Raycast 採用相同的方式。這個模式源自我的 16 項產品設計研究:優先考慮內容可讀性而非品牌表達的產品,傾向於使用系統字型。

何時值得使用自訂字型

自訂字型適用於行銷頁面、品牌識別,以及字型本身即為設計的展示型排版。我的網站以內容為優先(部落格文章、專案描述),字型排版應該是透明的——讀者應該在處理內容,而非注意到字型。


字重系統

四種字重處理所有層級需求:

:root {
  --font-weight-normal:   400;  /* Body text */
  --font-weight-medium:   500;  /* Navigation, labels */
  --font-weight-semibold: 600;  /* Subheadings, emphasis */
  --font-weight-bold:     700;  /* Headlines, primary actions */
}

結合 13 個尺寸級距和四個透明度層級,我有 208 種潛在組合(13 種尺寸 × 4 種字重 × 4 種透明度)。實際上,我持續使用大約 15 種組合。這個系統提供了靈活性,而無需在每個文字實例上做決定——大多數文字使用 base 尺寸、normal 字重、primary 透明度。5


響應式字型排版

單一比例的問題

為桌面設計的字級階梯會在行動裝置上產生過大的標題。我的 display 尺寸 80px 在 1440px 視窗上表現完美,但在 375px 的手機螢幕上則過於龐大。我並未使用視窗單位縮放整個系統,而是針對特定中斷點進行覆寫:

@media (max-width: 1024px) {
  .hero__title { font-size: var(--font-size-6xl); }  /* 52px */
}

@media (max-width: 768px) {
  .hero__title { font-size: var(--font-size-3xl); }  /* 30px */
}

內文在所有視窗上保持 16px——內文不需要縮放,因為 16px 在每一個現代螢幕上都保持可讀性。只有展示型和標題尺寸在較小視窗上縮減。這種方式比流動式排版(clamp())更簡單,並在已知中斷點上產生可預測的結果。6

展示尺寸的字距

大字型需要更緊密的字距追蹤。在 80px 時,預設字距會在字元之間產生明顯的間隙:

.hero__title {
  font-size: var(--font-size-display);
  font-weight: var(--font-weight-bold);
  letter-spacing: -0.03em;
  line-height: 1.05;
}

-0.03em 的字距和 1.05 的行高產生緊湊、有力的標題。16px 的內文使用預設字距搭配寬鬆的 1.7 行高以確保可讀性。緊密標題與通透內文之間的對比創造出視覺節奏,無需額外裝飾。7


測試字型排版

模糊測試

瞇起眼睛或退後幾步看螢幕。標題層級在每個層次都應保持視覺上的明確區分。如果 H3 和 H4 混在一起,代表所選字型的比例太小。

我將模糊測試應用於我的階梯,發現 --font-size-xl(21px)和 --font-size-2xl(25px)最初會模糊在一起。加入字重差異(xl 使用 normal 400,2xl 使用 semibold 600)在不改變尺寸的情況下解決了區分問題。字重能獨立於尺寸提供層級感。8

內容測試

使用真實內容填入每個標題層級。佔位文字會掩蓋層級問題,因為「Lorem Ipsum」缺乏真實語言的視覺重量變化。我將每次階梯調整對照我最長的部落格文章(漢明錯誤校正,2000 字以上,包含 H2、H3、H4、程式碼區塊、表格和腳註)進行測試。如果階梯能應對最複雜的內容,就能應對一切。


重點摘要

給設計師: - 從 16px 的基準尺寸開始,以 1.15 至 1.25 之間的比例對照真實內容進行測試;嚴格的數學比例在極端值處通常需要內容驅動的調整 - 在定案前使用模糊測試和內容測試;每個標題層級的視覺區分比數學純粹性更重要

給開發者: - 將字級階梯定義為 :root 層級的 CSS 自訂屬性;在整個程式碼庫中引用 var(--font-size-*),防止任意字型大小的堆積 - 在使用自訂網頁字型前考慮系統字型;100-300 毫秒的字型載入節省在每次頁面載入時都會累積,且系統字型提供平台原生的可讀性 - 如果在已知寬度下的可預測結果比平滑插值更重要,請使用中斷點覆寫展示尺寸,而非流動式排版


參考文獻


  1. Bringhurst, Robert,《The Elements of Typographic Style》,Hartley & Marks,2004年。比例式字型排版的基礎文獻。 

  2. 作者的字級階梯,取自 critical.css。13 個級距,從 0.75rem 到 5rem。自訂級數,壓縮中間範圍並擴展展示範圍。 

  3. 作者的階梯測試。每個級距對照真實內容測試(最長文章:2000 字以上)。模糊測試顯示區分度不足後壓縮了中間範圍。 

  4. 作者的效能測量。系統字型對 Lighthouse 效能滿分 100/100 有直接貢獻。效能稽核中記錄了零字型載入延遲。 

  5. 作者的字型排版符記系統。13 種尺寸、4 種字重、4 種透明度層級 = 208 種組合。正式環境中持續使用約 15 種。 

  6. Jehl, Scott,《Responsible Responsive Design》,A Book Apart,2014年。響應式字型排版策略。 

  7. 作者的標題字型排版。展示尺寸(80px)搭配 -0.03em 字距和 1.05 行高。內文使用預設字距搭配 1.7 行高。 

  8. 作者的模糊測試結果。xl(21px)和 2xl(25px)需要字重區分(400 對 600)才能通過視覺區分測試。