Unicode兼容字元

當講解和談論統一碼和UCS時,經常提到“兼容字元”這個字眼。兼容字元是指統一碼聯盟主張不要使用的圖像式字元,正如統一碼聯盟所說: 若不是為了與其他標準間兼容和能夠雙向對應轉換,就不會在統一碼中編碼的字元。

然而,其定義實在遠比這話語有更深層和複雜的意味。每個字元都有一個標準分解(canonical decomposition)的屬性,可是大部分字元這個屬性的值是這個字元自身,但超過五千個字元的標準分解屬性的值不是該字元自身。這個標準分解屬性值能將兼容字元映射到一個或多個的其他的非兼容字元,並藉此定義這五千多個字元為統一碼中的兼容字元。

指定某字元為兼容字元的理由各異,下面有更詳細的說明。“分解”這個用語有時會令人感到困惑,因為有些字元“分解”後還是單個字元的形態,這時該字元的分解值就是另一個相等或近似相等的字元。兼容字元與其非空值的標準分解(語義上)是確切等價的。

基本介紹

  • 軟體名稱:Unicode兼容字元
  • 類型:統一碼聯盟不使用的圖像式字元
簡介,種類和關鍵字,兼容對應種類,字形代換和組合,格式化文本,語義上相異字元,兼容塊,規範化,

簡介

如果一個兼容字元可以用多個分解序列表示,那么採用了標準順序(canonical order)的序列是該字元的標準分解。例如,ộ,有兩種分解序列:(U+006F LATIN SMALL LETTER O) (U+0302 COMBINING CIRCUMFLEX ACCENT) (U+0323 COMBINING DOT BELOW)或者 (U+006F LATIN SMALL LETTER O) (U+0323 COMBINING DOT BELOW)(U+0302 COMBINING CIRCUMFLEX ACCENT),兩個附加符號出現在分解序列中的位置是可交換的。
Unicode的另一個概念兼容性分解(compatibility decomposition),是把一個兼容字元映射為一個或多個的其他的非兼容字元。但兼容字元與兼容性分解可能會有語義(如排版格式上)的損失。例如上角標數字字元與普通的數字字元4。 Unicode的所有預組合字元(precomposed character)都是兼容字元。
即所有預組合字元都能夠用其他字元或字元序列來表示。因此預組合字元的標準分解總是存在。具有不同於自身且不為空值的標準分解屬性值的字元,稱為標準組合字元( canonical composite)。

種類和關鍵字

根據兼容分解屬性的值,可將統一碼的 5,402 個字元分成 17 邏輯分類,並賦予其關鍵字。具有兼容分解但沒有關鍵字的字元被稱作標準可分解字元,這些字元並不是兼容字元。兼容可分解字元的關鍵字包括: <initial>、<medial>、<final>、<isolated>、<wide>, <narrow>、<small>、<square>、<vertical>、<circle>、<noBreak>、<fraction>、<sub>、<super>和 <compat>。 這些關鍵字提供了一些訊息:包含兼容字元和它的兼容分解字元序列。 兼容字元可分為以下三類:
  1. 具有多個可選的字形的字元;以及對一些沒有完整的統一碼文本繪製能力的軟體或字型,含附加符號已經組合好了的字元(稱為預組字元預組合字元)。
  2. 字元可能是從其它字集而來的,或是用於格式化文本(Formatted text)而非純文本的字元。
  3. 一些其它字元是視覺上相似但語義上不同。
因為這些語義上不同的字元有可能會使用相似的字形,文字處理軟體應該向用戶指示出其可能的混淆。當比較和排序文本字元串時,同一字元的不同字形或格式化文本的不同版本不應該改變文本處理結果。例如,軟體用戶可能會困惑,在查找一頁中的大寫字母“I”時,軟體無法找到在視覺上相似的羅馬數字“Ⅰ”(二者是兼容等價,但不是標準等價)。

兼容對應種類

字形代換和組合

對於遵循統一碼標準的文字處理和顯示軟體來說,有些兼容字元是不必要的。這些包含:
  • 合字:在拉丁字母老舊的字元集中,合字如‘ffi’經常被作為一個字元來編碼。Unicode的方法是把合字當作一種文本繪製的藝術,編碼時用普通字母序列來代替。
  • 預組合的羅馬數字
譬如,羅馬數十二(“Ⅻ”:U+216B)可以分解成一個羅馬數十(“Ⅹ”:U+2169)和兩個羅馬數一 (‘Ⅰ’: U+2160)。Unicode認為字元序列'U+2169 U+2160 U+2160'是否被組合為單個字元'Ⅻ',這是文本繪製軟體要處理的問題。
  • 預組合的分數:這些預組合字元具有<fraction>關鍵字。完全遵從Unicode規範的文本處理器應當繪製字元¼ (U+00BC)完全同於字元序列1⁄4 (數字1、分數斜線U+2044、數字4).
  • 預組合的變音字母.
如 Å(U+00C5),統一碼傾向視為兩個分開的字元,一個拉丁字母 A (“Latin letter A”)結合一個“Combining Ring Above”(U+030A)。
  • 依上下文環境而變的字形:主要出現在阿拉伯文中。使用具有字形替換能力的字型,如OpenType、TrueTypeGX,遵從Unicode規範的軟體能把出現在不同上下文環境(詞的開頭、詞的中部、詞的結尾、單獨使用)的同一字元替換為適當的字形來繪製。這種字形替換能力對於垂直文本繪製的東亞語言也是必需的。
總結而言,上述的預組合的字元的使用是不必要的,應該用普通字元的序列來表示這些預組合的字元;由遵從Unicode規範的字型或者文本繪製軟體來決定選用哪個字形。
Unicode字元集(即UCS), Unicode字元的屬性、Unicode算法為文本處理軟體實現提供了所需的一切來適當地繪製處於分解等價狀態的字元。因此那些分解兼容字元變成了冗餘與不必要。字元集中分解兼容字元的存在導致了文本處理時額外的代價用於正確地比較、排序(參見統一碼等價性)。此外,分解兼容字元並沒有提供補充的或不同的語義。分解兼容字元也沒有提供繪製時視覺上的不同,如果文本布局與字型遵循Unicode規範。分解兼容字元也不是與其他字元集往返轉換所需要的,因為可以把一個字元集的分解字元序的列來映射到另一字元集的預組合的字元。 上下文中字形選擇,如阿拉伯字母可以根據它在單詞內的位置而映射到傳統字元集的具有特定字形的某個字元上。
為了處理兼容字元,文本軟體必須遵從幾個Unicode協定。軟體必須能夠:
  • 從字母字元與一個或多個單獨的附加符號組合出變音字母字元;
  • 根據用戶的判斷,替換出合字或上下文相關的字形變種;
  • 根據用戶的判斷,CJVK文本垂直布局時,把字形替換為小的、垂直的、窄的、寬方塊等字形變種;
  • 使用分數斜線字元 (⁄ U+2044)與其它任意字元來組合出分數的字形。
  • 能把組合字元(Combining character)正確繪製到其前的普通字元上。例如把表示現金的長斜線組合字元‘Combining Long Solidus Overlay’ ( ̸ U+0338)加到其它字元上,如∄
Unicode的5,402個兼容字元中,上述這些不應該使用在文本中的字元總計3,779個。這包括所有具有關鍵字 <initial>、<medial>、<final>、<isolated>、<wide>, <narrow>、<small>、<square>、<vertical>、<fraction>的兼容字元。還包括大多數具有<compat>關鍵字的兼容字元(例外情況是有<compat>關鍵字的被封閉的字母數字、被封閉的象形文字、以及下文所提及)

格式化文本

用於格式化文本的兼容字元,不是Unicode與UCS所考慮的目標。格式化文本所用的兼容字元,可能與普通字元在語義上有出入。例如,作為上角標的數字4,與普通字元數字4,可能語義上不完全等價。
格式化文本兼容字元包括:
  • 數學字母數字元號:拉丁字母、希臘字母、阿拉伯數字的字元,有14種不同的字型,用於數學文本。
  • 被封閉的字母、數字、象形文字。如:⑪ ⑫ ⒄ ⒅ ⒌ ⒍ ⒲ ⒳ Ⓐ Ⓑ
  • 不同寬度的空格與不換行空格。這些字元是核心的空格符(U+0020)與不換行空格符(U+00A0)的變種。 如不換行窄空格(Narrow No-Break Space, U+202F)、詞連線(Word joiner, U+2060)。
  • 上角標、下角標字元。這裡包括國際音標所用的那些看似是上下角標的字元。這裡所指是拉丁字母、希臘字母、數字作為上下角標的字元。
  • CJK定義的全寬拉丁字母、阿拉伯數字,以及半寬日文、韓文字母。在Unicode的Half-width and Fullwidth Forms塊中,U+FF00至U+FFEF。
格式化文本兼容字元共有1,451個,包括所有具有關鍵字<circle>與<font>(除了下文列出3個語義不同的例外),11個空格符的變種具有關鍵字<compat>,具有關鍵字<superscript>或<subscript>的定義在基本多語言平面的“上標及下標”塊中的字元。 定義在U+2100至U+214F定義的Letterlike Symbols塊中的字元,都是具有字型格式的兼容字元。

語義上相異字元

Unicode對於用於科學或數學的希伯來字母、希臘字母符號,作為兼容字元定義。如:
  • 希伯來字母符號:alef (ℵ U+2135), bet (ℶ U+2136), gimel (ℷ U+2137), dalet (ℸ U+2138)
  • 希臘字母符號:beta (ϐ U+03D0), theta (ϑ U+03D1), phi (ϕ U+03D5), pi (ϖ U+03D6), kappa (ϰ U+03F0), rho (ϱ U+03F1), 大寫theta (ϴ U+03F4)
6個作為度量單位的兼容字元,Unicode建議使用其等價分解的字元序列:
  • Angstrom (“Å”(angstrom sign,U+212B),應該用“Å”(latin capital letter a with ring above,U+00C5) )
  • Ohm (“Ω”(ohm sign,U+2126), 應該用“Ω”(greek capital letter omega,U+03A9))
  • Kelvin (“K”(,U+212A), 應該用“K”(,U+004B))
  • Fahrenheit (“℉”(,U+2109), 應該用“°”(,U+00B0)與“F”(,U+0046))
  • Celsius (“℃”(,U+2103),應該用“°”(,U+00B0)與“C”(,U+0043))
  • Micro Sign (“µ”(,U+00B5),應該用“μ”(,U+03BC))
Unicode規定了22個類似字母的兼容字元。
  • 基於希臘字母的: lunate epsilon (ϵ U+03F5), lunate sigma (ϲ U+03F2), capital lunate sigma (Ϲ U+03F9), upsilon with hook (ϒ U+03D2)
  • 數學常量: Euler constant (ℇ U+2107), Planck constant (ℎ U+210E), reduced Planck constant (ℏ U+210F),
  • 貨幣符號: rupee sign (₨ U+20A8), rial sign (﷼ U+FDFC)
  • 標點符號: one dot leader (U+2024), no-break space (U+00A0), non-breaking hyphen (U+2011), Tibetan mark delimiter tsheg bstar (U+0F0C)
  • 其它類字母符號: information source (ℹ U+2139), account of (℀ U+2100), addressed to the subject (℁ U+2101), care of (℅ U+2105), cada una (℆ U+2106), numero (№ U+2116), telephone sign (℡ U+2121), facsimile sign (℻ U+213B), trademark (™ U+2122), service mark (℠ U+2120)
一些語言中,語義與字形的位置有關的字元,總計130個。
羅馬數字:
  • 大寫羅馬數字7個:1 (Ⅰ U+2160), 5(Ⅴ U+2164), 10(Ⅹ U+2169), 50(Ⅼ U+216C), 100 (Ⅽ U+216D), 500 (Ⅾ U+216E), 1000 (Ⅿ U+216F)
  • 小寫羅馬數字7個:1 (Ⅰ U+2170), 5(Ⅴ U+2174), 10(Ⅹ U+2179), 50(ⅼ U+217C), 100(ⅽ U+217D), 500 (ⅾ U+217E) ,1000 (ⅿ U+217F)
  • 預組合羅馬數字18個:2–4, 6–9, 11–12的大小寫版本。
  • “ↀ”(one thousand c d,U+2180)

兼容塊

主條目:中日韓統一表意文字 § 版本
Unicode編碼空間的幾個字元塊,都是或大部分是兼容字元。
但是在“CJK Compatibility Ideographs”塊中,包含一些不是兼容字元的字元:
  1. (U+FA0E): 﨎
  2. (U+FA0F): 﨏
  3. (U+FA11): 﨑
  4. (U+FA13): 﨓
  5. (U+FA14): 﨔
  6. (U+FA1F): 﨟
  7. (U+FA21): 﨡
  8. (U+FA23): 﨣
  9. (U+FA24): 﨤
  10. (U+FA27): 﨧
  11. (U+FA28): 﨨
  12. (U+FA29): 﨩
還有一個字元U+FA23“﨣”與U+27EAF“𧺯”重複定義。
類似情況在希伯來語、阿拉伯語也有。

規範化

統一碼要求軟體在進行比較或校正文句時,需要先經過兼容分解,這個過程稱作規範化。這是做一些相似運算時所必須的動作,如當一個用戶進行“不區分大小寫”或“不區分附加符號的字母”的搜尋時。典型的規範化是指不會改變底層存儲的信息(無損)。然後,有些軟體可能會造成永久的改變,如在檔案內容中刪除標準的或非標準的兼容字元(有損)。

熱門詞條

聯絡我們