由 iOS 13 beta 中的 1/8 em——為什麼中西文之間的空格可以是中西混用的必然

purespaceblackdotpng
·
·
IPFS
·

本文原载 telegra.ph 于二〇一九年八月一日。




Requirements for Chinese Text Layout(中文排版需求):

3.2.2 Mixed Text Composition in Horizontal Writing Mode 橫排的中、西文混排配置
In horizontal writing mode, the basic approach uses proportional fonts to represent Western text and uses proportional or monospace fonts for European numerals. In principle, there is tracking or spacing between an adjacent Han character and a Western character of up to one quarter of a Han character width, except at the line start or end.
橫排時,西文使用比例字體;阿拉伯數字則常用比例字體或等寬字體。原則上,漢字與西文字母、數字間使用不多於四分之一個漢字寬的字距或空白。但西文出現在行頭或行尾時,則毋須加入空白。
NOTE
Another approach is to use a Western word space (U+0020 SPACE), in which case the width depends on the font in use.
或可使用西文詞間空格(U+0020 SPACE [ ],其寬度隨不同字體有所變化)。


iOS 13 Developer beta 4(Public beta 3) 在實現中文與半字寬字母或部分半字寬字符之間插入據說是 1/8 em 寬度的空白時有很多細節處理得混亂又粗暴,但有些事情即使你溫柔了也沒用。

iOS 13 Developer beta 4(Public beta 3) 在日文與一些半字寬字母或部分半字寬字符之間也插入了這一空白。雖然筆者見過日本人在 Twitter 上實踐將這一空白改爲手動插入的一個半角空格——這當然是好的實踐。但日文書寫系統本來就不全是漢字,日文排版需求裏也沒有要求過這一空白。據我數年前至今的觀察,蘋果自己在日本的官網(apple.com/jp)都把英文產品名和漢字假名排得親密無間。用算法區別中文和日文文本不說做不做得好,是不是太超過了?引入了什麼語境憑什麼要一個算法替我決定不可?

請看這句話(筆者在中文和半字寬字母、數字和符號中間手動加了空格):

「5G 移動通訊技術」和「在 5 GHz 頻帶提供高速無線局域網的 IEEE 802.11ac 協議」中的「5」含義不同。

在 iOS 13 Developer beta 4(Public beta 3)上它看起來是這樣:

中文和半字寬字母、數字和符號之間手動添加的詞間空格寬度縮回 1/8 em,但英文與英文之間、數字與英文單位之間的空格保持原樣

更新:iOS 13 Developer beta 5 和 iOS 13 Public beta 4 不會再把手動添加的空格縮成 1/8 em。前者來自李如一,後者筆者親自測試。本文結論不變。

這就導致如果手動插入空格,則無法直接辨識那之間究竟有沒有空格,需要試着刪除來看看是刪去了空格(光標位置無變化)還是刪去了前一個字符(字符消失)。所谓「排版引擎」裏居然可能有看不見(指不占任何地方)的字符,這已經相當 creepy 了。當然,倘若習慣了在中文與半字寬字母或部分半字寬字符之間手動插入半角空格,這個習慣改掉便是,不必糾結到底有沒有插入空格了。但不應如此,不像李如一說的那樣,空格有語義,空格本身就是語義——不僅僅在英文裏作爲詞間空格——不是在提倡在中文中使用詞間空格,這不是本文的主題。

既然說空格有語義,也就是說 iOS 13 beta 在其認爲適當的位置拓寬和壓縮的那些空白也剝奪了一些人利用沒有空格的語義跨語言造詞的權利——將 1 個空格和 0 個空格一視同仁。蘋果不也用能輸入聲調的中文拼音輸入法給不會漢字的中國人賦權了嗎?有誰會意識到自己居然有這樣兩項權利?


看多了專業書籍或者習慣了手動插入空格,覺得 1/8 em 寬空白的寬度不夠所以應該改成 1/4 甚至一半?空白的寬度從來就不是重點,重點是能否認定一個固定的寬度就是標準。顯然不能。這就是這個實現的問題所在。既然開始在乎不同書寫系統之間文字的間距,唯一合適的做法就是把確認這個間距的機會交給每個用戶。iOS 13 beta 這種粗暴斷不應被接受,也絕不是李如一所謂「正義」和「正確」。


給予每種語言相同的權重(文化自信的必要條件,非本文重點)從尊重每種語言文字的書寫習慣開始。若暫且認爲中文不需要具有李如一所謂「語義」的詞間空格,則不在中文和中文之間寫空格就是尊重中文書寫習慣。

有一個Windows Update可用

會被空格分爲

有一個Windows

Update可用

之類的實用層面的低級原因無足輕重。模糊了語言邊界的文本的例子不勝枚舉,我不能容忍作爲句子成分的英文被特殊對待。

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!