给中文排版的一点实践笔记
中文是方块字,字重均匀、视觉密度大。西文排版的经验直接搬过来,往往会显得「闷」。这篇笔记记录我在自己的博客上实际用过的参数。
字体:思源宋体为什么合适
正文用 思源宋体(Noto Serif SC)不是为了复古,而是因为:
- 宋体的横细竖粗在屏幕上「笔画感」清晰,长文阅读不糊
- 开源、字重齐全(400–700),商用无授权风险
- Google Fonts 有 unicode-range 切片,不会一次下载整套字库
系统回退链也值得认真写:
font-family: "Noto Serif SC", "Source Han Serif SC",
"Songti SC", "STSong", "SimSun", serif;
macOS 用 Songti SC,Windows 用 SimSun,Web 字体加载前不会闪到黑体。
行高与字距:中文要更松
西文正文行高 1.5 通常够用,中文建议 1.8 起步。方块字没有升降部,行距小了容易串行。
我博客实际用的值:
| 场景 | 行高 | 字距 |
|---|---|---|
| 页面正文 | 1.85 | 0.02em |
| 文章正文 | 1.95 | 0.02em |
| 标题 | 1.4–1.5 | 0.02–0.03em |
字距 0.02em 是个不起眼但关键的细节——中文字符紧挨着时,这点间隙能让「呼吸感」完全不同。
留白优于分割线
这是我在这次改版中最有体会的一条。
早期版本用 border-t / 卡片描边划分区块,页面看起来「结构清楚」,但也像表单。后来改成:
- 区块之间只用纵向间距(
space-y-14、py-16) - 小节标题用大字距的小字(
tracking-[0.25em])自带分组感 - 列表条目靠
py-8的呼吸节奏区分,不画线
分割线是设计的偷懒——它用一条线代替了「层级」。真正好的层级来自:字号差、灰度差、留白差。
颜色:不要纯黑纯白
- 纸底不用
#fff,用象牙白#f7f3ec(或宣纸感的暖白) - 正文不用
#000,用暖墨#2a2420 - 弱化文字不用 50% 灰硬压,用带色相的灰(如
#8a7f72)
这样即使是长文,眼睛也不容易累。
实用 CSS 片段
body {
letter-spacing: 0.02em;
line-height: 1.85;
font-feature-settings: "kern" 1;
}
.prose {
line-height: 1.95;
}
.prose p {
margin-top: 1.6em;
margin-bottom: 1.6em; /* 段间距大于行距,层次才出得来 */
}
小结
中文排版没有魔法,只有参数:
- 行高放到 1.8+
- 字距加 0.02em
- 段间距明显大于行距
- 用留白而不是线来分组
- 避开纯黑纯白
先把这些调对,页面的「质感」会自己浮现出来。