第 22 章 中文排印的特殊难题:为什么英文排版规则搬到中文常常翻车

你前阵子是不是干过这么一件事。

你读了篇英文的”博客排版最佳实践”,里面写得头头是道:正文十六像素、行距一点五、每行最多七十个字符、段落之间留白、标题和正文拉开对比。你觉得有道理,照单全收,把你那个中文技术博客也设成十六像素、行距一点五、每行塞到七十多个汉字。

结果呢。

英文教程里那套数值,放在英文博客上干干净净、读着顺。可你这套中文页面,自己盯着看两分钟就累:一行拉得特别长,读完行尾眼睛要横着扫回来,常常找不准下一行开头;行与行贴得太近,整段糊成一片灰,分不出哪儿是行;句号逗号挤在满字的行里,节奏一会儿断一会儿黏;偶尔夹个英文单词,明显比中文小一圈,像没长开。

你第一反应是”是不是我字体没选对”,换了俩字体,还是那样。最后你得出个结论:中文排版就是比英文难看。

这个想法是错的。

中文排版不是天生难看,是那套从英文教程搬来的参数,压根不是为方块字长的身体准备的。这一章我要讲清楚:英文排版规则凭什么成立,它赖以成立的是拉丁字母的什么身体结构,而中文的身体结构在哪一点上和它不一样,于是同一套数值一旦落到中文上,就从”最佳实践”变成了”翻车现场”。


一、那个”照着做反而更丑”的场景,到底卡在哪

先把你那一幕拆开看。你照搬的是四个数:字号、行距、行长、段距。四个里三个在中文上会咬人,只有段距相对中性。

我一个一个问你。

“导师,字号十六像素有啥问题?英文也是十六像素啊。”

字号本身没问题。问题在第二个数——行距。英文教程说一点五倍,那是对拉丁字母而言。拉丁字母有 x-height(这个第 21 章讲过,小写字母那团的高度),x-height 以下还有降部空间,字母和字母之间、行与行之间,天然留着不少空气。中文没有这套空气:汉字字面几乎占满整个字身框,上到下都塞着笔画,行间没有天然的呼吸缝。你给中文也来一点五倍行距,两行字就几乎是背贴背站着,整段视觉上黏成一坨。

“那我把行距调大不就行了?”

对,但这就引出第三个数——行长。英文教程说”每行最多七十字符”,这句话的潜台词是”七十个拉丁字母那么宽”。拉丁字母窄,七十个字母排出来也就那么宽。可汉字一个字占的宽度约等于两个西文字母,七十个汉字排出来,宽度是英文七十字符的两倍还不止。你的眼睛从这么宽的一行行尾扫回行首,要走很长一段路,而且因为整行都是均匀连续的汉字,没有任何词与词之间的空隙帮你定位,回扫时极易跳到上一行或下一行。这就是你”读着累、找不到下一行开头”的直接原因。

“所以问题不在中文丑,是行长和行距都照错了对象。”

你说到点子上了。这三个数——字号中性、行距偏紧、行长偏长——组合在一起,正好把中文最怕的两件事同时触发:行间黏、行内长。英文怕的是行距太大显得松散、行长太短频繁换行;中文怕的刚好相反。同一套参数,在两种身体上指向了两个相反的坑。

这里先立住一个立场,后面全章都站在它上头:排版的参数不是审美偏好,是顺着文字身体结构的安排。英文规则顺着拉丁字母的身体,中文规则得顺着方块字的身体。把前者原样搬来,等于给一个人量了另一人的衣服。

你写代码的时候最懂这件事:处理一份数据,你得先看它的结构——是定长还是变长、有没有分隔符、编码是啥。你不会拿解析 JSON 的parser去硬套一份 CSV,套了就出 bug。文字也是一份”数据结构”:英文的结构里有空格当分词符,中文的结构里没有。这一条差异,就是后面所有坑的总根。


二、方块字的身体:等宽感、字面满、没有词间距

要说明白为什么英文规则搬不过来,得先把中文这个”身体”量一遍。中文和拉丁字母,在三个最根本的地方不一样。

第一个,等宽感。

你盯着一行中文看,会觉得每个字差不多宽,整行像一列等宽的方块排过去。这不是你的错觉,是事实:汉字在传统上就是按方格设计的,一个字占一个方格,宽高基本相等。拉丁字母完全不是这样,i 和 m 宽度差三倍,单词长短参差,一行英文是”宽窄不一的块”拼出来的,天然带着疏密节奏。

等宽感带来一个好处:中文版面整齐、稳。也带来一个麻烦:太整齐了就没有”自然的疏密”帮你透气。英文靠词与词之间的空格制造呼吸,中文没有这口气,全靠你来安排。

第二个,字面满。

字面,第 21 章提过,是一个字实际占的那个外框大小。中文字体大多字面率高——笔画几乎顶到方格的四边,整字是”实心”的。拉丁字母则相反,大量空间留在 x-height 之下、留在字母之间的缝隙里,整行英文是”有空隙的灰雾”。所以同样字号,中文一行的”墨色填充率”远高于英文。

后果是什么?中文段落整体灰度重、均匀、密。英文段落灰度轻、有呼吸、有节奏。你直接拿英文的行距行宽来排中文,就等于让一个本来就重的人,再穿紧身衣——能不闷吗。

第三个,没有词间距。这是最要命的一条。

英文怎么分词?靠空格。一个空格,就是一次明确的”词边界”信号,读者的眼睛在空格处自然歇一下,脑子在空格处把词切出来。中文没有这个信号。中文靠的是”字与字连续成串”的感觉来成词——“设计”两个字挨着,你脑子里自动把它当成一个词,但屏幕上它们和”的""内""功”之间没有任何物理空隙。

这就意味着:中文的阅读节奏,是连续的灰带,而不是英文那种”词—空—词—空”的颗粒感。连续灰带的好处是流畅、紧凑;坏处是一旦行距字距没处理好,整段就会闷成一块铁板,读者找不到停顿,喘不上气。

把这三样合起来,中文排印的根本体征就清楚了:灰度均匀,但容易闷。 均匀是优点,是中文自带的整齐与秩序;闷是风险,是它没有天然呼吸缝、全靠排印者手动放气的代价。

“导师,那西文有没有类似的中宫、字面、重心?”

有,第 21 章专门讲过,西文对应的是 axis、overshoot、counter 那套骨架,中文字体自己也有中宫、字面、重心(详见第 21 章,那里已经把这三个词定义过了,本章不重复展开)。你只要记住一个迁移:西文靠 x-height 决定视觉大小,中文靠字面率决定视觉大小;西文靠字怀(counter)透气,中文靠中宫松紧透气。两套骨架逻辑相通,但长在不同的身体上。

所以当你觉得”这套中文字体不对劲”时,背后多半是字面率或中宫跟你用途在打架——这正是第 21 章埋的那句话:“你看不懂为什么这套字不对劲,往往是因为它的骨架比例和你的用途打架,而你之前没有这套词汇去指认它。“本章往下,就是把这套词汇用在”排版”这件事上。


三、标点的坑:全角占位、避头尾、悬挂与挤压

中文标点,是英文排版教程里绝不会讲、但中文排印必踩的坑。根子还是一个:中文是方块字,标点也要占一格,而且是全角的一格。

先说全角占位带来的节奏问题。

英文标点只占大概半个字母宽(逗号、句号都是小不点),它们混在词间几乎不破坏灰度。中文标点——逗号、句号、顿号、分号、冒号——全都是占满一格的方块符号,而且很多时候是”实心”的(句号是个黑圆圈,叹号是根黑棍)。当一行里出现三四个句号逗号,它们就像灰带上突然镶了几颗重棋子,把原本均匀的灰度切开,节奏一会儿断、一会儿黏。

更麻烦的是:这些标点的”重量”和汉字不一样。汉字是笔画组成的,灰度是”线”;标点常常是”面”(一个实心圆、一根实心棍),视觉上更跳。所以一段中文里,标点密的地方会莫名其妙显重,标点疏的地方显轻,整段灰度就不均匀了。

再说避头尾。这是中文排印最硬的一条规矩,英文完全没有对应物。

“避头”,是说行首不能出现某些标点——逗号、句号、顿号、分号、冒号、后引号、后括号,这些”收尾型”符号不能顶在一行开头,像句话没说完就被砍断丢到下一行开头,读着极其别扭。“避尾”,是说行尾不能出现某些标点——前引号、前括号、前书名号,这些”开启型”符号不能孤零零吊在行末,像开了个头却没下文。

英文不在乎这个,因为英文换行按词走,词里带个逗号句号很自然。中文按字换行,一个字一个字地断,就极容易把一个逗号或句号甩到行首。处理不好,你满篇都是”行首句号”,读者每换一行都被绊一下。

那怎么办?两条路:一是标点悬挂,二是标点挤压。

标点悬挂,说的是把行尾的标点(比如落在版心右边界的句号)挂到版心外面去,或者让它略微探出版心,不占用正文的格子。这样版心右侧的字能对齐成一条干净的直线,标点像挂在墙外的灯笼,不破坏内文的整齐。很多书籍排版会这么做,尤其是右对齐的版心边上。

标点挤压,说的是当一行末尾出现标点、而它前面又挤着字时,让排版引擎把标点两侧的字距稍微压紧一点,腾出或半格空间,避免标点被强行推到下一行开头。日文排印里这套挤压规则极其复杂(叫”约物处理”),中文相对简单,但原理一样:通过微调相邻字距,让标点”落得其所”而不破坏整行灰度的均匀。

“导师,这些规则听着就头大,是不是只有做书的人才用得到?”

你做网页、做 PPT 照样用得到,只是很多人根本不知道自己的工具默认没开避头尾,于是满屏行首逗号还以为是”正常”。等你哪天发现”为啥我这段每行开头都有个小逗号”,回头一看,就是这条没处理。我待会儿案例里会给你看具体的翻车样子。


四、行距与字距:中文为什么普遍要更大的行距,字距该不该动

这一节是实战里最容易被忽视、也最见效的两件事。

先说行距。我前面点过:中文需要比英文更大的行距。给个具体的量级感——

英文正文行距常见在一点二到一点四倍字高之间,因为拉丁字母自带降部和字母间空隙,行间本来就有空气,再给一点二到一点四就够透气。中文正文行距,普遍要到一点五到一点八倍字高,甚至正文偏密的技术文档常设到一点七五。注意这是”倍字高”,不是固定像素,字号一变它跟着变。

为什么中文要这么慷慨地给行距?三个原因叠在一起。

其一,字面满。汉字上下都塞着笔画,行间没有天然缝,你不人为拉出一条缝,两行就贴死。英文那点降部空间中文没有,得用行距补。

其二,灰度重。中文整行墨色填充率高,行距不够时,上一行的”重”会和下上一行的”重”连成片,读者分不出行边界,回扫必错。拉大行距,等于在两条重带之间插一条浅灰的缓冲带,行的边界才立得住。

其三,连续灰带需要停顿。英文靠词间空格在行内给停顿,中文行内没有,行距就成了唯一的”行间停顿”。行距太小,整段像一口气读不完的长句;行距合适,读者每行末尾自然歇一下,节奏才舒服。

“那行距越大越好?”

又错了。行距过大,行与行之间那条缓冲带太宽,读者回扫时会”找不到回家的路”——上一行和下一行视觉上脱节,变成各自孤立的两行,段落的整体感散了。而且行距一大,一屏能放的行数变少,长文翻页成本上升。所以中文行距是”够透气但别散”,一点五到一点八是经验区间,不是越宽越高级。

再说字距。中文正文的字距,我的建议是:一般不要动。

原因还是连续灰带。中文靠字与字连续成串来成词、来透气,你一旦在正文字距上加空隙,那股连续的”串感”就被打碎,本来该连读的词被拉开,读者每读几个字就被迫停一下,像走路被人每隔两步绊一脚。减字距更糟:汉字字面本来就满,再压紧,笔画和笔画几乎贴脸,整段闷得透不过气,而且相邻字的笔画会”打架”,辨识度下降。

那字距就永远不能动?也不是。两个地方可以动,而且动了好看。

一是标题。标题字少、字号大,加一点字距(西文叫 letter-spacing,中文叫”字距加宽”)会让标题显得舒展、有仪式感、不局促。比如海报主标题,适当加宽字距,字与字之间留点气,立刻从”挤在一起喊”变成”从容地念”。但注意分寸:标题字距加宽到一定程度会散,一般加到约一个字宽的十分之一到八分之一就够,别加成一字一停的才板。

二是特殊调性。某些想营造”疏朗、高级、留白感”的版面,正文也可以极轻微地加一点字距,但这是风格选择,付的代价是可读性略降,得想清楚你愿不愿意付。绝大多数正文场景,字距归零最稳。

“导师,我之前做 PPT 标题总觉得挤,原来是字距没动过。”

对,而且 PPT 标题还常犯另一个错:字号拉得老大,字距还是零,于是几个大字黏成一团黑块。你只要把字距轻轻松开一点,同样的字立刻”透气”了。


五、行长:中文一行多少字舒适,为什么不是越长越好也不是越短越好

行长是中文排印里最被低估、却最能决定”读着累不累”的参数。

先给结论:中文正文舒适的行长,大约在一行三十到四十字这个量级,常见落到三十五字左右。有的书籍会放宽到四十出头,网页正文常控制在三十到三十八字。

为什么是这个数,而不是越长越好或越短越好?这得讲生理,不是口味。

你的眼睛读完一行,要做一次”回扫”——从行尾猛地跳回下一行的行首。这个动作不是精确制导,是大概其的一跳。跳得准不准,取决于两个东西:这一行有多长,以及行与行之间有没有清晰的边界。

行长越长,回扫要走的水平距离越远,跳偏的概率越高。而且中文是连续灰带,行内没有词间空格帮你”数着格子”找回位置,回扫全靠行尾那个字和下一行行首那个字的相对位置来判断。一行如果拉到六七十字,回扫距离翻倍,你十有八九会跳回上一行,或者跳过一行——这就是”读着读着发现读重了、读漏了”的真相。

“那反过来,行越短越安全?”

也不是。行长太短,比如一行才十几个字,你的眼睛刚读完一半就要回扫,回扫频率翻倍,眼睛在横向上来回横跳的次数暴增,累的是另一种累——像在很窄的走廊里频繁转身。而且短行换行太频繁,一句话被切成好几段,语义的连贯感被打断,读着也烦。英文研究里也有类似结论:行太短,阅读速度下降,因为回扫太勤。

所以行长是”两头都有坑”的参数:太长,回扫跳偏;太短,回扫太勤。三十到四十字是这两条坑之间的安全带。

落到具体媒介上,这个数怎么换算成”宽度”?你没法直接给像素,因为字号不同、字体不同,同样的字数占的宽不同。实操办法是:先定字号,再定”一行多少字”,让排版工具按字数而不是按像素去限制行宽。网页上常用做法是给正文容器一个最大宽度,使得在常见字号下大约落下三十五字;书籍上则是先定版心宽度,再反推字号能让一行落三十五字左右。

“导师,那如果内容必须长行怎么办,比如表格或者代码?”

那是另一回事,表格和代码不是”阅读型文本”,是”检索型文本”,读者不是顺着读而是跳着找,行长规则可以放宽。但凡是要”读下去”的中文,三十到四十字这条安全带就别轻易离开。

行长失控还有个隐蔽后果,我单独提一句:当行长过长、行距又偏紧,读者找不到下一行开头时,会本能地用手指或视线”画线”辅助,或者反复回读。你以为读者是”没耐心”,其实是你把回扫的路修得太难走。排印的责任,是让读者的眼睛省力,不是考验读者的眼力。


六、中英混排:基线、字号匹配,以及”中间要不要空格”的争议

你做技术内容,中英混排是躲不开的。这一节专门讲混排里最咬人的三件事,其中字号匹配直接呼应第 21 章的 x-height。

第一件,基线对齐。

中文和西文的”站立姿势”不一样。西文字母站在一条基线(baseline)上,基线之上是 x-height 那团小写字母,再往上有大写字母和伸出部分;基线之下还有降部。中文字没有这套上下结构,它整个字面就顶在字身框里,重心偏中。于是当中文和西文排在同一行,西文那套”基线在下、身子在上”的结构,会让西文视觉上像”沉”在中文底下一点,或者中文显得”飘”在西文上面一点。

处理办法是基线对齐——让西文的基线和中文的”字底”落在同一条线上,而不是让它们的”中心”对齐。多数排版工具默认是基线对齐的,但很多人在混排时没意识到这件事,结果西文像是浮在行里。你改的时候,是调西文的基线位置去贴中文,而不是反过来把中文往下拽。

第二件,字号匹配,这是 x-height 的锅,必须讲。

第 21 章说过:字体的”视觉大小”主要由 x-height 决定,不是标称字号。中文没有 x-height 这个概念——中文字面整体就是字高,字面率高,几乎占满字身框。所以当你把中文和西文设成”相同标称字号”,比如都十六像素,中文那团字看起来就比西文那团小写字母”大一圈”。西文的 x-height 通常只占字高的一部分(大概六成到七成),同样十六像素,它实际视觉高度只有中文的六七成。

这就是你之前看到的”英文单词比中文小一圈”的真凶,不是你字号没设对,是 x-height 在作祟。对策有两个:要么把西文单独调大个两三像素去补偿,让”视觉大小”对齐而不是”数字大小”对齐;要么干脆换一套 x-height 偏大的西文字体,让它的小写字母那团和中文视觉齐平。

这条经验和第 21 章那个混排校准练习是一回事:对齐看的是落到视网膜上的视觉大小,不是落到参数面板上的数字。

第三件,中西文之间要不要加空格,这是真争议,我得把两边的理由都摆出来,不替你拍板。

传统中文排版,字与字之间是不加空格的,整行是连续灰带,这是中文的身体结构决定的——中文靠连续成串来成词,没有词间距这个传统。所以老派排印里,中文夹西文,也是直接挨着:“本周上线Release版本”,中间不空格。

但现代受西文影响,很多人主张在中西文之间加一个空格(通常是四分之一字宽左右的窄空格),理由是:西文单词本身是一个”块”,它和前后中文之间如果没有空隙,视觉上会糊在一起,读者切词费劲;加个窄空格,等于手动给西文单词”加个词边界”,读着更清楚。你看很多中文技术文档、很多设计良好的中文网站,都采用”中西文间加窄空格”的做法。

两边都有道理,区别在于你更看重什么:

不加空格,保的是中文连续灰带的原生节奏,版面更”整”、更中文化,但夹长英文单词时容易糊。加窄空格,保的是混排的可读性,西文单词更跳得出来,但会轻微打断中文那股连续的串感,而且你得保证空格是”窄”的——加成一个完整半角空格就太疏了,反而散。

我的建议是:正文混排,加一个窄空格(约四分之一字宽)最稳,兼顾可读和节奏;标题和大字里夹短英文,可以不加,因为字号大、字距本就松,糊不到哪去。但你得知道这是选择,不是铁律——你付”打断串感”的代价,换”西文更清楚”的好处,和第 1 章心法那句话一样:“你不是在选对的做法,是在选愿意付哪种代价。”

顺带一句,中英混排里标点也常出戏:中文全角标点配西文单词,那个全角逗号会显得比西文单词还宽,节奏很怪。处理办法是混排段落里的标点也可考虑用半角,或者至少在标点前后做挤压。这又是”标点占格”那个坑在混排场景的延伸。


七、标题与正文:字重、字体的选择,以及可读性优先

中文排印里,标题和正文是两套逻辑,不能一套参数打天下。

先说标题。

中文标题常用什么?黑体(无衬线)最普遍,因为它笔画均匀、字重能拉得很重,醒目、有力量、不抢戏,适合绝大多数标题场景。宋体(衬线)做标题则偏文气、典雅、有书卷气,适合文学、传统、需要”慢”调性的标题。这和第 21 章讲的衬线无衬线性格一脉相承:黑体把”人”拿出字外,适合高效传达;宋体把”人”放进字里,适合有来历、有温度的内容。

标题的字重,可以比正文重很多——这是建立层级最直接的一招。正文用 Regular,标题用 Bold 甚至 Black,读者的眼睛不用任何颜色就知道了”这是头”。但注意第 21 章警告过的事:字重分层的前提是”大部分字是轻的,只有少数是重的”。你标题用 Black 没问题,但别把小标题、引文、页脚全加上重字重,否则重不再是重,整页都在喊。

标题的字距,前面讲过,可以轻轻松开一点,制造舒展和仪式感。但标题绝不该减字距,减了就挤成一团黑。

再说正文。

正文字体的第一原则是可读性优先,不是风格优先。你选一套正文字体,先问”它在小字号、长文、连续阅读下累不累眼睛”,再问”它好不好看”。这两者偶尔冲突:一套很有性格的字体,做标题惊艳,做长文正文可能闷或者花,这时正文要退一步,选那套”没性格但耐读”的。

屏幕上的中文正文,无衬线(黑体类)通常比衬线(宋体类)更稳,原因和英文一样:屏幕像素有限,宋体那些细微的衬线笔画容易被吃掉、发虚,长时间读累;黑体笔画均匀,小字号下更扛造。所以你看到绝大多数中文 App、中文网页的正文都是黑体,不是因为黑体”高级”,是因为它在发光屏幕上不掉链子。印刷书籍则相反,纸张能还原衬线细节,长文用宋体反而有”引导眼睛一行行走”的传统优势。媒介不同,物理条件不同,选择不同——这和前面所有”参数要顺身体”的立场一致。

还有个实战细节:正文字号别太小。中文因为字面满、笔画多,小字号下比西文更容易糊。网页正文中文常见十六到十七像素起步,比英文正文的十四到十六略大一点才舒服。你之前照搬英文的十六,对中文其实偏紧,挪到十七、行距一点七五,立刻松快。


八、跨场景案例:同一套难题,四种落地

我把上面这些,放进四个你天天遇到的场景,你看它怎么具体翻车、又怎么具体救回来。每个案例我都给出排法、行距字距的数值感、以及问题到底卡在哪。

案例一:一本技术书的内文(最容易踩全坑)

某本中文技术书,内文用宋体,字号设成十点,行距一点三,每行硬塞进四十二字,标点没开避头尾。读者反馈”看着累、读不进去”。

拆开看:行距一点三对中文宋体太小,宋体笔画本就细,行间没缝,两行黏死;每行四十二字,接近行长上限甚至略超,回扫开始跳行;最致命的是没避头尾,满篇行首逗号句号,读者每行开头都被绊。

改法:字号提到十点五,行距拉到一点七,每行收窄到三十六字左右(重新算版心宽度),打开避头尾并做标点挤压。改完,同样的字,读者说”顺了”。字一个没改,改的是身体和参数的匹配。

案例二:一个中文技术博客(你那一幕的还原)

博主照搬英文教程:正文十六像素、行距一点五、容器最大宽度设成和英文一样宽(于是中文一行落到七十多字)。中英混排里英文单词设成同样十六像素,于是英文显小一圈。

拆开看:行距一点五对中文偏紧(应一点七以上);行长七十多字是舒适值的将近两倍,回扫必跳;英文同字号显小,是 x-height 的锅没补偿。

改法:正文提到十七像素、行距一点七五、容器最大宽度收紧到约三十六字落地、英文单独补偿到十九像素让视觉对齐。中西文间加四分之一字宽窄空格。改完,页面从”闷、长、找不到行”变成能顺畅读下去。注意,改的全是参数,没有动任何内容。

案例三:一份工作汇报 PPT(标题字距和混排的坑)

某哥们做汇报,标题用黑体、字号拉到最大、字距零,结果”季度业务总结”七个大字黏成一团黑块;正文每页塞满小字、行距一点二,观众念不完就翻页;中英混排的”Q3 OKR”比中文小一圈。

拆开看:标题字距为零,大字挤团;正文行距一点二对中文是灾难,密得喘不上气;混排字号没补偿。

改法:标题字距轻轻微开(约一字宽的十分之一),七个字立刻透气;正文行距提到一点五到一点六、每页字数砍半,观众读得动;“Q3 OKR”字号调大补偿 x-height。改完,同样的内容,观众愿意看了。

案例四:一张展览海报的超大标题(字面率和字距的反面教材)

海报主视觉”城市记忆”四个字,设计者选了一套字面小、中宫紧的宋体,字号极大,字距为零。远看四个字显小、显空、撑不住整张海报,像四个小印章飘在大纸上。

拆开看:字面小、中宫紧的字体做超大标题,会”缩”在格子里,放不大;字距为零,大字更显局促。

改法:换一套字面大、中宫松的黑体,字距轻轻微开,四个字立刻撑满版面、有分量。这呼应第 21 章那句话:字面中宫跟用途打架,你之前没有词汇指认它,现在你知道了——大字标题要字面大、中宫松,才撑得起来。

这四个案例的共同点:没有一处是”内容不好”,全是”参数和身体没对齐”。你一旦会用”等宽感、字面满、无词间距、全角标点、行长、行距、x-height、字面中宫”这套词汇去拆,翻车现场就能一句句指认出来,指认出来就能改。


心法

这一章讲的全是中文排印的坑,但坑之上有一句更根本的话,我想讲透,否则你学完只会”又多了一堆排印参数”。

每种文字都有自己的身体结构,排版是顺应结构,而不是改造结构。

你细想英文排版那套”最佳实践”是怎么来的。它不是某个天才拍脑袋定的审美,是一代代西方排印师,面对拉丁字母这种身体——有词、有空格分词、有 x-height、有升部降部、标点只占半格——反复试错,摸出的一套”顺着这套身体排最舒服”的经验。行距一点五、行长按字符数、词间留空,每一条背后都站着拉丁字母的身体结构。它是一套为那个身体量体裁的衣。

中文是另一个身体:方块、字面满、无词间距、全角标点占格、整行连续灰带。你把这个身体,硬塞进为拉丁身体量的那套衣里,能合身才怪。很多人的第一反应是”改中文去迁就规则”——把标点半角化、硬加词间距、把中文排成西文那样的颗粒感。这叫改造结构。后果是中文失去自己的节奏,变得不中不西,既不整齐也不透气。

正路是反过来:改规则去顺应中文。承认中文没有词间距,于是用行距和标点去手动放气;承认中文字面满,于是给更大的行距;承认中文是连续灰带,于是不去追求西文那种词间呼吸,而是用行的停顿来换气;承认全角标点占格,于是用避头尾和挤压去安置它。这不是”中文不如英文好排”,是”中文的好看,靠的是另一套手法”。

我换个你更熟悉的领域说。你写代码处理文本,第一步永远是看数据结构:这份数据是定长还是变长、有没有分隔符、编码是啥。你绝不会拿解析带分隔符的 CSV 的 parser 去硬套一份没有分隔符的定长记录,套了就出 bug——字段错位、截断、乱码。文字同理:英文的”数据结构”里,空格是分词符;中文的”数据结构”里,没有这个符,分词靠连续成串的语义。很多排版工具默认是英文思维——按空格分词、按词换行——一碰到中文就出 bug:标点甩到行首、词被从中间劈开、对齐全乱。理解文字的身体结构,你才能改对参数,而不是在表面打补丁。

再往深一层,这件事指向一个更大的”凭什么”:你前面几章学到的对比、留白、层级、节奏,在中文里都要重新翻译一遍。对比在中文里,不只是字号字重,还是灰度均匀度(你敢在均匀灰带上戳一个重标点,就是在造对比);留白在中文里,不只是版心外的空,更是行距这条”行间留白”和字距这条”字间留白”;层级在中文里,靠的是字重和字号,但底子是那块均匀灰带——没有均匀做底,重就显不出重。

所以心法落到你身上是这样的:下次你面对一段中文,别再问”怎么让它像英文排版那样好看”,要问”这个身体需要什么样的安排才舒服”。前者是拿别人的衣往自己身上套,后者是顺着自己的骨架穿衣。区别看着小,结果差很远——前者永远在”凑”,后者才能”立”。

还有一句,是第 1 章心法的回响,也是全章的收口:每一个排印手段都有它的代价。你加大行距,付的是”一屏行数变少”;你加窄空格,付的是”打断中文串感”;你开避头尾,付的是”某些行末字距被挤压、灰度微变”。没有免费的排印,只有你清楚不知道的代价。高手不是不付代价,是高手知道自己在付哪一笔,并且付得和内容的态度一致——长文求读得动,就付”行距大、行长短”的代价;海报求冲击力,就付”字距松、字面大”的代价。

记住:规则是别人顺着别人的身体摸出来的。你排中文,得顺着中文的身体,自己把规则重新摸一遍。


小结

这一章只讲了一件事:英文排版规则搬到中文会翻车,不是中文丑,是那套规则顺着拉丁字母的身体,而中文是另一具身体。

中文身体的三处根本差异——等宽感、字面满、没有词间距——决定了它灰度均匀但容易闷,需要更大的行距、更短的行长、更讲究的标点处理。全角标点占格带来避头尾与挤压的难题;行距一点五到一点八、行长三十到四十字,是顺着这具身体摸出来的安全带;中英混排的基线对齐、x-height 字号补偿、窄空格争议,本质都是两种身体在同一行里如何共处。标题求舒展用字面大、字距松,正文求耐读用可读性优先的无衬线。

你带走的一句话:排版是顺应文字的身体结构,而不是拿别人的规则改造它——中文的好看,靠的是另一套顺着方块字的手法的。 下次再觉得”中文怎么排都别扭”,别怪中文,先问:我是不是又把为拉丁身体量的那套衣,套到方块字上了?

下一章我们顺着这具身体再走一步,聊排印的呼吸与字的性格——同样的汉字,为什么松排显从容、紧排显急切,字面和中宫如何悄悄决定了内容的脾气。


【思考题】

  1. 找一篇你常看的中文公众号或博客,用手机截一段正文。数数它一行大约多少字,目测它的行距是紧还是松。用这一章的”三十到四十字、行距一点五到一点八”当尺子,判断它的行长行距落在安全带里还是外?如果落在外,你估计读着会有什么具体不适?

  2. 你有没有注意过”行首出现逗号句号”的中文页面或文档?回想一下当时读着什么感觉。现在你知道那是”避头尾”没处理,你能指出:如果一段话每行开头都顶着一个逗号,读者的眼睛在换行时会被怎样干扰?

  3. 找一张中英文混排的图(技术海报、公众号封面、产品包装都行),专门看里面的英文单词和周围中文,视觉大小是否一致?如果不一致,你现在是能判断”这是 x-height 的锅、该把英文调大补偿”了,还是仍然会去反复检查”我字号是不是设错了”?

  4. 留意你手机里某个中文 App 的正文:它用的是黑体还是宋体?你估计它的行距大概多少倍?结合”屏幕用小字号、衬线易发虚”这条,判断它的字体选择是不是顺着媒介的身体?如果是宋体,你猜它在屏幕上的可读性会不会吃亏?

  5. 做一个生活观察:街边一家店的招牌、或者一本书的封面,标题字与字之间是紧挨着还是留了空隙?如果是大字标题却字距为零显得挤,你能用”字面率、中宫、字距”翻译出它为什么显局促吗?如果它字距松、字面大,你又能说出它为什么显得舒展有分量吗?

  6. 你之前有没有干过”照着英文教程/英文模板排中文”的事?现在回头看,当时翻车的根子是不是”行距偏紧、行长偏长、标点占格没处理”这三处?如果用这一章的词汇重述那次翻车,你能把它从”中文就是难排”翻译成哪几句具体的参数判断?

【参考答案】

  1. 这道题练的是”用安全带当尺子去量真实版面”。大多数排版良好的中文公众号,正文一行落在三十到四十字之间,行距约一点六到一点八;你如果数到一行五十字以上,基本可以确定行长偏长,读者回扫容易跳行、读着累;如果行距看着比字高还窄(两行几乎贴背),那就是一点三以下,行间会黏成块。具体不适会是:读着读着”读重了”或”读漏了一行”、整段灰蒙蒙分不出行、眼睛容易酸。你能用这两个数值当尺子,说明你已经开始把”闷”翻译成”行长行距的参数”了,而不是停在感受层。注意:不同字号下同样的”字数”占的宽不同,所以判断时要把字号一起考虑——小字号下的三十五字,和大字号下的三十五字,舒适感不同,但字数标尺依然有效。

  2. “行首逗号”的干扰,机制很清楚:读者读完一行,眼睛回扫到下一行行首,本该落在一个”内容字”上,建立”这一行从哪开始”的锚点。结果行首是个逗号——一个收尾型标点,语义上属于上一行末尾。读者的脑子会卡一下:“这逗号怎么跑这儿了?上一行没结束?“这个卡顿每次换行都发生一次,一篇读下来被绊几十回,累的不是眼睛是注意力。这正好印证”标点占格”那个坑:全角标点是个实心重符号,你不让它避头尾,它就天天在行首当绊脚石。你在真实文档里见过这种,现在能指认”这是避头尾没开”,就已经从”怪”走到”知道改哪”了。补救很简单:打开避头尾,让收尾标点回到行末,行首永远是内容字,回扫的锚点就干净了。

  3. 这一题是把第 21 章的 x-height 和本章混排直接连起来。绝大多数中英文混排,英文看着比中文小一圈,是 x-height 的锅,不是字号设错。判断法:选中英文,看它的大写字母高度是否和中文接近。如果大写字母已经和中文差不多高、但小写字母明显矮一截——那是 x-height,你加大字号去救只会让大写字母比中文还高,更乱。正确做法是把英文整体微调大两三像素,或换一套 x-height 偏大的西文字体,让”小写字母那团”和中文视觉对齐。你如果能从”我字号设错了”升级到”这是 x-height、该补偿视觉大小而非数字大小”,说明第 21 章和本章的勾连在你脑子里接通了。这条在代码注释、技术文档、混排海报里天天用,是工程师最该掌握的混排校准。

  4. 屏幕媒介上,中文正文用黑体(无衬线)是顺着身体的选择:屏幕像素有限,宋体衬线笔画细,容易被吃掉发虚,长文读着累;黑体笔画均匀,小字号更扛造。所以你看到主流中文 App 正文几乎都是黑体,不是因为黑体高级,是因为它在发光屏幕上不掉链子。如果你观察到某个 App 正文用宋体,大概率是它在付”发虚、读着累”的代价——除非它是印刷品或超大字号场景。这条和英文”屏幕用无衬线”是同一个物理逻辑:媒介的物理条件决定字体选择,不是审美。你能用”媒介身体”而非”好看难看”去判断,就是专业视角。顺带:它的行距如果也偏紧(一点三以下),那就是双重违反中文身体,读着会加倍累。

  5. 大字标题的字距和字面,是这一章最直接的”肉眼翻译练习”。如果标题字距为零又字面小、中宫紧,七个大字会黏成一团黑块、还显小显空,像小印章飘在大纸上——因为字面小中宫紧的字,放大后笔画缩在格子中间,撑不起来;字距零又让它们挤。反之,字距轻轻微开、字面大、中宫松的标题,字与字之间留了气,每个字都顶满格子,整组字显得舒展、有分量、能压住版面。你用”字面率、中宫、字距”三个词就能把”显局促”和”显舒展”翻译成具体的结构原因,而不是说”这字好看/不好看”。这正是第 21 章埋的伏笔:你看不懂字不对劲,是因为骨架比例和用途打架。现在你有了词汇,就能指认是字面中宫在打架。

  6. 这题是收口,逼你把”中文难排”的抱怨翻译成参数判断。典型翻车三件套:行距偏紧(照搬英文一点五,中文该一点七以上,于是行间黏)、行长偏长(照搬英文”七十字符”,中文七十汉字宽是两倍,回扫跳行)、标点占格没处理(全角标点甩到行首、灰度被切)。你若能把它从”中文就是难排、我审美不行”重述成”我那次是行距一点五太紧、行长七十字太长、避头尾没开,所以闷和跳行”,你就完成了从感受到要素的翻译——和第 1 章那句”带走的话”完全呼应:说不出好坏,是还没把感受翻译成要素的词典。这一章给你的,就是中文排印那半本词典。


【动手练习】

  1. 行长行距实测(打开任意文档工具或网页编辑器就能做)

    找一段你手头的中文(一篇技术文、一段产品介绍都行),至少三百字。先按”英文习惯”排:字号十六、行距一点五、每行不限宽(能多长多长)。自己默读两分钟,记下哪里累、有没有读重读漏。然后改:字号十七、行距一点七五、限制每行约三十六字(网页里收紧容器最大宽度,文档里加窄栏或调页宽)。再默读两分钟,对比两次的累法有何不同。

    自评标准:改完之后,你闭眼回想刚才读的内容,能大致说出”它讲了哪三件事”;而第一版你读完后脑子里只有”好长好闷”。如果第二版你读得动、第一版读着想跳过,说明你真感受到了行长行距的体重——而不是停在”好像差不多”。合格标志是:你能用”回扫跳行""行间黏”这两个词,向朋友解释为什么第一版累。

  2. 混排 x-height 校准(用纸笔或手机就能做)

    写一句话,中文夹一个英文单词,比如”本次发布 Release 版本”。把中文和英文设成相同字号,截下来看英文是否显小。然后只调英文字号(中文不动),找到让”英文小写字母那团”和中文视觉一样高的那个值,记下它比中文大了多少(比如大两像素或约百分之十二)。再把图缩小到手机宽度看,确认缩小后中英文仍”一样大”。

    自评标准:校准后远看中英文像同一套字号长出来的。如果缩小后英文还是显小,说明补偿不够,继续加大;如果英文反而比中文大,说明过头。合格标志:你不再去检查”我字号是不是设错了”,而是直接说”这是 x-height,我把英文视觉补偿到对齐了”。这和练习 2 的思路与第 21 章校准练习一致,做到能盲判就算过关。

  3. 避头尾与标点找茬(用眼睛做,写在便签上)

    找一份你手头真实的中文文档或网页(自己写的、公司文档、公众号都行),专门扫”行首有没有逗号句号顿号、行尾有没有前引号前括号”。每找到一处,在便签上记一句:“第 X 行行首有个句号,读者回扫会被绊”。扫完整篇,数你找到几处。

    自评标准:如果你在一篇几百字的中文里找到三处以上行首收尾标点,说明这份文档避头尾没处理,且该文档的”读着别扭”至少有一部分根子在这。合格标志是:你以后看到任何中文版面,眼睛会自动先去扫行首行尾的标点——这个本能一旦建立,你才算真正”看见”了标点的坑。进阶:找一份处理得好的书(纸质书内文),对照看它的行首行尾,确认它一处绊脚石都没有,把”好的样子”也记进眼睛里。