中英混排手动挡——「为什么我就是能这样娴熟地加上空格呢?」

2014-12-04 22:49:51 +08:00
Dustland  Dustland
有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。与大家共勉之。[1]

如果真正在意 typography,那么汉字与西文之间应该插入一个半角空格。Adobe In Design、Microsoft Word 等对中文与西文混合排版支持较好的软件,都默认增大汉字和西文的间距。[2]

汉学家称这个空白字元为「盘古之白」,因为它劈开了全形字和半形字之间的混沌,增加了文字的 readability。[1]

如果你是一个虔诚的「空格党」,可以使用这个简单的工具,每当 Plain Text 的场景(例如电子邮件与 V2EX 发帖),在所有的汉字与拉丁字母间添加一个空格。如果原本已经手动添加了空格,这个工具并不会在这之间再添加额外的空格。

项目地址: https://dustland.github.io/daft-auto-spacing/
GitHub 地址: https://github.com/Dustland/daft-auto-spacing/

[1]. 為什麼你們就是不能加個空格呢?: https://github.com/vinta/paranoid-auto-spacing
[2]. 中英文混排时中文与英文之间是否要有空格? http://www.zhihu.com/question/19587406/answer/12298128
[3]. text-autospace.js: https://github.com/mastermay/text-autospace.js
9987 次点击
所在节点   分享创造  分享创造
33 条回复
XerWandeRer
XerWandeRer
2014-12-05 10:56:19 +08:00
@zhouzm 我只是引用了 DesiringClick 上讨论的原文,这个网站真的很不错,不知道为什么近来已经打不开了。
jedicxl
jedicxl
2014-12-05 11:25:59 +08:00
文章的立论来源实在是。。。
nicai000
nicai000
2014-12-05 11:28:01 +08:00
不加, 太难看
cdfmr
cdfmr
2014-12-05 14:02:28 +08:00
以前加空格,现在不加。中英文混排时,中文字符与相邻的英文字符间确实要留一定宽度的“空白”,但不是“空格”,这个“空白”应该由排版软件或者浏览器渲染引擎进行优化,而不是用空格符代替。
soolby
soolby
2014-12-05 14:02:52 +08:00
搜狗输入法也有 中英文中间加入空格选项
jakwings
jakwings
2014-12-05 14:08:58 +08:00
不喜欢自动,真正的自动应该交给排版工具来干。我见过真正对此挑剔的程序员,连等宽界面下都要强迫自己加上一个半角空格,因为他已经对等宽排版绝望了,于是他在非等宽排版环境下也坚持使用「半角空格」,声称那才是(同时在两种环境下)最完美的留白技术。
Daniel65536
Daniel65536
2014-12-05 14:11:25 +08:00
@JamesRuan InDesign 的默认设置是 1/4 的全角空格宽度(遵从 JIS),也就是约等于一个半角空格。你说的 1/4 空格指的应该就是ID的默认设置,不过你弄混淆空格的全角半角了
pockry
pockry
2014-12-05 14:21:33 +08:00
我认为加空格不对,因为它违反了内容与样式分离的原则,中英文间距属于样式的范畴,但空格是内容,是可被读取为字符的。Word里面可以调整中英文间距,用Javascript也完全可以查找文章中的中英文并给中英文加上间距,说明这是可自动化的,我们只是处在一个对文字排版支持不完善的时代,就像低分辨率下点阵字体的渲染一样,directwrite基本放弃了小字体尺寸的点阵字体渲染,我们现在当然会有不爽,但过了这阵子就好了。

加空格是同样的道理,当HTML标准和浏览器支持更多的文字排版样式后,中英文间距根本不是个问题。

最后,很多时候这种情况是由于操作系统/浏览器内核引擎都是国外人开发的缘故,汉字的支持对他们来说是edge case,如果太麻烦就会放弃。只有我们用汉字的人去研究如何更好的渲染、排版,向世界贡献出我们的技术,汉字的显示才会真正完善。
JamesRuan
JamesRuan
2014-12-05 14:33:55 +08:00
@Daniel65536
Unicode里表示空格的字符有很多: http://www.alanwood.net/unicode/general_punctuation.html
姑且认为所谓的半角空格是EN SPACE,全角空格是EM SPACE。

英文字符的词间空格推荐使用0.25em的空格,也就是FOUR-PER-EM SPACE。

事实上, 纯英文的排版环境就很复杂,比如说要求在首字母缩写前后和数字与英文混排前后加HAIR SPACE。
JamesRuan
JamesRuan
2014-12-05 14:36:27 +08:00
@pockry 同意。内容和样式分离不清,虽然是简单的在不支持混排的环境中改善排版的方式,但一旦遇到支持的环境就弄巧成拙了。
AthensBird
AthensBird
2014-12-05 19:18:15 +08:00
加上空格的确易读美观一些
zzColin
zzColin
2014-12-06 03:18:50 +08:00
@pockry 怎么解释英文标点符号都要加空格……

事实上我喜欢加空格并不主要是因为好看问题——因为英文单词是用空格定界的,那我的理解就是,一个英文单词要和同一行里面之前和之后的单词(或者类似概念的东西)隔开,就需要有一个空格,不论这些内容是用何种文字书写。

我其实真正看不惯的是中文的全角标点符号——为什么专业排版一直都在用所谓的“开明式”,却不能像日语那样,在非等宽的字体里面就做成这个样子?所以在碰到全角标点符号的时候,我不得不妥协成不加空格了。
zzColin
zzColin
2014-12-06 03:33:55 +08:00
@pockry 补充: 暂且不谈标点符号问题的话, 英文的规定是单词需要用空格定界, 理论上应该并未默认单词与非拉丁字符之间可以省掉空格; 而中文的规定是汉字之间不能空格, 并没有规定汉字和非汉字之间的情况, 所以我认为, 不加空格的话会违反英文的排版规则, 而加上空格后, 中英文两边都不相冲。

话说对于标点符号, 跟英语这边的情况放一起看的话, 也许我有必要考虑除了中文特定标点外, 全部用半角 + 空格 (这里我已经这样用了); 记得 Unicode 最初就是把全角标点当成兼容字符来看待的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/151607

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX