中文軟體

**中文軟體**指的是專門為了中文資訊處理使用所設計的軟體。包含但不侷限於中文系統（外掛）、中文輸入法、中文字形、中文自然語言處理、中文編程語言，如周蟒（ZhPy）等。

## 中文系統與中文軟體

中文系統一般為外掛形態，如 DOS 時代的使用倚天中文系統，或是採用特殊版本的軟體，如必須使用中文 Win2000。此外更麻煩的是，輸入時必須採用特殊的輸入法，因此中文系統在運作上必須考慮漢字特性、漢字語碼、漢字輸入、漢字輸出等。

### 漢字特性

除了某些系統（如王安系統）外，目前大部份的系統漢字佔用 2Byte，是英數字的兩倍。另外配合漢字顯示，英數字可分成全形半形、全形之英數字（包含空白）是以特殊符號方式處理，與半形之英數字與法通用，半形的英數字可以被系統直接快速處理。

### 漢字語碼

#### 外碼（External Code）

亦即輸入法之按鍵次序，輸入法不同，按鍵次序（即外碼）隨而不同。

#### 內碼（Internal Code）

因為電腦廠牌不同，電腦內漢字碼可能不同，此即內碼。

* 台灣常見內碼為 2 bytes 的 Big5 收字有 13060 字，諸版本以 Big5-2003 地位最高，其後皆以此為基礎進行設計各種衍生版本。
* 中國常見內碼為 GB 18030 收字有 70244 字，包括中日韓越台港澳等各種形式的漢字與類漢字，其中類漢字包括越南字喃、日本和製漢字（與假名相對的真名 Mana）、朝鮮漢字特殊字形、港澳粵書、台灣喃書。但關於粵書與喃書，由於當地還在發展中，故無法完整收字，實屬偷跑性質收字。
* 漢字國際碼（漢字總碼 Unihan）：共收漢字與類漢字 74617 字（2012 年）。

#### 交換碼（Exchange Code）

目前最普遍的交換碼即國際碼（Unicode）。

### 漢字輸入

#### 台灣地區

* 注音法：台灣地區最普遍的輸入法。
* 倉頡法：適合台語客語和原住民母語者使用。
* 內碼法：最繁瑣。
* 手寫法：以智慧型手機使用人口為主要市場。
* 語音法：最直接。

#### 港澳地區

* 粵拼法：微軟電腦內建。

#### 中國大陸地區

* 漢拼法：最普遍。

### 漢字輸出

包括字型 (font) 與字形以及字體。「字形」（glyph）指單個字（字母、漢字、符號等）的形體。
所謂「字體」（typeface）與「字型」（font），都是排印學與書法領域的專有名詞。無論港澳台、中國大陸還是歐美等國非專業普通人士都無法區分作為專業名詞的「字體」（typeface）與「字型」（font）。

#### 點陣字型 (Dot-matrix Fonts)

點陣 (dot-matrix) 或稱位圖 (Bitmap)，意即像素陣列 (pixel array)。缺點是縮放時會有鋸齒邊，因此後來進化成向量字。

#### 向量字型 (Vector Fonts)

包括向量字 / 矢量字體 (Vector Fonts/Outline Fonts)、向量圖 / 矢量圖形 (Vector Graphics)。由於每個字型都透過數學向量式（線性代數）來描述，因此可以自由縮放比例。缺點是需要較多的計算時間，同時字型放大過量也會產生稜角而影響美觀。

* 目前主流的向量字型格式有 3 種：Type1，TrueType (TTF) 和 OpenType，這三種格式都是平台無關的，其中的 TTF 已進化為曲線描邊字。

#### 曲線描邊字型 (Stroke Fonts/TTF/serif 白體字)

又名襯線字。如羅馬體字、宋體字。由於使用曲線公式 (非線性式) 來描繪字框，因此任何縮放比例都一樣平滑，與向量字在數學式的主要區別在於曲率 (數學符號為 Kappa:κ)，曲率 κ=0 即直線，曲率 κ≠0 即曲線。缺點是計算耗時更久。

* 常見的形式包括印刷用的 Postscript 與螢幕顯示的 True type font (TTF) 等。
* TrueType (TTF) 字體中的字符（或字形）輪廓由直線和二次貝塞爾曲線（bézier）片段構成。這些構建在數學上比平面設計界 PostScript 使用的三次貝塞爾曲線（也被 Type 1 字體所使用）更容易處理。儘管如此，對於多數形狀，三次要比二次貝塞爾曲線需要更多的點來描述。這個差異也意味著它不能將 Type 1 無損地轉換為 TrueType 格式，可是你可以無損地將 TrueType 轉換為 Type 1。

#### 無描邊字型 (sans-serif 黑體字)

又名無襯線字，如歌德體字。

## 中文軟體發展歷程

### 國際漢字主流內碼

#### Big5 大五碼 (台港澳專用)

* 名稱取自**五大中文套裝軟體**，即 **Big-5** 軟體，是 1984 年由中華民國財團法人資訊工業策進會與台灣 13 家廠商合作進行「五大軟體專案」，所開發出來的五種中文套裝軟體，分別為「文書處理」、「資料庫」、「試算表」、「通訊」及「繪圖」。
* 「大五碼」（Big5）是由台灣財團法人資訊工業策進會為五大中文套裝軟體所設計的中文共通內碼，在 1983 年 12 月完成公告，隔年 3 月，資訊工業策進會與臺灣 13 家廠商簽定｢16 位元個人電腦套裝軟體合作開發（BIG-5）計畫 (五大中文套裝軟體)｣，因為此中文內碼是為臺灣自行製作開發之｢五大中文套裝軟體｣所設計的，所以就稱為 Big5 中文內碼。五大中文套裝軟體雖然並沒有如預期的取代國外的套裝軟體，但隨著採用 Big5 碼的國喬中文系統及倚天中文系統先後在台灣市場獲得成功，使得 Big5 碼深遠地影響正體中文電腦內碼，直至今日。「五大碼」的英文名稱「Big5」後來被人按英文字序譯回中文，以致現在有「五大碼」和「大五碼」兩個中文名稱。
* Big5 碼的產生，是因為當時個人電腦沒有共通的內碼，導致廠商推出的中文應用軟體無法推廣，並且與 IBM 5550、王安碼等內碼，彼此不能兼容；另一方面，台灣當時尚未推出中文編碼標準。在這樣的時空背景下，為了使台灣早日進入資訊時代，所採行的一個計畫；同時，這個計畫對於以台灣為核心的亞洲繁體漢字圈也產生了久遠的影響。
* Big5 產生前，研發中文電腦的朱邦復認為內碼字集應該廣納所有的正異體字，以顧及如戶政等應用上的需要，故在當時的內碼會議中，建議希望採用他的五萬多字的字庫。工程師認為雖其技術可行，但是三個位元組 (超過兩個位元組以上) 長度的內碼卻會造成英文螢幕畫面映射成中文畫面會發生文字無法對齊的問題，因為當時盛行之倚天中文系統畫面係以兩個位元組文字寬度映射成一個中文字圖樣，英文軟體中只要以兩個英文字寬度去顯示一個中文字，畫面就不會亂掉，造成中文系統業者偏愛二個位元組長度的內碼；此外以倉頡輸入碼壓縮成的內碼不具排序等功能，因此未被採用。1983 年有人誣指朱邦復為共產黨，其研究成果更不可能獲採用。
* 在 Big5 碼誕生後，大部分台灣的電腦軟體都使用了 Big5 碼，加上後來倚天中文系統的高度普及，使後來的微軟 Windows 3.x 等亦予以採用。雖然後來台灣還有各種想要取代 Big5 碼，像是倚天中文系統所推行的倚天碼、台北市電腦公會所推動的公會碼等，但是由於 Big5 字碼已沿用多年，因此在習慣不易改變的情況下，始終無法成為主流字碼。而台灣後來發展的國家標準 CNS 11643 中文標準交換碼由於非一般的內碼系統，是以交換使用為目的，受先天所限，必須使用至少三個位元組來表示一個漢字，所以普及率遠遠不及 Big5 碼。
* 在 1990 年代初期，當中國大陸的電郵和轉碼軟體還未普遍之時，在深圳的港商和台商公司亦曾經使用 Big5 系統，以方便與總部的文件交流、以及避免為大陸的辦公室再寫一套不同內碼的系統。使用簡體中文的社群，最常用的是 GB 2312、GBK 及其後續的國標碼（GB 18030）。
* 現在，除了台灣外，其他使用繁體漢字的地區，如香港、澳門，及使用繁體漢字的海外華人，都曾普遍使用 Big5 碼做為中文內碼及交換碼。

#### GB 18030 國標碼 (中國大陸專用)

* **GB 18030**，全稱：國家標準 GB 18030-2005《信息技術　中文編碼字符集》，是中華人民共和國現時最新的內碼字集，是 GB 18030-2000《信息技術　信息交換用漢字編碼字符集　基本集的擴充》的修訂版。與 GB 2312-1980 完全兼容，與 GBK 基本兼容，支持 GB 13000 及 Unicode 的全部統一漢字，共收錄漢字 70244 個。

GB 18030 主要有以下特點：

* 與 UTF-8 相同，採用多字節編碼，每個字可以由 1 個、2 個或 4 個字節組成。
* 編碼空間龐大，最多可定義 161 萬個字元。
* 支持中國國內少數民族的文字，不需要動用造字區。
* 漢字收錄範圍包含繁體漢字以及日韓漢字。

本規格的初版是由中華人民共和國信息產業部電子工業標準化研究所起草，由國家質量技術監督局於 2000 年 3 月 17 日發布。現行版本為國家質量監督檢驗總局和中國國家標準化管理委員會於 2005 年 11 月 8 日發布，2006 年 5 月 1 日實施。

此標準內的單字節編碼部分、雙字節編碼部分，和四字節編碼部分收錄的中日韓統一表意文字擴展 A 區漢字，為強制性標準。其他部分則屬於規模性標準。在中華人民共和國境內所有軟體產品，都需要支持這個同時包含單字節、雙字節和四字節編碼的規格。

微軟視窗代碼頁為 54936。

#### Unihan (漢字國際碼 / 漢字總碼)

* 共收漢字與類漢字 74617 字 (2012)，較清初《康熙字典》原有的漢字 47035 字幾乎多了一倍。包括中日韓越台港澳等各種形式的漢字與類漢字，其中類漢字包括越南字喃、日本和製漢字 (與假名相對的真名 Mana)、朝鮮漢字特殊字形、港澳粵書、台灣喃書。
* **中日韓統一表意文字**（英語：**CJK Unified Ideographs**），也稱**漢字總碼**（英語：**Unihan**），目的是要把分別來自中文、日文、韓文、越南文、壯文中，起源相同、本義相同、形狀一樣或稍異的表意文字，賦予其在 ISO 10646 及萬國碼標準中相同編碼。
* 所謂「起源相同、本義相同、形狀一樣或稍異的表意文字」，主要為漢字，包括繁體字 (台港澳用字)、簡體字 (中國大陸用字)、日本漢字（漢字／かんじ）、韓國漢字（漢字／한자）、越南的喃字（𡨸喃／Chữ Nôm）與儒字（𡨸儒／Chữ Nho）、方塊壯字。
* 此計劃原本只包含中文、日文及韓文中所使用的漢字，舊稱**中日韓**（CJK）**統一表意文字**（Unified Ideographs）。後來，此計劃加入了越南文的喃字，所以合稱中日韓越（CJKV）統一表意文字。

### 作業系統

* Chinese DOS
* 倚天中文
* UCDOS

### 視窗軟體

* Win 95
* Win 2000
* Win XP

## DOS 時代的中文軟體

* 中文 DOS
* 中文化軟體的方式
  1. 對於 DOS 下的各應用程式，使用 PC-Tools 或 DOS 內附送的 Debug.exe，做檔案內的字串取代。此僅為改變應用程式的字串，實際顯示中文仍須使用「中文系統」。
  2. 針對中文的顯示，使用改寫 Int 10 的常駐程式，對於使用 Int 10 進行顯示的字串做攔截處理。（此為下列各中文系統的運作原理）
* 著名的中文系統
  * 倚天中文系統
  * 大千中文系統
  * 零壹中文系統
  * 國喬中文系統
  * 震漢中文系統
  * 龍碟中文系統
  * 天匯漢字系統
  * CCDOS
  * UCDOS
  * SPDOS

### DOS 上使用中文的問題

1. 顯示卡的兼容問題：國外出產的知名顯示卡（特別是 ATI 或外國牌子機，如 HP 或 Compaq 的電腦）經常都出現顯示問題，例如：只能顯示中文畫面的上半部份。
2. 記憶體相衝問題：由於中文系統利用特殊的記憶體映射方式來重新安排顯示卡的記憶，有不少為求效率而犧牲兼容性的軟體當直接存取記憶時，都會與中文系統相衝。這些相衝現場輕則使畫面紊亂，重則使電腦當機。

## Windows 上的中文軟體

### 中文系統

在 Windows 使用中文主要有三種方式：

* 使用外掛的中文系統：在早期非中文版本的 Windows 系統，這是使用中文的唯一方式。如雙橋中文。
* 傳統內碼的中文版 Windows：Windows 3.1 及 Win95、Win98 都有針對 Big5 及 GB 碼開發的中文系統。
* 使用萬國碼：現代的 Windows 系統都有多國語言的支援。（自 Win95 開始，Windows 已出現萬國碼的局部支援）

### 軟體中文化的方式

* 記憶體修補（由於後期的 Windows 對於.code 的記憶體區間有寫入保護，故要進行記憶體修補改的外掛程式要先提高自身在 Windows 內的權限等級，並開起系統的 Debug 旗標後，方可寫入）
* 程式資源檔的字串取代（使用資源檔編輯器，有 Win16、Win32、.Net，這三大類工具）
* Hook API（攔截與字型或字串相關的 Win32 API）
* 取得原始程式後，進行改寫（例如：原始程式內的字串翻譯成中文，以及更改程式在顯示字型時的相關設定）
* Exe 或 Dll 檔內的字串取代（使用可以編輯二進位檔案的工具）

### 有代表性的中文軟體

## Unix 終端機的中文軟體

## X 視窗的中文軟體

現代的 X 視窗系統，中文支援主要是依頼

* C library 內建的多語文支援，
* X 或 X toolkit 的多語文輸出功能（即 X 的 fontset 機制、或 GTK 或 Qt 等 toolkit 的多語文顯示的支援等等），和
* X 或 X toolkit 的多語文輸入功能（即 X 的 XIM 機制、或 GTK 的軟體的 GTK 輸入模組機制等等）。

個別軟體可能會支援或需要其他特別或較為少用的中文輸入機制。

使用者在選擇處理中文輸入的軟體比軟有自由度。在類 Unix 的自由作業系統，目前比較普遍的輸入軟體包括蘇哲的 SCIM。

### 早期的中文軟體

早期的 X 視窗系統並無有系統的中文支援，中文軟體只能透過中文化的終端機模擬器，在文字介面運作，而中文輸入也須透過終端機模擬器的中文輸入功能。情況類似 DOS 的中文系統。

最早的 X 視窗中文軟體是修改自 xterm 的 cxterm（Chinese xterm）終端機模擬器。

Linux 開始普遍後，cxterm 不久就被改自 rxvt 的 crxvt 取代，而導致 crxvt 被取代的其中一個因素，是 crxvt 因並非自由軟體，在授權上出現了問題。中文輸入法和終端機模擬器分開，也是由 crxvt 開始。crxvt 和 rxvt 後來合併，合併後的版本改稱 rxvt。

X 視窗系統開始有普遍性的中文支援是在各種 Unix 的 C library 採取普遍性的多語文支援時開始；普遍性的多語文支援令中文輸入可以透過標準的 XIM 機制，而毋須採取類似 Windows 的外掛中文系統一類的方法。

## 掌上型裝置上的中文軟體

* Palm 上的中文使用
* Pocket PC 上的中文使用
* 其它 PDA 上的中文使用
* 手機上的中文使用

## 參考來源