字体概述及Linux字体常见问题的解决
作者:penggb@
March 1, 2010
Linux的字体 问题是 Linux 初学者经常碰到 的问题之一 ,也是 Linux 饱受
非议的问题之一 。很多初学者就是因为 Linux 下糟糕的字体 ,而 回到 windows
的怀抱 的。不得不承认,微软在计算机字体方面作 出了巨大 的贡献,并成功 的
应用在windows 操作系统中,使广大的windows 用户在根本不了解计算机字体
的情况下,就可 以使用微软为他们提供 的优美 的计算机字体 ,并很少 出现乱码
等 问题。实际上 ,在Linux 下,你也可 以很轻易地得到丝毫不逊与 windows 下
的优美 的计算机字体 。看 了下面 的介绍,你就可 以对计算机字体有个初步的认
识,而且也可 以根据本文提到 的一些方法来解决你在linux 下碰到 的大部分 的
字体 问题。
1 汉字字符的编码方式1
为什么要讨论这个 问题呢?因为这是计算机识别并显示汉字的基础 ,也是
导致系统出现乱码 的罪魁祸首之一 ,所 以我们不得不去认识它。众所周知 ,我
们常用 的计算机键盘不过几十个按键 (这里主要指主键盘区,功能键除外 ),
这对拉丁语系的已经足够 了,因为它们大部分是 由20-30几个字母组成的,加上
常用 的符号,也就不过上百种字符 。如果全世界的语言都是这样 ,那么字符 的
编码方式就很简单 了,也用不着过多的讨论。事实上 ,很多亚洲语系的文字是
不能通过这些简单 的编码方式表示出来 的,拿我们最熟悉的汉字来说吧,现在
汉字的总数已经超过了6万个,常用的汉字也有两三千个,而且这个数量还在不
断的增加 ,使用这样简单 的编码方式,显然表示不了这么大量的字符 。所 以就
要求采用新的编码方式 。
1.1 GB2312-80编码
GB2312码是中华人 民共和 国国家汉字信息交换用编码 ,全称 《信息交换用
汉字编码字符集–基本集 》,由国家标准总局发布 ,1981年5月1日实施,通行
于大陆。新加坡等地也使用此编码 。
GB2312收录简化汉字及符号 、字母、日文假名等共 7445 个 图形字符 ,
其中汉字占 6763 个 。GB2312规定 “对任意一个 图形字符都采用两个字节表
示,每个字节均采用七位编码表示”,习惯上称第一个字节为 “高字节”,
第二个字节为 “低字节”。GB2312-80包含 了大部分常用 的一 、二级汉字,和
9 区的符号 。该字符集是几乎所有 的中文系统和 国际化 的软件都支持 的中文
字符集 ,这也是最基本 的中文字符集 。其编码范 围是高位 0xa1-0xfe ,低位也
是 0xa1-0xfe;汉字从 0xb0a1 开始 ,结束于 0xf7fe 。GB2312将代码表分为 94 个
区,对应第一字节 (0xa1-0xfe) ;每个 区 94 个位 (0xa1-0xfe) ,对应第二字节,
1关于本节的内容完全引 自/index.php?title=%E6%B1%89%E5%-
AD%97%E7%BC%96%E7%A0%81%E6%A6%82%E8%BF%B0&variant=zh-cn
1
两个字节的值分别为区号值和位号值加 32(20H) ,因此也称为区位码 。01-09区
为符号、数字区,16-87 区为汉字区 (0xb0-0xf7),10-15 区、88-94 区是有待进
一步标准化 的空 白区。GB2312将收录 的汉字分成两级;第一级是常用汉字计
3755 个,置于 16-55 区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用
汉字计3008 个 ,置于 56-87 区,按部首/笔画顺序排列 。故而 GB2312 最多能
表示6763 个汉字。
GB2312的编码范 围为 2121H-777EH ,与 ASCII 有重叠 ,通行方法是将
GB 码两个字节的最高位置 1 以示区别 。
1.2 GBK和 GB18030 编码
由于 GB2312 表示的汉字比较有 限,因此一些偏僻汉字在GB2312 中无法
表示。随着计算机应用 的普及 ,这个 问题日益突 出,我 国的信 息标准化委 员
会就对标准进行了扩充,得到了扩充后 的汉字编码方案 GBK 。它一方面 向上