Unicode相容字符
當講解和談論統一碼和UCS時,經常提到「相容字符」這個字眼。相容字符是指統一碼聯盟主張不要使用的圖像式字元,正如統一碼聯盟 (页面存档备份,存于互联网档案馆)所說:
然而,其定義實在遠比這話語有更深層和複雜的意味。每個字符都有一個标准分解(canonical decomposition)的屬性,可是大部分字符這個屬性的值是这个字符自身,但超過五千個字符的标准分解属性的值不是该字符自身。這個标准分解属性值能將相容字符對映到一個或多個的其他的非相容字符,並藉此定义这五千多个字符為統一碼中的相容字符。指定某字符為相容字符的理由各異,下面有更詳細的說明。「分解」這個用語有時會令人感到困惑,因為有些字符「分解」後還是單個字符的形態,這時該字符的分解值就是另一個相等或近似相等的字符。相容字符与其非空值的标准分解(语义上)是确切等价的。 如果一个相容字符可以用多个分解序列表示,那么采用了标准顺序(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>。 這些關鍵字提供了一些訊息:包含相容字符和它的相容分解字符序列。 相容字符可分為以下三類:
因為這些語意上不同的字符有可能會使用相似的字形,文書處理軟體應該向使用者指示出其可能的混淆。當比較和排序文本字符串時,同一字符的不同字形或格式化文本的不同版本不应该改变文本处理结果。例如,軟體使用者可能會困惑,在尋找一頁中的大寫字母“I”时,軟體無法找到在視覺上相似的羅馬數字“Ⅰ”(二者是相容等价,但不是标准等价)。 相容對應的種類字形代換和组合對於遵循統一碼標準的文字處理和顯示軟體來說,有些相容字符是不必要的。這些包含:
譬如,羅馬數十二(“Ⅻ”:U+216B)可以分解成一個羅馬數十(“Ⅹ”:U+2169)和兩個羅馬數一 (‘Ⅰ’: U+2160)。Unicode认为字符序列'U+2169 U+2160 U+2160'是否被组合为单个字符'Ⅻ',这是文本绘制软件要处理的问题。
如 Å(U+00C5),統一碼傾向視為兩個分開的字符,一個拉丁字母 A (“Latin letter A”)結合一個“Combining Ring Above”(U+030A)。
总结而言,上述的预组合的字符的使用是不必要的,应该用普通字符的序列来表示这些预组合的字符;由遵从Unicode规范的字体或者文本绘制软件来决定选用哪个字形。 Unicode字符集(即UCS), Unicode字符的属性、Unicode算法为文本处理软件实现提供了所需的一切来适当地绘制处于分解等价状态的字符。因此那些分解相容字符变成了冗余与不必要。字符集中分解相容字符的存在导致了文本处理时额外的代价用于正确地比较、排序(参见統一碼等價性)。此外,分解相容字符并没有提供补充的或不同的语义。分解相容字符也没有提供绘制时视觉上的不同,如果文本布局与字体遵循Unicode规范。分解相容字符也不是与其他字符集往返转换所需要的,因为可以把一个字符集的分解字符序的列来映射到另一字符集的预组合的字符。 上下文中字形选择,如阿拉伯字母可以根据它在单词内的位置而映射到传统字符集的具有特定字形的某个字符上。 为了处理相容字符,文本软件必须遵从几个Unicode协议。软件必须能够:
Unicode的5,402个相容字符中,上述这些不应该使用在文本中的字符共计3,779个。这包括所有具有关键字 <initial>、<medial>、<final>、<isolated>、<wide>, <narrow>、<small>、<square>、<vertical>、<fraction>的相容字符。还包括大多数具有<compat>关键字的相容字符(例外情况是有<compat>关键字的被封闭的字母数字、被封闭的象形文字、以及下文所提及) 格式化文本所用的相容字符用于格式化文本的相容字符,不是Unicode与UCS所考虑的目标。格式化文本所用的相容字符,可能与普通字符在语义上有出入。例如,作为上角标的数字4,与普通字符数字4,可能语义上不完全等价。 格式化文本相容字符包括:
格式化文本相容字符共有1,451个,包括所有具有关键字<circle>与<font>(除了下文列出3个语义不同的例外),11个空格符的变种具有关键字<compat>,具有关键字<superscript>或<subscript>的定义在基本多语言平面的“上标及下标”块中的字符。 定义在U+2100至U+214F定义的Letterlike Symbols块中的字符,都是具有字体格式的相容字符。 語意上相異字符Unicode对于用于科学或数学的希伯来字母、希腊字母符号,作为相容字符定义。如:
6个作为度量单位的相容字符,Unicode建议使用其等价分解的字符序列:
Unicode规定了22个类似字母的相容字符。
一些语言中,语义与字形的位置有关的字符,共计130个。 罗马数字:
相容块Unicode编码空间的几个字符块,都是或大部分是相容字符。 但是在“CJK Compatibility Ideographs”块中,包含一些不是相容字符的字符:
还有一个字符U+FA23「﨣」与U+27EAF「𧺯」重复定义。 类似情況在希伯来语、阿拉伯语也有。 規範化統一碼要求軟體在進行比較或校正文句時,需要先經過相容分解,這個過程稱作規範化。這是做一些相似運算時所必須的動作,如當一個使用者進行“不區分大小寫”或“不區分附加符號的字母”的搜尋時。典型的規範化是指不會改變底層儲存的資訊(無失真)。然後,有些軟體可能會造成永久的改變,如在文件內容中刪除標準的或非標準的相容字符(失真)。 參考外部連結
|
Portal di Ensiklopedia Dunia