漢字與英文、數字的間距怎麼處理?

Bobby Tung
Apr 21, 2022

--

3.2.6 Handling of Western Text in Japanese Text using Proportional Western Fonts

「中英間距」,之前有知名部落客Vinta稱之為「盤古之白」¹,詳細點說,應該稱為「『漢字』與『西文單字』、『阿拉伯數字』的間距」。

這是一項來自活字排版時代的處理方式,如上圖在日文排版需求(JLREQ)中的指示:

「日文(日文漢字與假名)」和「歐文」、「阿拉伯數字」間,需要加上四分アキ,即1/4字的間隔。²

這樣的處理方式可以凸顯英文與數字,避免和漢字接得太近以至於難以閱讀。日文有著漢字與假名,在排版上比中文來得「透氣」都需要這麼處理,中文全部使用漢字,更需要這麼處理。

因為這項處理相當重要,所以從活字排版以來,經歷照相排版到電腦排版,都一直保留下來。

然而,為什麼會有「加個空白」的呼籲?而到底作者或者編輯在處理文字時,該不該手動加入空白?這是這篇文章探討的主題。

微軟Word中的「東亞語言功能」

最新版的Office 365 Word中,中文和英文、數字間距設定位於「段落」中的「中文印刷樣式」裡。

儘管這是一項常見的印刷處理手段,但我認為更多人知道中文與英文、數字間要加間距,是來自微軟Word的功能。

1990年代個人電腦在全球快速普及,當時為了搶東亞市場,文字處理軟體(Word Processor)與桌面排版軟體(Desktop Publshing)都很努力地實裝了中文與日文的排版樣式以求受到採用。Word很早就在Windows平台上的Word實作了「東亞語言功能」³,包括:

  • 文字直排;
  • Ruby文字(日文)與注音符號(繁體中文);
  • 日文、中文與英文、數字間的間距。

隨著Windows與Office當年的高市佔率,這些功能也被當作理所當然。

在Word中開啟自動調整間距
關閉Word中的自動調整間距

但實際上,如果你是Office for Mac的使用者,就會發現沒那麼「理所當然」了。一路以來對於這些功能的支援都不行,直到Office 2016,讓Windows與Mac版本統合後,這些功能才算完整。

儘管說完整,像是注音標註這種與系統層(DirectWrite)綁得較緊的功能,到了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尚未支援,最終呈現也沒有間距,於是作為「折衷」的處理方式,就是手動在漢字與英文、數字間加入空格了。

我個人不贊成這麼做的理由有:

  1. 手動加入難免有誤,下面註釋2中舉出許多例外狀況,人工處理無法做到完善,不如使用程式來處理。
  2. 在目前網頁的呈現上,這些空白容易造成斷行等處理上的呈現意外
  3. 未來CSS完成時,套用在既有的內容上可能會有問題

那麼,如果不手動加入空白,我們還要等多久?

CSS目前的進度

8.4. Character Class Spacing: the text-spacing property

大約在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 來將這間距套用到網頁內容上。

不過到現在為止,這項功能還尚未實作。目前正在考量的幾點為:

  1. text-spacing這個特性,在CSS Text Module中有著太多功能了,要不要專門為中日/英數間距另外建立一個新特性
  2. ’ideographic-alpha’和’ideographic-numeric這兩個值是否要變成特性,而可以自行輸入值,如印刷標準的1/4em、Apple實作的1/8em、或者其他像是1/6em。
  3. 當這項CSS被實作出來時,預設應該為開啟還是關閉
    對於期待這項功能已久的排版愛好者而言,當然希望這項功能預設為「開啟」。但是需要考量到”Don’t Break the Web”原則——就是新的功能需要考量到既有的內容,應該預設為「關閉」。不然可能會破壞固定大小的版面設計。
  4. 對於已經手動添加空白的內容怎麼對應
    是否該多一個值以處理這樣的狀況?

總之,今年針對這項功能,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 日本語文書の行組版方法」。

--

--

Bobby Tung
Bobby Tung

Written by Bobby Tung

W3C i18n invited expert, editor of "Requirements for Chinese Text Layout" (CLREQ), Evangelist. I provide consultancy of digital publishing in Taiwan.

No responses yet