中文軟體

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

## 中文系統與中文軟體

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

### 漢字特性

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

### 漢字語碼

#### 外碼（External Code）

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

#### 內碼（Internal Code）

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

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

#### 交換碼（Exchange Code）

目前最普遍的交換碼即統一碼。

### 漢字輸入

#### 台灣地區

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

#### 港澳地區

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

#### 中國大陸地區

- 漢拼法：最普遍。

### 漢字輸出

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

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

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

## 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檔內的字串取代（使用可以編輯二進位檔案的工具）

## 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上的中文使用
- 手機上的中文使用