跳到正文

笔记 · 2026-10-23 · 阅读 4 分钟

三种文字,三种行高

网站上有三种文字:拉丁、简体中文和高棉语。它们不共用一套度量。拉丁需要更紧的行距和更窄的行宽;中文需要更大的行高、字距归零;高棉语两者都要更多,而且字距必须为零。

拉丁

拉丁是源语言。正文 17–18px,行高约 1.65,行宽约 65 个字符。大标题略收紧字距;中文和高棉语的字距为零。同一套 CSS 无法同时设定三者。

中文

中文页面使用 Noto Sans SC 的子集,在构建时按站点实际用字重建。当前每个字重约 27 KB,字体 URL 带内容哈希,所以改文案会生成新文件,而不是命中旧缓存。

中文正文行高 1.8。标题不加负字距。子集是构建步骤,不是运行时兜底:缺字时浏览器会落到系统字体,这是一次静默失败。现在由 prebuild 在构建时运行子集脚本。

高棉语

高棉语是三者里最难的。字符串比英文长 25–35%,按钮不能定宽。根字号是 112.5%,正文行高 1.9,所有标题的 letter-spacing 必须为 0;否则组合符号会被拆开。

高棉语标题还没有使用衬线字体。团队会先直接比较三个标题,再决定 Noto Serif Khmer 能不能替换无衬线;如果撑不住,标题回退到 Noto Sans Khmer 600,正文不变。

v2 改了什么

v2 增加了衬线标题和 mono 标注。拉丁标题用 Noto Serif;中文在 Noto Serif SC 子集完成前,仍然回退到系统宋体。mono 用 IBM Plex Mono,负责图号、标签和日期。

规则没有变:每种文字有各自的角色,而不是所有文字共用一个字体。只要角色一致,字体可以按文字不同。

还缺什么

  • 中文标题的 Noto Serif SC 子集。
  • Noto Serif Khmer 的团队比较。
  • 一个在 390px 下渲染最长高棉语导航项的测试页。

在这些完成之前,这套排版是工作系统,不是完成品。