如何解決漢歐間距
在文字編輯器或排版軟體裡用 regular expression(正規表示式,regex)在搜尋與取代裡,找出所有相鄰或有一個空格間隔的漢字與拉丁字元:
([a-zA-Z0-9])(?! )\h?([一-龥])
另一個方向:
([一-龥])(?! )\h?([a-zA-Z0-9])
[a-zA-Z0-9]是搜尋所有拉丁與數字字元。- 後面的
[一-龥]是所有漢字字元。 ()是把包起來的值變成變數(但(?!)不是)。這樣才可以在「取代」的部分回來取用。\h指的是非換行的空白字元,包括 tab。我其實不想找 tab 但找不到對應的尋找方法(除非直接用 Unicode 去找)。後面的?指的是這個空白字元可以有也可以沒有。(?! )是指在後面的\h?前面不要有 tab。
然後在「取代為」輸入框裡:
\1 \2或者
$1 $2\1或$1代表取用變數一,也就是前面用()框起來的第一個變數。
如此一來,就可以找到文中所有漢歐間距的存在,並且直接插入或替換喜歡的空白字元。我自己是喜歡用 thin space( ),大概是 1/6 em 到 1/5 em 寬。它比一般空白(通常是 1/4 em 寬)窄,不會讓漢字句中出現太大的間隔而又斷裂感,但也還是跟完全沒有間隔不一樣。
我喜歡使用特殊空白字元來處理漢歐間距,因為首先有無間隔是關於語義的,拉丁書寫系統裡的字就是用間隔來表示字(詞)的開始與結束。今天如果我要用漢歐混合的書寫方式來表達一個詞,比如說「耶su」,那它就不適合加上間隔。
另一個原因是,使用字元的解決方案是支援度最廣的,並且不用針對每個排版環境去重新設定。它甚至可以從最初打字的時候就加進去,一直到最後網頁或排版軟體都留在裡面不動。更不用說直接解決了不同瀏覽器的排版差異。
雖然常常說「不要用空白來排版」什麼的,但各種特殊空白字元本來也就是 typography 的一部分。尤其是處理語義上的字元間距的時候,用空白字元來處理是最合適的。