東亞寬度

傳統上,東亞編碼字集(如Big5、Shift_JIS、GB等)受限於技術限制,將單位元組文字視為半形,雙位元組文字一律設計為全形。此一特性不只影響到字型外觀寬度,也影響文字編輯器、排版軟體的寬度認定(例如移動1個中文字,邏輯位置會視為移動2個字)。

由於可能在許多情形下,CJK字型、CJK處理環境還是需要顧慮傳統寬度習慣,故Unicode定義了每個字的東亞寬度資訊來描述此資訊。

東亞寬度的值與定義

全名定義說明
FFullwidth全形具有 wide 相容分解映射的相容文字,文字名稱包含 FULLWIDTH 字樣。即一般說的全形英數字等。
HHalfwidth半形具有 narrow 相容分解映射的相容文字,文字名稱包含 HALFWIDTH 字樣。即一般說的半形假名等。
WWide上述以外的文字,在既有東亞編碼一般都以全形處理的文字。如漢字、假名、注音符號,以及東亞特有的標點符號等。
NaNarrow上述以外的文字,在既有東亞編碼一般都以半形處理,且在Unicode中存在有對應的全形文字者,如半形英數字。
AAmbiguous模稜兩可根據文脈環境寬度不同的文字。在東亞排版與非東亞排版都會使用到,傳統上在東亞排版使用全形顯示。如希臘字母、西里爾字母等。
NNeutral中立不屬於上面任何一者的文字,一般不會出現在東亞排版中,未收錄於任何傳統東亞編碼。並非半形也並非全形。如阿拉伯文等。

建議處理方式

UAX#11建議以下述方式來解釋、處理這些文字:

於東亞文脈環境於非東亞文脈環境
Na / N以半形處理。以半形處理。
W / F以全形處理。(不會出現於非東亞文脈)
H以半形處理。(不會出現於非東亞文脈)
A以全形處理。以半形處理。

補充說明

模稜兩可(A)的文字

因為傳統技術限制,超過ASCII範圍的文字,在東亞編碼中只能用全形處理。像是希臘字母,都是全形形式,也未區分全形與半形。

此類文字收錄至Unicode後,因為原規格並未區別全半形,所以在Unicode也不會對全半形各自編碼,統合為一字。但在東亞排版環境該視為全形還是半形,就容易引起困擾。例如,圈號 U+25CF 如果不是全形,在BBS等排版上就可能造成整個畫面錯位、或是游標跑錯位置。

在UAX#11中,這些文字均被標示為A(模稜兩可)。建議上,在東亞排版環境中仍然以全形處理。


但因為排版的進步,傳統環境逐漸式微,前述BBS環境逐漸淘汰,直排逐漸被橫排取代,讀者一般也更能接受這些文字應有的寬度呈現,而非硬轉成全形。甚至很多情況,這些字以全形處理,反而會造成問題(後述)。近年已有許多字型開始嘗試將部分模稜兩可(A)的文字造成半形(比例寬),然而也有部分文字仍是全形較符合習慣,端看字型設計者的權衡。

帶有附加符號的字母

半形英文字母因為有全形字母對應,東亞寬度定義為 Na。然而,部分帶有標音的字母(如 U+00E9é),因為各種原因曾經收錄於既有東亞編碼(如此字是因為漢語拼音),就會被定義為 A。事實上,傳統簡體中文字型確實都是以全形製作這些文字的。

但實務上,一整組拼音(如 chéng),如果只有中間的 é 以全形呈現,顯示起來非常難看又難以閱讀。

傳統上需要以全形呈現純粹是技術限制,現代排版實在沒有理由繼續使用全形處理這些文字。

惱人的右單引號’

歐式的引號 U+2018 U+2019 U+201C U+201D 這4個文字,也因為同樣理由,傳統上在東亞編碼只能用全形處理。

其中最惱人的是右單引號 U+2019,因為它不只用於引號,也會用於 it’s 之類的撇點。以多數遵照UAX#11建議將此字設計為全形的字型進行排版時, ’ 後方會出現異常開闊的空間,相當難以閱讀。

基於繁體中文正規排版很少使用 U+2018 U+2019 引號。本站建議這些文字以比例寬度處理。

參考