中西文混排时汉字与拉丁字母之间是否要有空格?

看到不少网站在汉字与拉丁字母之间都有空格,“Windows 操作系统”, 但是大多数国内网站都是拉丁字母紧挨着汉字写,如“Windows操作系统”, …
关注者
1,435
被浏览
603,684

38 个回答

至今没有规范,只有习惯。

Adobe InDesign、Microsoft Word 等对中文与西文(这里用「西文」来泛指用空格分词的外文)混合排版支持较好的软件,都默认增大汉字和西文的间距。InDesign 的默认设置是 1/4 的全角空格宽度(遵从 JIS),也就是约等于一个半角空格。

但大多数情况下我们没有这样专业排版软件的支持,只能手动控制。这种时候,比较在意文字设计(typography,又译「字体排印」)的团队或个人往往都在操作系统界面或网站中的汉字和西文之间插入一个半角空格。

包括许多的

  • 公司:苹果、微软、Google、Adobe……
  • 团队:Apple4us、Type is Beautiful、爱范儿……
  • 个人:@刘昕、@江疆……

但这些确实是绝对的少数。大多数人都不/不喜欢/不愿意在汉字和西文之间加空格。毕竟加空格要考虑的东西太多了,而且加空格也会带来一些问题(见后面给出的在 public-html-ig-zh@w3.org 进行的讨论)。

总的来说,「空格派」的习惯就是在汉字和西文之间留一个半角空格。但因为在中西文关系上有一些让人不好决定的特例,他们使用空格的方式有一些变数。

根据一般都「加」空格到一般「不加」空格的顺序,大致可以排出来:

  • 内部有空格的西文短语(iPod touch)
  • 独立的西文单词(iPhone)
  • 全大写字母的西文缩写(HTML)
  • 单个的西文字母(X)
  • 阿拉伯数字(7)和西文标点(/)

西文和汉字和标点三者相遇的时候问题更复杂(汗……「三体」),大家的习惯也有差异。

- - -

以上是现状,下面是个人观点:

中文与西文混排时,不一定要有空格字符,但一定要有间距。

使用专业排版软件时,交由软件处理间距问题(Adobe Creative Suite 把这个事归入「标点挤压」);纯文本写作时,插入半角空格。具体在上面列出的那五种情况下合适加空格,何时不加,至今还没有什么共识。

关注文字设计的朋友其实可以编写自己的 Manual of Style,最终或许能在百家争鸣中诞生中文互联网的一份事实标准。

我的空格习惯基本上是受

@刘昕

影响而建立的。因为这篇日志:

《中文 Web 阅读体验》:

livid.cn/doc_view.php?

(原站已关闭,这里是存档:

中文 Web 阅读体验

在看过这篇日志后,我意识到、并至今坚定维护着空格的必要性。刘昕在文中的这句话解释了基本的空格使用规则:

中文正文及标题中出现的英文及数字应该使用半角方式输入,并且在左右各留一个半角空格。如果这些这些半角英文及数字的左边或者右边紧接着任何的中文全角括号或者其他标点符号的话,则不需要加入半角空格。

关于加空格的意义和必要性。之前和 public-html-ig-zh@w3.org 的朋友比较深入地讨论过这个问题,有兴趣的话可以去查看存档。请在以下两个存档页中搜索「中英文字中的間隔」这个标题:

lists.w3.org/Archives/Plists.w3.org/Archives/P

- - -

补充:

之所以我坚持要在混排中加空格,主要是我觉得两种文字的交界处应该是个尽量平滑的过渡,尽量满足双方文字的需求,并且让文本的节奏尽量平稳。

易读与否的事情,相比上面提到的这些语言和文字的特性,是后生的,而不是基础。

@千鸟 提到的 margin 法值得关注。在上面给出的那个 public-html-ig-zh@w3.org 讨论中也研究了这个方案。尤其是当我们把混排做成这样时(类似维基百科的做法),兼顾了语义和样式:

编写自己的<span lang="en">Manual of Style</span>,最终或许能……

只是这个高级的办法也带来了局限。比如控制到底哪边有间距、哪边没有(上面那个例子就只该左边有)比较麻烦(当然,用 JavaScript 肯定也可以搞定),比如会影响文本设定为 justify 之后的空格伸缩。但这的确是个值得考虑的方案,和空格法对立。

另外,其实 IE 很早(早于 IE6)就提供了一个 CSS 属性 text-autospace 来在 CJK 字符和西文之间增大间距(就像 Office Word 的效果一样),但毕竟是 IE 专有的,几乎没人用。

而 CSS 的 Text Level 4 中已经定义了 text-spacing 属性,但这离实际应用还比较远。

我认为这个问题应该换种说法,才更容易得到确定的答案:

任何两个字符之间,都需要「空隙」。

就像西文 typography 中已经相对成熟的 kerning,中文也需要同样的东西。很自然地,中文字符与西文字符交替出现的时候,也需要合适的 kerning。然而问题是目前的计算机字体,在这方面的设计很差。在网页的文本中,利用手工添加空格的方式,一定程度上,可以起到调整中英文字偶之间的空隙,然而这终究是个临时的「折衷」办法。类似的「空格折衷」,在机械打字机普及的时代,有更多例子。

我不反对暂时性地使用空格来调整字符之间的空隙(在明显可提升可读性时,很支持),但我非常反对将此列入规范或标准之类的东西。

西文 typography 里有句话:The space bar is not a design tool.

(在 Ellen Lupton 的著作 "Thinking with Type" [1] 里就提到了。)

另外,还有篇文章可供扩展阅读 [2]。

[1] thinkingwithtype.com/

[2] hungermtn.org/the-space

----

基于梁君的评论,我感觉可能上文表述不够充分,故作补充。

我总的观点:不反对现有技术条件下手工加空格,但反对规范化或标准化之类。

1. 先看一对例句

(1) 在中文句子里,出现嵌入English Words的情况。

(2) 在中文句子里,出现嵌入“English Words”的情况。

由第 (2) 句可见,通过合理运用引号隔离,在现有字体的设计下,已能避免中英文粘连时过窄的间距,这不是行文内容配比的概率性问题。如果字体的设计足够合理(有合适的 kerning),使用第 (1) 句的写法,也一样能保证视觉上的舒适。

2. 关于分词

西文等某些文字中,空格起分词作用,这样的“空格(空隙)”,的确适合由写作者来主动加入。而现代汉语则是以选择不易产生歧义的表述方式来“隐性分词”的。

例:

(1) 写小说 - > 写|小说

(2) 写小说 - > 写小|说

一般,不会将“写小说”误读为第 (2) 种分词——一个名叫“写小”的人在说话;更不必写成“写 小说”。

事实上,我们也本应避免将“日”和“月”写得太靠近而被误读为“明”(虽然它会很丑陋)——幸而,目前的字体设计已能良好地帮助我们避免了。英文单词嵌入到中文时,首先几乎不会产生分词障碍;而类比“日月”,中英文交替出现时,也应通过字体设计等其他“自动化技术”来避免视觉的干扰,乃至提高视觉美观性。

3. 行文“节奏”

对于日常的应用文体,中文写作一般仅通过分段来控制正文的行文节奏;在段落内,无需手工换行(软件自动化或后续文字设计师会解决这一问题)。而手工添加空格来控制节奏,更不需要。

相对地,现代中文诗中,作者常会在一个段落内,通过手工换行,来表现行文的节奏(且后续的文字设计师或软件,无权随意改动这些分行设定)。如果有类似地特殊写作需求,则作者主动添加空格的做法自然可取——但这不在本题讨论范围之内。

中英文粘连时所加入的空格,更大的作用是“视觉美化”,而非控制节奏。这样的空格,正是类似在机械打字机时代,打字员在段前或句末手工所添加的空格。在自动化技术还不完善时(例如目前的网页显示等),可以适当手工操作来弥补;但不应建立相关行文准则。