温素纸
技术约 641 字 · 2 分钟

中文网页排版,从行高开始

大多数博客主题是按英文调的,直接拿来排中文会挤成一堵墙。几个数字就能救回来。

你有没有觉得,很多中文博客读起来特别累?明明字号不小,却总觉得字挤在一起喘不过气。

原因通常不是字号,是行高行宽

英文的默认值不适合中文

英文主题的常见配置是:字号 21px,行高 1.5,容器宽度 680px。

对英文来说这很舒服——英文是小写字母为主,视觉重心低,行与行之间不需要太多空隙。

但汉字是方块字,字面率高,几乎填满整个行框。同样 1.5 的行高,中文看起来就比英文密得多。

几个实测舒服的数字

项目 英文舒适区 中文舒适区
字号 18–21px 16–17px
行高 1.4–1.6 1.8–1.9
每行字数 60–75 字符 34–38 字
段间距 等于行高 大于行高

换算成 CSS:

.prose {
  /* 36rem ≈ 612px,17px 字号下约 36 个汉字一行 */
  max-width: 36rem;
  font-size: 17px;
  line-height: 1.9;
}

.prose > p {
  margin: 1.35rem 0;
}

段落之间要大于行距

这是最容易被忽略的一条。行高 1.9 已经很松了,如果段间距也用 1.9,读者会分不清“换行”和“换段”。

段间距给到 1.35rem(约 23px),比行距(约 32px)的一半多一些,视觉上刚好能切出一个新块。

别用纯黑

#000 在纸白底上对比度太高,长时间阅读会刺眼。换成带一点色温的深墨色,比如 #2E2A25,背景配 #FBFAF7

这两个颜色单独看都不起眼,放在一起就有“纸和墨”的感觉了。

字体栈比 webfont 划算

中文字体动辄 5–10 MB,整套塞进网页是很奢侈的事。更划算的做法是精心排一个系统字体栈

:root {
  --font-serif: "Songti SC", "Source Han Serif SC", "Noto Serif CJK SC",
    "STSong", "SimSun", Georgia, serif;
  --font-sans: "PingFang SC", "HarmonyOS Sans SC", "Source Han Sans SC",
    "Microsoft YaHei", -apple-system, sans-serif;
}

这样 macOS 用户看到宋体/苹方,Windows 用户看到雅黑/宋体,零下载、零闪烁。

真想要统一风格,再考虑给标题单独挂一个裁剪过的 webfont——标题字少,子集化之后通常只有几十 KB。

标点也算排版

中文的引号、破折号、省略号都有自己的位置,别用半角的 "...。如果懒得手动换,可以挂个 pangu.js 之类的工具,在中英文之间自动加空格。


排版这件事,改四个数字就能脱胎换骨:字号、行高、行宽、颜色。剩下的都是锦上添花。

—— 于灯下2026 年 7 月 30 日

回响