文字设计和视觉文化

行行当机不立断

叶圣陶等合编《开明新编国文读本》(注释本甲种第四册),开明书店,1948 年第三版,上海福州路。(图片来源:台湾华文电子书库)

「孔雀计划:中文字体排印的思路」系列倡导从中文出发、以中文的思维方式讨论中文排版。精妙的中文排版并不仅仅是「标点悬挂」那样的小技巧,而是一个有设计逻辑的系统。在本篇里,笔者着重讨论一个大家容易忽略的中文换行问题。

谈到中文排版的换行问题,大家可能首先会想到避头尾规则。由于避头尾涉及到标点,笔者会另文叙述。在本篇里,笔者通过两个实例,聚焦中文排版中标点以外的换行问题,挖掘一下那些容易被忽视的中文排版需求。

按语义换行

首先请看下图这部汉译的西文著作。其中文版设计者声称:「他(原书作者)一直拒绝那种齐头齐尾的强制对齐排版,而是一行一行地细心确定每行最末端词汇。……中文版设计基本复刻了这一传统。」该书全文放弃了两端对齐而采用了左对齐,并号称是依照语义按词换行。但是这种中文排版真的美观且易于阅读吗?

笔者曾在拙文《「中西之别」重考》里指出过,西文采用「按词分写」,词与词之间有词距(word space),因此排版引擎首先选择在空格处换行。为了得到更好的排版效果,还要考虑连字处理问题(hyphe­nation)将词断开。由于西文字母体量小,可供调整的空间相对零碎,因此左对齐后再调整,可以让整个页面右侧不齐的行尾形成类似波浪的形状,非常美观。这也许就是原书的外国作者所偏好的。

而在东亚,有且仅有一个文种——韩文的排版断行具有「双重性」。现代韩文在正词法(ortho­graphy)的层面规定了必须进行「分写」(띄어쓰기),因此韩文排版可以有两种风格:既可以像西文那样按词换行,也可以中文这样每个字后都可换行。但与西文不同的是,韩文即便把词断开也不需要用连字符 (-) 连接。韩文的换行规则在 W3C《韩文排版需求》里有如下记述(原文为韩英对照,笔者试译):

当行末为韩字(谚文)时,可以「字」(글자)或者「词」(어절/語節)为单位断行。文章作者可以决定按段落或者通篇采用任意一种方法。

char-vs-word
pinyin-jptext

同样一段韩文,左侧按西式排版以词换行;右侧按中式排版以字换行。请注意换行位置和词距的变化。(图片来源:W3C《韩文排版需求》,排版内容为韩国国歌歌词。)

中文一般不进行按词分写。罕见的分词书写一般只出现在对外汉语教学的初级阶段教材里。(刘珣主编,《新实用汉语课本》,北京语言大学出版社,2009 年)

众所周知,长篇文章里西文算「词」数,而中文是算「字」数。其实中文里的「单字成词」的情况很常见,「字」「词」很难严格区分,导致汉语的严格分词反而很困难。中文的书写体例里也从来不存在「按词分写」。唯一的特殊情况是对外汉语教学的教材里,但这也仅限于初级教材,中级之后就和普通的中文出版物一样不按词分写了。对于机器,自然语言处理遇到的的「中文分词难」已经通过技术解决;而对于人来说,阅读中文本来就不应该过分突出「词」的作用——中文读者不会对此造成困惑,排版也无须多此一举。对汉语母语者来说,并不会因为按语义换行排版就能极大提高阅读效率。

汉语经过漫长历史的不断演化,词的音节也在不断增加,现代汉语的词汇一大特点就是「以双音节词为主」。据统计,《现代汉语词典》《现代汉语常用词词频词典》里双音节词约占 60 %。这样造成的局面是,即便要对中文「按词换行」,行末遇到不完整的词,也无非是一两个汉字的宽度调整。比起西文字母的零碎宽度,中文方块字显得硕大,这个宽度如果按照「左齐、右不齐」的排版,只会造成难看单调的锯齿状,与西文的大波浪差距甚远。这一点,其实与之前拙文谈「标点悬挂」时提到的西式「视觉对齐」是一个道理。

左对齐时中西文本块的行尾对比。西文的字母不等宽,字距、词距调整约精细,行末纵向曲线就越平滑。而中文方块字体积硕大,不齐的行末只能成为锯齿。

自从近代字体排印发展以来,汉字已经是固定的「方块字」,排版造型趋「齐」使内部驱动力也偏好「两端对齐」。而且,如果能将标点挤压等间距调整到位,其实「左对齐」和「两端对齐」的差别会变得很小。无论是看中文的语言词汇特点、还是看汉字造型和排版特性,都没有必要将长篇的正文做成「按词断行」的左对齐,既没有用也不好看。

需要注意的是,「按词换行」在标题里是必要的。特别是在报纸新闻等用于「秒读」媒介的标题里,类似「我外交部强烈谴责伊拉克/大使馆被炸事件」这样的换行的确不妥。标题要求转行时不能产生歧义,不得割裂词组,而且对于虚词也要认真处理,一般出版社会规定「的」这类虚词不能放在行首,「和」「与」不能放在行末。而正文与标题不同。在正文这样一个更长更流畅的语流里「按词换行」的必要性大大降低,而且也会导致庞大的工作量。全文按词断行,如果没有机器语言分析的辅助,就只能靠手工,这样必然会有缺漏。比如,图例中倒数第四行的「字宽」一词就被错误地断开了,设计者自己也没有彻底实现其设计逻辑。

针对图例这个案例来说,由于该书是译作,中文版设计者强调这是依照原书作者的偏好,也许也是为了增加「设计感」。但是,只要译作是中文,必须符合中文最低限度的基本行文和排版的习惯——希伯来文作品的中文版如果也按照希伯来文从右往左排版,估计绝大多数中文读者都会不适应。因此,作为设计师必须清楚地理解「最低限度」在哪里,应该不应该踩到警戒线,哪些是可以尝试而哪些是违反客观规律的,这些都要谨慎决策。否则,生搬硬套西文排版的方法而忽略中文本身的内部规律,只会成为东施效颦。

捣乱的数字

那么,中文排版在换行时不用在意语义,那就只需要考虑标点吗?下图就是一份完全没有标点的排版,来自中国某字体大厂商的一份字体样张,看看这里出了什么问题。

为什么无法网格对齐?(图片来源:国内某字体厂商字体样张)

由于内容是佛典,因此设计师采用了「无标点」+「两端对齐」。对于中文来说,这理应是最简单的排版模式,如果按部就班,应该会按照稿纸模式的中式网格形成「纵横对齐」的版面。但令人意外的是,实际效果并非如此:第四行和第五行的字距被拉开,每行只有 18 字;而其他几行的字距更紧,每行 19 字。笔者通过软件模拟比对,确认这是使用 Adobe InDesign 中文版的默认设置排出来的效果。为什么会出现这种情况呢?

原来,问题的关键在「千二百五十」这个汉字数字。Adobe InDesign 中文版里有一个被称作「连数字」的功能,不让数字在换行时从中断开。在此例里,该功能「智能」地判断出了第五行的行末遇到了「千二百五十」这个数字,为了保证其不断开,只好将整个数字挪到下一行的第六行行首,而第五行多出的空白,则按照「CJK 段落书写器」的算法,不仅均摊到第五行,还均摊到了第四行内,最后导致第四、第五行这两行字的字距都发生了变化。

lianshuzi-offon
InDesign-LianshuziMenu

开启关闭「连数字」的效果对比。从第四行开始偏差一个字宽,累计到最后有两个字宽的差距。需要注意的是,关闭「连数字」之后,由于纵横对齐不需要任何多余调整,因此「段落书写器」和「单行书写器」的效果是一样的。

Adobe InDesign 中的「连数字」位于段落面板的选项菜单内,且默认打开。

「连数字」这个功能自 InDesign 1.0 版就存在,而英文版并无此功能,可见这是专为中日韩的东亚版开发的,但笔者可以毫不为过地称之为 Adobe 的一大失误。

本来「连数字」的功能是让以0〜9组合而成的所谓「全角阿拉伯数字」,以及汉字数字,包括以「十百千万亿兆」等表数位的汉字组成的数字连起来而不断开,如遇行尾则推到下一行。然而,用户却对 Adobe 的这个「热心」功能哭笑不得:按照上述逻辑「该有的没有」,因为这个算法并没有包括汉字数字〇以及大写的「壹贰叁」等字符,因此对于「二〇」这样的数字并不会奏效;而「不该有的却有」,因为软件只是单纯检测字符而无法智能判断语意,遇到类似「以防万一」中「万一」这样的词也会被误判成数字进行多余的处理;而且,夹在汉字数字中间的逗号和间隔号甚至会被当做分节号、小数点处理。

Adobe InDesign 的「连数字」默认打开,自动检测汉字数字之后会将数字强制推到下一行;此时段落若为两端对齐则会强制把上一行字距拉开。

退一万步来说,阿拉伯数字断开会导致位数不清,的确是应该禁止断开,但是汉字数字就没完全没有必要了。事实上,中文排版里从来没有过禁止汉字数字的行尾换行。考虑到 Adobe InDesign 的东亚版完全是依照日本工业标准 JIS 4051:2004 《日本语文书的排版方法》中的需求进行开发的,这个功能可能来自日文排版需求。可是经过调查才发现的事实是,开发者完全曲解了 JIS 4051 的本意。在该规范中,定义如下(原文为日文,笔者试译):

136) 连数字:一位以上连续的数字。包括分节用的逗号、空格,以及小数点的圆点。
备注:作为和字处理的全角数字,以及作为西文处理的带有固有宽度的数字除外。
……
139)和字:构成和文(即日文)的汉字、假名、数字、标点以及其他符号。竖排时,还包括全角西文。

虽然没有明确写出,但通过上下文可以看出该规范中定义的「连数字」应该与汉字数字无关。之后的 2012 年万维网联盟(W3C) 以此规范为基础而制定的 《日文排版需求》中在对「连数字」的定义里更是明确了不包括汉字数字。因此,InDesign 口口声声说的「遵守 JIS 规范」只是一个美丽的误会。打开 Adobe 官方的 InDesign 用户指南中文版,其中如此解释道:

连数字用于防止数字断开。此外,该选项根据 JIS 规范处理数字字符串中的标点间距(适用于日文)。……要打开连数字,请从 “段落” 面板菜单或 “控制” 面板菜单中选择 “连数字”。

而通过上述分析,我们可以知道:第一,汉字数字本来就可以断开换行,「连数字」对汉字也进行处理是多此一举;第二,这个功能误解了日本的 JIS 4051 规范,是一个错误的实作;第三,用户指南里声称其「适用于日文」,但实际也作用到了中文上;第四,用户指南让人误解为该功能「需要则开启」,而实际上该功能是默认开启,用户反而必须手动关掉。可以说,这段官方说明漏洞百出,不仅没有说明清楚功能,反而有误导的嫌疑。

与日文用户不同,中国大陆用户极少会实际使用0〜9这些「全角阿拉伯数字」,而普通的所谓「半角数字」在软件里会同西文一起处理而不会断开,因此避免阿拉伯数字断开这个需求完全不需要这个「连数字」的功能,而开启这个功能则是有百害而无一利。让情况雪上加霜的是,Adobe 将这样一个错误的实作设置为「默认开启」,多挖了个陷阱让用户往里跳,而绝大多数用户则是在不知情的情况下落入陷阱而无法自拔。所以笔者在此强烈建议 InDesign 用户修改默认设置,将「连数字」功能关闭,减少意外而不必要的字距调整导致版面失调。

💡小技巧  Adobe InDesign 里有「应用程序默认」和「文档默认」两种默认状态。启动 InDesign 而不打开任何文档,修改设置即是针对整个软件的「应用程序默认」,会影响到之后所有的新建文档。与此相对,如果在打开文档的状态下修改设置,则仅是针对改文档的「文档默认」,而对之后新建的文档没有作用。因此,用户只需要在启动 InDesign 而不打开任何文档的状态下,到「段落」面板的选项菜单里关闭「连数字」选项,即可在今后免除该功能自动启用的困扰。

当然,本例的排版还涉及到了「段落书写器」和「单行书写器」的问题。尽管 Adobe 声称「段落书写器」是更好的算法并将其设为首选项,但依照笔者排版经验还是「单行书写器」更靠谱,因为这样不会将一行的错误字距殃及到其他行。如果本例能使用「单行书写器」,只会影响第五行的排版;而由于默认使用的是「段落书写器」,导致连累到了毫不相关的上一行,整个段落的字距从第四行就开始乱掉。关于书写器的算法逻辑和用法推荐,本系列将另文阐述,在此就不做过多展开了。

在 Adobe CC 中使用「Adobe CJK 段落书写器」和「Adobe CJK 单行书写器」的差异。由于「连数字」打开之后需要调整字距,单行书写器(绿字)将调整量只放到第五行内,拉得大一些,但第四行依然保持「密排」;段落书写器(青色)则会把调整量放到第四、第五行内一起调整,让字距调整量更小一些。

特殊情况特殊处理

如前所述,中文排版的换行不必太在意语义上的「按词换行」,汉字数字也可以换行断开,但这并不是说没有特殊情况。事实上,在实际的媒体工作中,中国有很多报社都需要「专用词管理」,定义一些需要「特殊关照」的词汇并进行维护,确保它们在换行时不会被断开。这些所谓的「专用词」,基本上是重要的专有名词,可以是人名,也可以是国名、地名,而具体的定义则没有固定标准,依照报社、出版社的特例风格和规定而有所不同。

其实,对专有名词进行换行管理的传统,在西文排版里也有惯例。英国英语的权威体例《牛津风格手册》里就指出(原文为英文,笔者试译):

即使不需要连字符,在换行时也应该遵守一些限制:
……
如果可能,不要将地名、(特别是)人名断开。如果无法避免,人名应该从姓和名之间断开,或者从首字母(至少必须要两个)和姓之间断开。不能将姓名与其修饰成分断开。
而在美国,沿用美联社体例风格《休斯顿大学写作体例》在「连字符」一节里也提到:

应避免将人名、专有名词、电话及传真号码,以及电子邮件、网页、街道和邮寄地址断开。

欧美出版社特别注意避免将人名换行,不仅体现了对他人的尊重,更重要的一个功能是可以避免加上连字符 (-) 的姓氏被误认为「复姓」,因为在西方国家中出于婚姻、贵族世袭等各种原因而使用复姓的情况比较常见。而在中文世界,虽然「抬格」式的排版已被废止,但细致的排版依然也会沿袭「人名不断行」的传统。当然,这样的决策肯定会加大排版的复杂度,因此在实际工作中往往只选择一些重要、特殊的专有名词进行处理,而其他专有名词就忽略掉,这就是出版社「专用词」习惯的来源。翻开上世纪七十年代出版的《活字排版工艺》里,我们可以读到:

拣正的毛坯需要注意一下几点

……

(3)有关政治性的词句、领袖姓名、国名等,要特别注意,不能拣错,每拣一组词句时,需要认真默读一遍。领袖名字赶到行末时不要分拆回行,应在上行用衬线加大字行,将领袖名字整个移在下行的行首。

renminribao-171025
feiteng-zhuanyongci

「重要人名不拆行」做法在党政机关报纸排版中非常常见,此图为报纸头版的「报眼」,第一行的字距明显是由于「重要人名不换行」而进行过挤压。(图为 2017 年 10 月 25 日《人民日报》头版)

方正飞腾中的「专用词管理」界面(图片来源:方正飞腾创艺 5.4 使用说明书,2014 年 5 月)

从电子出版的角度来看,通过软件实现这个功能并不困难。但是一些国外厂商的软件,比如 Adobe InDesign 里,无论是文本「不换行」功能,还是结合正则表达式 (GREP) 都需要手动逐个定义所需词汇,而且提高了使用门槛。相对地,土生土长的中国软件——方正飞腾就提供了「专用词管理」功能,在一个界面里就可以很轻松、灵活地实现管理功能,方正公司甚至还为此于 2015 年提交过「专用词不拆行处理方法和装置」的专利申请⁠1。因此方正产品曾占国内出版市场九成市场份额是有其原因的。

诚然,正如本系列文章里多次提到的,正文排版其实是一个妥协的过程。定义越多禁止换行的「专用词」,就会有越多的位置、字距需要调整,就越容易偏离中式网格的秩序。因此这没有简单的对错,要根据具体的体例格式,对优先顺序和程度进行决策。

网络时代

如今的网页和电子书设计中,我们还是推荐尽量遵守 CSS 标准。但是由于各个文种的情况非常复杂,W3C 在《CSS 文本模块》(第三级、工作草案版)截止至本文执笔时依然都没有形成最终稿。其中在第五章「断行和词界」中提到(原文为英文,笔者试译):

在其他一些书写系统(如中文、日文、彝文,以及部分韩文)中,软包围机会⁠2应依照音节界,而非词界。在这些系统里,除去某些字符组合以外,行可以在任意处断开。而且,根据排版体例,这些限制的严格程度会有所不同。CSS 不会完整定义所有的软包围机会,但是会提供一些控制以区别常见的不同做法。

这同样从侧面说明,一般情况下中文没有必要按词断行,包括汉字数字。但是如果针对特殊情况,如果一定要对特殊词汇不换行进行控制,笔者推荐使用 Unicode 的控制字符 U+2060WORD JOINER,简称 WJ,词连接符),这样在字符层面保证特殊词内部不断开,相对来说比其他方法更能保证在不同的环境下的效果。Unicode 自 3.2 版就引入了这个控制字符,其在 HTML 的转义表达为 &⁠#8288;。这个字符在显现时不会占用字宽,读者完全看不见这个字符,不会为排版造成负面影响,但能明确提示用户代理(比如浏览器)禁止在该位置换行。

需要注意的是,Unicode 定义了相当数量的控制字符,用户最好能够按照规定正确使用,比如中文的「特殊词汇不换行」功能里就不推荐使用 U+200DZERO WIDTH JOINER,零宽连接符),因为这个字符原本是为阿拉伯文、天城文等书写系统里单词内字母连写用的。

小结

中文排版中除标点以外的换行位置,一直被认为是任意而不需要控制的。而实际上却有一些人为因素、软件因素会添加多余的换行判定,这是应该避免的;在「不控制」的一般条件下,对特殊情况进行管理即可。

作为「中文排版需求」来说,对于换行机会并没有做出更多的解释,笔者认为应该为各种实作提供一些信息,至少要保证以下几点:

  1. 标点换行:标点避头尾以及禁止分割,这是最重要的部分,会另做讨论;
  2. 阿拉伯数字:阿拉伯数字的内部,以及小数点处禁止断成两行;
  3. 特殊数值单位:百分号、千分号、摄氏度等符号应该禁止与前面的数值断成两行;
  4. 上下标、注释记号:一些单位及各种学科里出现的上下标(如 m⁠2 中的 2 )与前面的字符,以及 ㈠ ㊁ Ⅲ ④ 等脚注、尾注符号与被注释的词之间不应断成两行;
  5. 混排的外文:混排在中文里的外文,应该按照外文习惯,如英文按照英式断词连字(hyphenation)、藏文需要按照藏文的词界进行断行。 对于较长的网址、邮件地址,实际属于西文的字符串,应该实际情况灵活处理,建议在 @ 等符号处断开,不能随意添加连字符;即使断开,行首也不能随意修改大小写。

上述几个需求里,阿拉伯数字和外文的控制,实现方式已经相对成熟,而真正「纯正」的中文排版问题应该放在标点和注释记号上。其实,本文的注释用的上标数字 1、2 与前面的汉字之间就已经插入了「词连接符」,避免注释用的上标数字和其注释词被断成两行。有兴趣的朋友可以尝试改变窗口宽度来测试一下实际效果。

在前述基础原则之上,各个出版社、内容创作机构可以指定内部的书写体例。比如对于汉字数字,有些比较宽松的做法不加控制,因为多位数一般采用阿拉伯数字;而另一些稍微严格的体例则会认为,表示数量、有明确位数的数字,如「三百六十五」断开不会有歧义,但是如果记成「三六五」而又断开则会发生「数量」与「编号」的歧义而应该加以控制。这个问题的实质是「数字用法」的规范问题,因此笔者建议应该先在编辑时在「用字法」层面先做出相关表记规定,再进行排版的风格规定,否则很难两边同时权衡。至于特殊词汇管理,不属于一般排版规则,各个机构内部自行决定、执行就好。过长的网址、邮件地址是最近才出现的新问题,提倡灵活处理而不应该做过多死板限制。总之,搞清楚「有所为有所不为」是制定排版逻辑的基础,在字体排印的相关策略制定时,一定要切记过犹不及。

注:

  1. 中华人民共和国发明专利申请《专用词不拆行处理方法和装置》,申请公布号 CN 104572750 A,申请发布日 2015 年 4 月 29 日,申请人:北大方正集团有限公司,发明人:杨燕菲、梅林、杨雷鸣。↩︎
  2. 软包围机会(soft wrap opportunity):网页盒子容器对内容进行包围时允许断开的点。↩︎
  3. 关联内容

    字谈字畅第 44 期:「峰回路转换行来」

    参考书目与资料

    • R. M. Ritter, The Oxford Style Manual, 2003, Oxford University Press.
    • 曹洪奎,《活字排版工艺》,1979,轻工业出版社
    • 刘源,《现代汉语常用词词频词典》(音序部分),1990,宇航出版社。

尊重原创:关于转载

我们希望在中文环境中建立一种健康的 TrackBack 和链接机制,保证原创,并不影响传播。因此对于译文和原创文章,我们欢迎您在网站上推荐我们的文章,包括文字和图片片段,但不赞成任何形式的全文转载。
参与讨论或通过 TrackBack 推荐:Trackback URL.

5 个相关讨论

  1. 读者
    2018/01/27 at 7:10 am | Permalink

    软包围机会,翻译得好别扭

  2. Eric Q. LIU
    2018/01/27 at 9:34 am | Permalink

    to 读者:
    觉得别扭更多是因为这是术语,读不习惯,而并不是翻译本身的问题。比如这个词的「软」和「软回车」「硬回车」的意思一样,再说网页设计里「盒子模型」这类词的都是一般人觉得怪怪。作为术语,只要内行人都知道是什么,而且没有歧义就够了。

  3. grubstreet
    2018/01/30 at 2:32 pm | Permalink

    西文段尾形成的 “大波浪” 其实并不是好的取向,反而如果形成了太明显的形状还要避免。Jost Hochuli 就提到,段尾要优先做到 “长短长” 的切换,而且这种切换还要带有优雅的韵律和节奏感……这也可以理解,为什么 Hochuli 在排段落的难度比较里面,把 “带有折行的齐头散尾” 排在第一难。

  4. Zhang Qingtian
    2018/02/12 at 11:08 pm | Permalink

    请问“Unicode 的控制字符 U+2060”这个字符在InDesign里怎么输入?

  5. Eric Q. LIU
    2018/02/13 at 10:20 am | Permalink

    To Zhang Qingtian: 在 InDesign 里如果要手动指定某个单词不断开,方法请见 Adobe 官方帮助文件。经测试对西文、中文均有效。

    本文不打算写成 InDesign 教程,请善用 Adobe 官方资源。

一个 Trackback

  1. By 中文换行的学问 – 「加盐 2018」 on 2018/01/27 at 11:37 am

    […] 行行当机不立断 […]

参与讨论

你的Email地址将不会被发布或透漏。 标记*的项目为必填项目。

*
*

作者 / 译者