中文软件

中文软件指的是专门为了中文资讯处理使用所设计的软件。包含但不局限于中文系统（外挂）、中文输入法、中文字形、中文自然语言处理、中文编程语言，如周蟒（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上的中文使用
- 手机上的中文使用