异体字选择器

在 Unicode 中，字元**變體**指通過編碼字元序列顯示同一字元的不同字形。這種**變體序列**（英語：variation sequence）由一個基本字元後緊跟一個**變體選擇符**（variation selector）組成。

一個字元的變體通常與它的基本字元有非常相像的外觀和涵義。這項技術旨在當一個字元的變體字形不可用時，仍顯示其基本字元，卻不改變文字本身的涵義。

Unicode 定義了兩種變體序列：

* 標準變體序列（SVS）：由統一碼字元資料庫（UCD）檔案 `StandardizedVariants.txt` 收錄的變體序列
* 表意文字變體序列（IVS）：由表意文字變體資料庫（IVD）檔案 `IVD_Sequences.txt` 收錄的變體序列

變體選擇符定義於數個 Unicode 區塊內：

* 變體選擇符（16 個字元，縮寫：VS1—VS16）
* 變體選擇符補充（240 個字元，縮寫：VS17—VS256）
* 蒙古文自由變體選擇符（3 個字元，縮寫：FVS1—FVS3）

## 概述

Unicode 是一個字元編碼表，它只是一個表格，並不描繪每個字形的樣式。同樣意義的字元常會被賦予相同的編碼。因此，在一些情況下，有必要區分不同的字形。

須注意的是，譬如拉丁字母「a」是否有從頂部向右延伸的線，通常不屬於不同字形之間的差異，因為可以通過更改電腦字型來修改。可是，在中日韓統一表意文字中，本來根據 Unicode 的認同原則應該統合的漢字異體字字形，卻在一些國家或地方的電腦應用標準裏，經常被視為是「另一個字」的字形。擧例說，「値」與「值」字形差異細微，讀音、意義都一樣，一般書寫和閱讀時都不會視為兩個不同的字，理論上可以合併。但是，在個別國家或地區裏，此二字在某些情況中出現時，會被當作相異的資訊。因此，根據情況，有時需要在純文字上儲存不同字形的區別，例如：

* 在大部份操作系統中，檔案名稱是純文字，不能區別在文字中不能區分的東西。
* 輸入法可以輸入的字串一般都是純文字。即使使用者可以使用桌面出版應用程式選擇不同字型來顯示，除了與輸入正常字元有不同的操作外，還必須記住正確的組合，這對於大多數普通使用者來說並不實用。例如在 Windows Vista 日語版中，可以區分顯示「葛飾区」的「」和「葛城市」的「」，不過「」與「」在 Unicode 編碼上並無區別，其輸入法無法正確轉換。
* 用於發送電子郵件的 SMTP 等網路傳輸協定是用純文字發送的，因此不能區分一些相同編碼字元的不同字形。

爲了應付這類情況，早期 Unicode 碰到在有關國家或地區既有碼表已分別編碼的字，像「値」與「值」，就會放棄認同原則，改以原字集分離原則來把兩個字形分別編碼。但若當時有關國家或地區沒有把異體字分別編碼，像日本的 JIS90 只收錄了一個「葛」字，Unicode 就不會分別編碼。

變體選擇符是為了在 Unicode 中解決上述問題而設計出的特殊的「字元」，讓有著相同碼位的異體字（即「葛」字這類例子）可在純文字環境下分別顯示出來。它可以根據前後文來判斷，決定在當前文字中所使用的文字，並由變體選擇符選擇不同的字形。請注意，顯示出來的會是變體選擇符所指定的字形，而不是變體選擇符本身。

## 種類

變體序列一般分兩種：標準變體序列（Standardized Variation Sequence，簡稱「SVS」），以及表意文字變體序列（Ideographic Variation Sequence，簡稱「IVS」）。

SVS 在非漢字及中日韓統一表意文字中均有啟用，這種字形選擇，定義為 Unicode 的標準化變體。要在標準化變體裏添加字形，是統一碼聯盟的工作。

另一方面，IVS 是漢字專用的變體選擇符，字形收集是由表意文字變體資料庫（Ideographic Variation Database，簡稱為「IVD」）定義的。要想在 IVD 中增加字形，也必須根據規定向統一碼聯盟申請。

截至 2017 年 12 月，由變體序列所使用的變體字元如下所示：

**標準變體序列錄入的字集和數量**

* 數學符號表：25 個
* 緬甸的緬文：27 個
* 八思巴字母：6 個
* 摩尼字母：5 個
* 傳統蒙古文：60 個
* 中日韓統一表意文字：1,002 個
* 繪文字：702 個（文字類型和圖形文字的類型 351 個）

**表意文字變體資料庫錄入的字集和數量**

* CID 之 Adobe-Japan1 集：14,683 個
* 通用電子資訊交換環境整頓計劃之 Hanyo-Denshi 集：13,045 個
* 文字資訊基礎整備事業之 Moji\_Joho 集：11,384 個
* 澳門特別行政區之 MSARG 集：21 個
* 韓國之 KRName 集：36 個

但是 Hanyo-Denshi 與 Adobe-Japan1 有很多重複。

### 字形規格

* OpenType1.5 版使用了「Unicode 變體選擇符（Unicode Variation Sequences）」規格。
* SVG 不僅局限於 IVS，亦可以任意 Unicode 編碼。

### 字體建立工具

* FontForge - 2007 年 10 月 2 日之後。
* Adobe Font Development Kit for OpenType (AFDKO) 2.1 版之後。
* TTX/FontTools - GlyphWiki 來生成 IVS 對應字體。
* TTEdit - 對應生成 IVS TrueType 字體。

### 庫

2007 年 10 月 FreeType 以後的開發板內建了 API 工具。

### 軟體

* Windows 7 在資源管理器的所顯示檔名及記事本中可以生成異體字字形。但是需要字體支援。
* Windows 8 以後，採用 IVS 處理。
* Mac OS X 10.5 標準文字和繪製處理遵從 default ignorable 屬性，不會彩現異體字，也不支援字形切換。
* Mac OS X 10.6 開始自建標準文字的繪製處理可支援字形的轉換，但和 Windows 7 同標準的字型 Hiragino 未支援變體選擇符。
* Mac OS X Lion（10.7）則採用了 Adobe-Japan1 的 IVS。

* Alpha（文字編輯器） - 2008 年 2 月在 IVS-OTFT 測試公開版中，通過將變體選擇符的資訊轉換為 opentype 功能標簽的資訊，對應於由不同體字選擇符進行的字形切換。
* gdi++
* Emacs 23
* EmEditor v11 之後
* FooEditor （文字編輯器）
* gPad（文字編輯器）
* Mery （文字編輯器）
* oedit （文字編輯器）
* Adobe Reader 9、Flash Player 10、Adobe InDesign CS4 之後的 Adobe 軟體。
* Windows 7 及之上的 Opera（Presto）
* Mozilla Firefox 版本 4 之後。另外，在版本 31 以後，改由 CJK 來實現該功能。
* WebKit 可以支援 SVG 字體，由 SVG 字體定義的 IVS 進行字形切換。這與 Opera 相同。
* Microsoft Office 2007 - 2010 版本需要附加 Unicode IVS Add-in for Microsoft Office 外掛程式，2010 之後的默認內建。
* LibreOffice 4.1 之後 / Apache OpenOffice 4.0 之後

## 參考資料

## 延伸閱讀

* The Unicode Consortium. The Unicode Standard, Version 5.0. Addison-Wesley Professional. 2006-11-03 [2018-08-21]. ISBN 978-0321480910. （原始內容存檔於 2008-06-10）. （英文）
* ISO/IEC JTC 1. ISO/IEC 10646:2003 Information technology -- Universal Multiple-Octet Coded Character Set (UCS). 2003-12-15 [2018-08-21]. （原始內容存檔於 2018-08-20）. （英文）
* ISO/IEC JTC 1. ISO/IEC 10646:2003/Amd 1:2005 Glagolitic, Coptic, Georgian and other characters. 2005-11-18 [2018-08-21]. （原始內容存檔於 2018-08-20）. （英文）
* ISO/IEC JTC 1. ISO/IEC 10646:2003/Amd 2:2006 N'Ko, Phags-pa, Phoenician and other characters. 2006-07-04 [2018-08-21]. （原始內容存檔於 2018-08-20）. （英文）
* 日本規格協會. JIS X 0221:2007 国際符号化文字集合 (UCS). 2007-12-20 [2018-08-21]. （原始內容存檔於 2009-05-24）.  上記 3 資料を併合して日本語訳したもの。
* 朱一星。關於統一碼 (Unicode) 漢字編碼框架的理論問題. 2016-01-01 [2019-08-01]. （原始內容存檔於 2019-08-01）. （中文），頁面

## 參見

* 變體選擇符 (Unicode 區段)
* 組合字元
* 控制字元
* 中日韓統一表意文字
* 中日韓相容表意文字

## 外部連結

* Standardized Variants - Unicode （頁面存檔備份，存於網際網路檔案館）（英文） (已錄入的 SVS 一覽)
* Unicode Technical Standard #37 - Unicode Ideographic Variation Database （頁面存檔備份，存於網際網路檔案館）（英文） (IVD 結構和註冊程式)
* Ideographic Variation Database - Unicode （頁面存檔備份，存於網際網路檔案館）（英文） (關於 IVD)
* IVD Sequences - Unicode （頁面存檔備份，存於網際網路檔案館） (2017-12-12 版) （英文） (IVD 登記的漢字的組合列表)
* 異體字選擇符 （頁面存檔備份，存於網際網路檔案館） - 搜尋 SVS・IVS 所有可用的變體。