
最近看其他排版更成熟的长文博客时,我总觉得那边的中文比本站更厚重、更工整。最初我以为只是看久了自己的博客产生了审美疲劳,真正检查以后才发现,这种差异并不完全是错觉。
本站目前只明确加载了 Roboto,而 Roboto 没有中文字形。换句话说,本站的英文与数字使用 Roboto,中文则交给每台设备自己的系统字体。Windows、macOS 与 Android 读者看到的中文,可能并不是同一种字体。
这次先不急着宣布“最终答案”。我把几套候选字体放进同一个检视台,让标题、正文、标点、中英文混排和字重都说同样的话,再凭实际阅读感受做决定。
字的重量,也是阅读的呼吸
黄昏从窗外慢慢落进房间。屏幕上的文字并没有发出声音,却在一行一行之间维持着自己的节奏。好的正文字体不该不断提醒读者“你正在看一款字体”;它更像一条平整的路,让目光自然地向前走。
中文排版最容易在细节里露出差异:引号“是否贴得太近”,句号。是否稳稳落在右下角;数字 2026、英文 Web Font 与汉字混排时,基线和视觉重量是否仍然一致?当页面从 16 px 缩到手机上的 14 px,笔画会不会发灰,字腔会不会糊成一团?
字重与标点
常规正文 400 应该清楚、安静而耐读;中等字重 500 可以承担小标题和强调;粗体 700 则要醒目,却不能忽然像从另一套字体里借来的字。
「山川异域,风月同天。」——引号、逗号、句号、破折号与中文共同决定了一段话的气质。
这五个按钮分别代表什么
本站当前
这是比较的基线:Roboto 负责拉丁字母和数字,中文依赖系统 fallback。它几乎没有额外中文字体流量,但不同设备的字形无法保持一致,也是目前“中文偏轻、混排略散”的来源之一。
Noto Sans SC
它与思源黑体属于同源字体体系,字形中性、覆盖完整,并通过一套可变字体承担常规、中等和粗体角色。本站使用已经按 unicode-range 拆分的 WOFF2 包,浏览器只会请求当前样本命中的字符分包,而不是下载完整中文字体。
霞鹜新晰黑
霞鹜新晰黑是一套更接近手机系统字体气质的开源现代黑体:字面较大、结构平直,整体比思源系更饱满。这里使用 OFL 1.1 授权的 unicode-range WOFF2 分包;它只有常规字重,标题和粗体会由浏览器合成,且生僻字覆盖不如 Noto 完整。
得意黑
得意黑是一款强调“大弧线、窄、斜”的中文展示黑体。它的个性远强于前面几套正文候选,放在这里主要用于检验:强烈的第一印象能否撑过一整段连续阅读。检视台使用官方 v2.0.1 字体经 cn-font-split 生成的 unicode-range WOFF2 分包;OFL 1.1 允许 Web 嵌入、修改与分发。它只有一个斜体常规字重,不作为通用正文的保守选项。
霞鹜文楷 Screen
霞鹜文楷屏幕阅读版更有人文气质,横竖笔画和书写感与本站目前的现代无衬线界面形成明显对照。它同样是预先分包的 WOFF2;不过它只有常规字重,浏览器显示粗体时可能采用合成加粗,这也是长文选择时必须观察的边界。
怎么判断,而不是只看第一眼
我会先用下面几项检查候选字体:
- 连续读三到五分钟后,眼睛是否仍然轻松;
- 小字号下横画、撇捺和复杂字是否清楚;
- 引号、括号、冒号、破折号与中英文之间是否自然;
- 正文 400、强调 500、标题 700 能否形成稳定层级;
- 字体加载前后,行宽和段落高度是否发生明显跳变;
- 一篇真实文章最终请求了多少字体分包,总传输量是否值得。
这篇文章之后也可以一直保留为字体试衣间。以后出现新的候选字体,只要它的许可证允许 Web 嵌入、子集化与项目分发,就可以继续加到同一组样本里,不必每次依靠两张截图或短暂的新鲜感做决定。
[!NOTE] 检视台默认不下载任何候选中文字体。选择 Noto Sans SC、霞鹜新晰黑、得意黑或霞鹜文楷时,浏览器才会加载对应 CSS,并只请求当前样本文字命中的 WOFF2 分包。
暂时不改全站默认值
这一阶段的目标是把选择变得可观察。等在桌面端、手机端、浅色和深色主题里都读过同一组文字,再把胜出的字体应用到文章标题与正文;导航、卡片和按钮等 UI 可以继续保留更紧凑的无衬线角色,代码仍然使用 JetBrains Mono。
到那时,我们选择的就不只是“第一眼更好看的字体”,而是一套真正适合这个博客长期阅读的中文排版方案。





