中文排版测试
写英文的时候,字体之间的差别很微妙;写中文的时候,差别立刻被放大。同样一个段落,在 Newsreader 下显得克制,在思源宋体下显得沉稳,在系统默认字体下又往往显得呆板。
这篇 post 用来检查这套排版(Fraunces 用于标题、Newsreader 用于正文、JetBrains Mono 用于元数据)在中英混排时的实际效果。中文部分会落在浏览器找到的第一个可用衬线字体上——macOS 通常是 PingFang SC,Windows 上常见的是 Microsoft YaHei。
标题层级
二级标题用来分章节,字号比正文略大,使用 Fraunces 显示字体。中文 fallback 到系统衬线。
三级标题
三级标题更小,用于分小节。
段落与中英混排
中文段落里夹一个英文单词,比如 typography 或者 monospace,再夹一段 inline code,看间距是否舒服。中文标点(,。:;!?)和英文符号(commas, periods)混在一起时,是否需要额外补一个空格?这是一个老问题,多数现代浏览器会自动处理一部分,但效果不总是稳定。
数字也值得测:今天是 2026 年 5 月 10 日,距离这个博客重建过去了大约 两天。汉字与阿拉伯数字之间的间距,在不同字体里差异挺大。
列表
无序列表:
- 字体组合:Fraunces + Newsreader + JetBrains Mono
- 配色:奶油色背景 + 深棕正文 + 红棕色 accent
- 装饰:轻微胶片颗粒 + 段落分隔线
有序列表:
- 第一步——挑字体
- 第二步——定配色
- 第三步——调间距和留白
引用块
排版的目的不是让字看起来漂亮,而是让人读得舒服。
真正讲究的设计师都明白,最好的排版是「读完之后没注意到排版」。
代码
行内 code 嵌在中文里:运行 npm run build 生成静态站点;用 <PostCard /> 渲染单条 post。
代码块:
// 一个简单的 TypeScript 函数
function greet(name: string): string {
return `你好,${name}!`
}
console.log(greet('世界'))
# Python 也可以混排
def 问候(姓名: str) -> str:
return f"你好,{姓名}!"
print(问候("世界"))
链接
外部链接:Google Fonts 上能找到 Newsreader 和 JetBrains Mono。看下划线在中文字符下的位置是否合适。
水平分隔线
下面是一条 <hr>,应该渲染成一条带 ✦ 标记的细线:
分隔线之后继续段落。如果一切正常,这条线应该带一个红棕色的 ✦,居中显示。
总结
如果上面的内容看起来都比较协调——
- 行距足够喘息但不松散
- 中英混排没有明显打架
- 引用块和代码块层次清晰
- 链接和行内代码在段落里不突兀
——那这套排版在中文场景下基本可以接受。哪里看着别扭,记下来回头调。