漢字的異體字及其Unicode編碼

異體字

異體字為意思一樣、但寫法不同的字集合。
因為漢字在多個國家使用,每個國家的正式寫法不同,且在歷史中會出現字形改變的情形,自然字形也不同。

原因

Unicode只是編碼標準,不是字形標準。因此其原則為:它只對字(Character)編碼,而非字形(Glyph,每個字的具體形狀、寫法),稱為表意文字認同原則。

陸、港、臺、韓的「港」字右下從「巳」,日本的「港」字右下從「己」;港、臺、韓、日的「角」字中豎不穿頭,大陸的「角」字中豎穿頭;港、臺「起」字從「巳」,陸、日、韓從「己」……這些異形同字,Unicode都不分別編碼。例如「港」就是「6E2F」,不論從「巳」還是從「己」。

爲了相容不同地區的編碼, Unicode 又有「字源分離原則」。日本 JIS 編碼同時收錄了「剣」、「劍」二形, Unicode 爲了與之兼容,即使它們是同一個字, Unicode 也分別給予編碼:「剣」是「5263」,「劍」是「528D」。

而這兩個原則

  1. 表意文字認同原則(Han Unification Rule)
  2. 字源分離原則(Source Separation Rule)

是互相矛盾的

結果就是有些異體字被編進同一碼位,有些則區分作兩碼

當然原則一是比較合理的,因為畢竟是同一個字,只是寫法稍有不同,原則二只是純粹的歷史包袱。

歷史

國際標準組織於 1993 年 5 月出版了「通用碼架構及基本多語文字面」(UCSArchitecture and Basic Multilingual Plane)草案,該草案將此標準定名為 Universal MultipleOctet Coded Character Set(通用多八位組編碼字符集),並說明其編碼架構為 4 個位元組(4 Bytes),共組成 128 個群(Group),每一個群有 256 個字面(Plane),每一個字面有256×256 個編碼空間,其中第 32 群的第 32 個字面為基本多語文字面(Basic MultilingualPlane;簡稱 BMP)。到了 1993 年 ISO 10646-1 正式版本,此標準定名為 Universal Multiple-Octet Coded Character Set(廣用多八位元組編碼字元集;簡稱 UCS),BMP 則定義在第 0 群第 0 個字面。在使用上,假如需用的字集都在 BMP 中,則只要使用 2 個八位元組的編碼架構即可,否則就必須使用 4 個八位元組的編碼架構;而且這兩種編碼架構不能混合使用,不是使用 2 個八位元組,就是使用 4 個八位元組的固定長度編碼架構,其用意就是要避免 ISO 2022 不定長度的缺點。

參與制定 ISO 10646 的代表莫不儘量爭取把自己國家使用的字集編入 BMP,目的就是希望能利用 BMP 只用 2 個八位元組的優勢,取得比 4 個八位元組更高的資訊處理效率。BMP 的爭取如此重要,然其編碼位置卻有限,因此如何充份利用這些編碼空間處理更多常用字符集,就成為標準研訂時的一個重要考慮因素。過去在 BMP 的設計中,除編入西方拼音文字及符號外,在漢字方面只蒐集日本、南韓及中國三個地區使用的漢字字集,並沒有考慮到我國的字集,我國遂積極組團以民間團體-臺北市電腦商業同業公會(TCA)的名義,參加 ISO 10646 的制定,以爭取將我國使用的正體字編入 BMP 中。

ISO 10646 編碼基本原則為「一字一碼」,我國及中國的代表因此就共同提出了 HCS(Han Character Set) 的構想,這個構想同時獲得美國及其它國家代表的支持,進而一步步發展至今。1993 年公布的 ISO 10646-1 之 BMP 中,已經將臺灣、大陸、日本和南韓所使用之漢字整合成獨立的**「中日韓認同表意文字區( CJK Unified Ideographs)」**,使
得亞洲幾個主要使用漢字的國家,有圓滿的解決方案。

然而,當初進行中日韓漢字編碼時,因各國所提出的漢字集有重複及形、體不盡相同,進行重複字比對、篩選及形、體認同( unify) 原則討論等工作。歷經五次會議完成的「中日韓認同表意文字」( CJK Unified Ideographs),其字序主要是參考康熙字典、大漢和詞典、漢語大詞典及大字源字典,以先部首後筆劃的順序排列。
完成了 ISO 10646:1993 之 BMP 中 I 區的表意文字編碼標準,總計含 20,902 個漢字,其中包含了 CNS 11643 用字共 17,011 個。

1998 年 IRG 完成「中日韓認同表意文字擴充 A」(CJK Unified Ideographs Extension A),編訂 6,582 字,送交 SC2/WG2 通過,編碼於 BMP 之 A 區的3400~4DFF,其中包含 CNS 11643 用字共 5,879 個。

被認定相同的 CNS11643 字元 527 個,收容於「中日韓相容表意文字擴充 A 區」,編碼範圍為 0002-F800 ~0002-FA16h。

「中日韓認同表意文字擴充 B」(CJK Unified Ideographs Extension B)的整理,這套字集涵蓋康熙字典全部用字、漢語大字典全部用字及中國、臺灣、韓國、越南、香港所提的國家標準字集。擴充 B 字集係編碼於 ISO 10646 第二輔助字面(Plane 2),總計 42,807 中日韓越漢字,編碼範圍為 0002-0100~0002-A836h,其中含我國 CNS 11643 第 4~7 字面共約 3 萬字。「中日韓認同表意文字擴充 B」擴編完成後,CNS 11643 第 1 至 7 字面有 95%以上的用字全部納入 ISO 10646 標準中,其餘 5%是被認定相同(unified)的字。

範例:不同Unicode的異體字

  • 剣(5263)、劍(528D)
  • 數(6578)、數(f969)
  • 靑(9751)、青(9752)

範例:相同Unicode的異體字

早期Unicode碰到在有關國家或地區既有碼表已分別編碼的字,像「値」與「值」,就會放棄原則一,改以原則二來把兩個字形分別編碼。
但若當時有關國家或地區沒有把異體字分別編碼,像日本的JIS90只收錄了一個「葛」字,Unicode就不會分別編碼。如「直、殖、植」等字皆沒有像「値」與「值」般分別編碼。

但是實際上兩個異體字在日本都有被使用,所以需要額外處理這些Unicode也沒有解決的例外,方法為異體字選擇器

異體字選擇器

異體字選擇器是一種在Unicode上,用來準確、具體地指定選擇哪個文字字形的程序。有標準化的異體字選擇器(Standardized Variation Sequence,簡稱「SVS」),以及漢字異體字選擇器(Ideographic Variation Sequence,簡稱「IVS」)。

Standardized Variants錄入的字集和數量

  • 數學符號表:25
  • 緬甸的緬文:27個
  • 八思巴字母:6個
  • 摩尼字母:5個
  • 傳統蒙古文:60個
  • 中日韓統一表意文字:1,002個
  • 繪文字:702個(文本類型和圖形文字的類型351個)
  • IVD(2017-12-12版)錄入的字集和數量
    • CID之Adobe-Japan1集:14,683個
    • 通用電子信息交換環境整頓計劃之Hanyo-Denshi集:13,045個
    • 文字信息基礎整備事業之Moji_Joho集:11,384個
    • 澳門特別行政區之MSARG集:21個
    • 韓國之KRName集:36個

這個功能也被開發了新用法,像是標注注音

參考資料

  • 李鵑娟-異體字字典港澳陸規範字收錄研究
  • 異體字選擇器
  • SVS
  • IVS
  • 顯示表意文字字形變化序列示範
  • IVD/IVSとは
  • Unicode 中的多個 IVS 對應同一字形時,應該選擇哪一個?