漢字與英文、數字的間距怎麼處理?
「中英間距」,之前有知名部落客Vinta稱之為「盤古之白」¹,詳細點說,應該稱為「『漢字』與『西文單字』、『阿拉伯數字』的間距」。
這是一項來自活字排版時代的處理方式,如上圖在日文排版需求(JLREQ)中的指示:
「日文(日文漢字與假名)」和「歐文」、「阿拉伯數字」間,需要加上四分アキ,即1/4字的間隔。²
這樣的處理方式可以凸顯英文與數字,避免和漢字接得太近以至於難以閱讀。日文有著漢字與假名,在排版上比中文來得「透氣」都需要這麼處理,中文全部使用漢字,更需要這麼處理。
因為這項處理相當重要,所以從活字排版以來,經歷照相排版到電腦排版,都一直保留下來。
然而,為什麼會有「加個空白」的呼籲?而到底作者或者編輯在處理文字時,該不該手動加入空白?這是這篇文章探討的主題。
微軟Word中的「東亞語言功能」
儘管這是一項常見的印刷處理手段,但我認為更多人知道中文與英文、數字間要加間距,是來自微軟Word的功能。
1990年代個人電腦在全球快速普及,當時為了搶東亞市場,文字處理軟體(Word Processor)與桌面排版軟體(Desktop Publshing)都很努力地實裝了中文與日文的排版樣式以求受到採用。Word很早就在Windows平台上的Word實作了「東亞語言功能」³,包括:
- 文字直排;
- Ruby文字(日文)與注音符號(繁體中文);
- 日文、中文與英文、數字間的間距。
隨著Windows與Office當年的高市佔率,這些功能也被當作理所當然。
但實際上,如果你是Office for Mac的使用者,就會發現沒那麼「理所當然」了。一路以來對於這些功能的支援都不行,直到Office 2016,讓Windows與Mac版本統合後,這些功能才算完整。
Word Processor和Text Editor的差異
有點考古過頭了,回題。
在90年代,美國的大型軟體公司向日本的印刷排版規則⁴取經,打造出這些軟體,來符合需求,打造軟體。雖然一直有在改進,但是時代也逐漸改變,從桌面應用軟體慢慢轉移到網頁(Web)上,直到2010年前後,隨著HTML 5、CSS 3和電子書規格EPUB 3的制定,網頁標準才逐漸支援這些功能;而且直到現在還尚未完成,中英間距就是未完成的例子。
所以在網頁上,漢字和英文、數字之間不會加入空白,才有了加個空白的倡議。
然而,我個人極不推薦這麼做。
讓我再繞一圈來說明。
電腦上的寫作工具分為兩種,一種是Word Processor,一種是Text Editor,各舉幾個例子:
- Word Processor:微軟Word、Apple的Pages、Libre Office的Writer,macOS內建的「文字編輯」、Windows內建的「小作家」、Google文件等。
- Text Editor:Windows內建的「記事本」、iA Writer等Markdown編輯程式、Sublime Text、NotePad++等。
兩者的差別在於:
- Text Editor處理純文字「內容」、不處理「樣式」。用來寫的內容主要供機器讀取使用。
- Word Processor處理文字也處理樣式,還可以做到輸出。用來寫的內容主要(印刷或者輸出檔案)供人讀。
當文字的數位內容以網頁技術為主時,就會把「樣式」交給網頁的CSS來進行設計,內容則需要提供結構完整的HTML,所以寫作者想要表現的樣式,和最終呈現的樣式不見得一致。
Word也好、Pages也好,各種Word Processor都想要跨界來輸出HTML,然後希望能以文件一樣的方式呈現,然而這些功能最終產出的結果,往往會造成很大的問題(從工程師的角度來看就是一頓咒罵)。
這幾年越來越多的人改用Text Editor來寫作,在寫作時看不到間距,覺得奇怪;加上CSS尚未支援,最終呈現也沒有間距,於是作為「折衷」的處理方式,就是手動在漢字與英文、數字間加入空格了。
我個人不贊成這麼做的理由有:
- 手動加入難免有誤,下面註釋2中舉出許多例外狀況,人工處理無法做到完善,不如使用程式來處理。
- 在目前網頁的呈現上,這些空白容易造成斷行等處理上的呈現意外。
- 未來CSS完成時,套用在既有的內容上可能會有問題。
那麼,如果不手動加入空白,我們還要等多久?
CSS目前的進度
大約在2010年,CSS 3在制定Text Module Level 3時,就提出了一項 text-spacing的特性,並且有兩個值’ideographic-alpha’和’ideographic-numeric’來自動為漢字與英文、數字加入空白。
但是當時同步在實作的各種排版需求眾多,這一項一再推延,目前放到了CSS Text Module Level 4去了。
到了2019年時,Apple在iOS 13與macOS Catalina中,為程式內的中文與英文、數字加入了1/8字的間距。而同一年W3C的會議上,也提案使用 text-spacing: auto 來將這間距套用到網頁內容上。
不過到現在為止,這項功能還尚未實作。目前正在考量的幾點為:
- text-spacing這個特性,在CSS Text Module中有著太多功能了,要不要專門為中日/英數間距另外建立一個新特性?
- ’ideographic-alpha’和’ideographic-numeric這兩個值是否要變成特性,而可以自行輸入值,如印刷標準的1/4em、Apple實作的1/8em、或者其他像是1/6em。
- 當這項CSS被實作出來時,預設應該為開啟還是關閉?
對於期待這項功能已久的排版愛好者而言,當然希望這項功能預設為「開啟」。但是需要考量到”Don’t Break the Web”原則——就是新的功能需要考量到既有的內容,應該預設為「關閉」。不然可能會破壞固定大小的版面設計。 - 對於已經手動添加空白的內容怎麼對應?
是否該多一個值以處理這樣的狀況?
總之,今年針對這項功能,CSS工作小組在熱烈討論。從開始討論到現在已經快要十年了,這項功能還沒實作。只是”Better late than never”,遲來總比不來好。
結論
作為台灣少數參與W3C推動中文排版相關標準化的一員,我當然希望CSS能夠早日拍板定案,讓瀏覽器方能夠實作。就算是最初階的實作,也比沒有好。
同時,我個人強烈反對手動加入空白,在Word裡程式會自動處理、在排版軟體如InDesign中由設計者自行設定。網頁上CSS還沒有好,歡迎使用各種程式手段處理,就是不要手動加入空白。
追記:2013/12,Google Chrome自120版起測試text-autospace的對應
¹:實際上沒有漢學家如此稱呼,真的沒有。
²:然而還有很多例外,如文中所提,這些例外也應用在中文排版上:
- 歐文與阿拉伯數字位於行首,前面不加空白;歐文與阿拉伯數字位於行末,後面不加空白。
- 在「逗號」及「結束括弧」的後面,以及「開始括弧」的前面,原則上為1/2空白(譯注:即全形原有的空白,不需另外加)。
- 歐文與阿拉伯數字若接在「句點」、「逗號」以及「結束括弧」的前面,以及「開始括弧」的後面,原則上不加空白(ベタ組即緊排)。
³:我不確定微軟是在Office 95還是Office 97或者Office 2000加入這些支援,如果你還記得,歡迎加註來告知大家。
⁴:當年主要的參考文件是是日本工業標準「JIS X 4051:1993 日本語文書の行組版方法」。