[更新] iOS 13 beta 5 里,手动添加的空格又不会被缩回成 1/8em 了。
❧
很多人都发现,在目前处于测试版的 iOS 13 里,iOS 的排版引擎会自动为字母/数字和汉字之间加上大约 1/8em 的空间。
不知何时开始,手动在汉字和字母间加半角空格竟然成了一种骄傲。在中西混排时,汉字和字母之间的确应留有一定空间,方能在视觉上达致平衡。但有识之士早已说明,这个空间应由排版引擎留出,而非由写作者手动添加。这不仅因为半角空格的宽度未必(「未必」是很宽容的措辞)是最合适的,还有语义上的理由:在中文里,我能想到的用空格表达某种语义的例子,只有在神和尊称前留空格这一种。汉字和字母之间的空间属于平面设计范畴,它并不表达任何意思,因此不应该由写作者负责。
六月初试用了 iOS 13 beta 后,我说:
是否手动加空格成了难题。加的话,在 iOS 13 效果不好,不加的话在几乎所有其它系统效果不好。
下面就是在当时的 iOS 13 beta 上的测试效果。第二段就是排版引擎自动加了约 1/8em 空间的版本。
一旦看过了正确的宽度,手动留出的半角空格就显得太宽。另一方面,若为了在 iOS 13 上取得好效果而不留空格,在不支持此功能的一切系统上就会变成这样:
从不知第几个 beta 版开始,这个两难消失了。现在就算妳手动加半角空格,iOS 的排版引擎也会把那个空间缩小成正确的宽度。也就是说,不论是否手动加空格,最终显示的效果都是约 1/8em 的空间:

正义会迟到,但不会不到。
(微软的 Word 很早以前就这么做了,但那是一个「在电脑上写,打印出来读」的时代——妳把 Word 里的文字拷贝到别处就没有正确的效果了。在如今这个电脑上写、电脑上看的时代,iOS 是第一个在系统全局正确处理汉字和字母间空间的系统。)
尽管 iOS 13 中的中英字符之间的 1 个半角空格会被自动缩小为 1/8em 的空白,但是删除的时候它仍会占用 1 次删除动作。而如果想在 iOS 13 中的中英字符间强行添加 1 个空格,则需要 2 次空格输入,也就是说 iOS 13 吞掉了我的 1 个空格,这段文本在非 iOS 13 (比如 iOS 12) 中会被显示为 2 个空格。iOS 13 做到了将中英字符间的 0 个或 1 个半角空格统一显示为 1/8em 的空白,但是在排版显示上和实际计算机内存占用上却出现了不统一的情况,这种不统一可能会给基于 iOS 13 的编程带来些许麻烦。