許立衡的個人網站

如何解決漢歐間距

在文字編輯器或排版軟體裡用 regular expression(正規表示式,regex)在搜尋與取代裡,找出所有相鄰或有一個空格間隔的漢字與拉丁字元:

([a-zA-Z0-9])(?!\t)\h?([一-龥])

另一個方向:

([一-龥])(?!\t)\h?([a-zA-Z0-9])

然後在「取代為」輸入框裡:

\1 \2

或者

$1 $2

如此一來,就可以找到文中所有漢歐間距的存在,並且直接插入或替換喜歡的空白字元。我自己是喜歡用 thin space(),大概是 1/6 em 到 1/5 em 寬。它比一般空白(通常是 1/4 em 寬)窄,不會讓漢字句中出現太大的間隔而又斷裂感,但也還是跟完全沒有間隔不一樣。

我喜歡使用特殊空白字元來處理漢歐間距,因為首先有無間隔是關於語義的,拉丁書寫系統裡的字就是用間隔來表示字(詞)的開始與結束。今天如果我要用漢歐混合的書寫方式來表達一個詞,比如說「耶su」,那它就不適合加上間隔。

另一個原因是,使用字元的解決方案是支援度最廣的,並且不用針對每個排版環境去重新設定。它甚至可以從最初打字的時候就加進去,一直到最後網頁或排版軟體都留在裡面不動。更不用說直接解決了不同瀏覽器的排版差異。

雖然常常說「不要用空白來排版」什麼的,但各種特殊空白字元本來也就是 typography 的一部分。尤其是處理語義上的字元間距的時候,用空白字元來處理是最合適的。