中文排版
最后更新 2026-11-02
- 中文排版
- 中英混排
- 避头尾
- 标点
- 字面框
- 竖排
- 地区字形
EN中文
本页目录
中文排版不能照搬西文规则,因为汉字的一个字和拉丁的一个词在排版里扮演的角色不同:汉字几乎填满一个方块,字与字之间可以直接断行,而标点有自己的占位规则。
字面框与全角
汉字设计在一个接近方形的字面框里,左右各留一点空隙。一个汉字在排版里占一个全角宽(等于字号)。
标点也是全角宽,但墨迹只占一半:句号、逗号在左下或右上,其余空间是空白。于是:
- 连续几个标点会显得很空;
- 标点与字之间看起来多了一点距离;
- 行首行尾的标点如果不处理,会出现难看的空洞。
这就是 OpenType 的 palt(比例宽度)要解决的问题——它让标点按实际墨迹占位,而不是死死占一个全角。
避头尾
中文排版有两条硬规则:
- 行首禁则:句号、逗号、顿号、右引号、右括号等不能出现在行首;
- 行尾禁则:左引号、左括号等不能出现在行尾。
处理方式叫避头尾(kinsoku):要么把上一字挤进来(压缩),要么把标点推到下一行(悬挂)。
浏览器默认会做基本的避头尾,但中西混排、连续标点、带括号的引用等复杂情形常常处理不到位——这是中文排版里最容易被挑出来的问题。
中西混排
汉字与拉丁字母并排时有几件事要注意:
- 间距:汉字与西文之间通常需要一点空隙(约 1/4 字宽),否则会挤在一起;CSS 的
text-autospace/text-spacing-trim在做这件事,但支持度不一,实践中常用手动加空格或排版软件设置; - 基线:西文的中线、汉字的中心不在同一高度,混排时如果按基线对齐,视觉上西文偏下;
- 字号:很多中文设计的西文部分比汉字略小(约 95%),因为西文的 x 高度更大,同字号会显得更重;
- 字体选择:正文用中文字体,西文单独指定一款(可读性更好的西文字体),用
font-family的列表顺序实现回退。
行高与字距
中文的行比西文更需要空间:
- 汉字满格,行与行之间没有自然的空隙,行距小了会糊成一片;
- 正文行高通常 1.6–1.8,比西文的 1.4–1.7 更宽;
- 字距(tracking)在中文字体里通常保持 0——汉字是等宽的,加大字距会破坏方块感,只在标题、海报这类场合用。
地区字形差异
同一个码位,简体中文、繁体中文、日文的标准写法不同。典型例子:
- 骨的上部:中文字体里朝左,日文字体里朝右;
- 直、值的内部横画数量;
- 门的第一笔。
这些差异由 locl 特性按语言切换。所以:
- 中文页面上的日文字体看起来怪,不一定是字体坏了,而是它按日文标准画;
- 做多语言站点时,
lang属性会影响字形(见 GSUB / GPOS)。
把方向换一下:竖排时标点会旋转、括号会换向,而这取决于字体有没有 vert。
竖排
竖排用 vert / vrt2 特性把需要旋转或替换的字形换掉(括号、破折号、省略号),并按从上到下、从右到左排列。
CSS 用 writing-mode: vertical-rl。注意:字体必须支持竖排,否则括号方向会是错的。
在本站怎么观察
- 检查器的样例图有中文与西文两种版本,能直接看出字重与风格的差异;
- Unicode 覆盖页用真字体渲染时,中文区块的字形就是这个字体的真实样子;
- 排版预览里输入中文,可以试行高与字距(但避头尾与混排间距由浏览器决定,本站不干预)。
延伸阅读
- W3C:中文排版需求(Chinese Layout Requirements)
- CSS Text:
text-autospace、text-spacing-trim - 本站:GSUB / GPOS、行高(leading)