控制台字体

十月 1st, 2008

因为当时X还没有开启,控制台不可能用X核心字体或者xft,而是有自己的一套,一般放在/usr/share/consolefonts下。可以用aptitude install console-terminus安装专门为其准备的console-terminus字体,这是一套适合控制台使用很漂亮的等宽字体。

在使用之前,用unicode_start打开Unicode模式。
whereis unicode_start
vi unicode_start

db_mode -u
dumpkeys | loadkeys –unicode
consolechars –font= –sfm=
echo -n -e ‘33%G’

这个脚本先把键盘置于Unicode模式,然后用consolechars工具接受我们传来的参数设置字体,最后用echo -n -e ‘33%G’命令把控制台置为Unicode模式。

自己设置字体的话,先ls /usr/share/consolefonts浏览字体。
consolechars -f Uni3-TerminusBoldVGA16查看效果。
确定了以后在/etc/console-tools/config中修改SCREEN_FONT为自己指定的字体。
如SCREEN_FONT=Uni3-TerminusBoldVGA16.psf

控制台只能使用这种psf字体,而系统提供的包括安装的Terminus字体中都没有中文字符,所以有Unicode编码的中文名文件时用ls命令查看会是一些小方框。

所以如果想让控制台支持中文显示以及输入,还需要其他更麻烦的步骤,如安装zhcon,然后用zhcon –utf8开启一个新的支持中文的控制台,那样刚才针对fb设置的字体都会无效。
也可以安装unicon,unicon通过修改内核提供中文支持,需要重新编译内核。另外还有fbiterm, jfbterm等。

以繁體中文介面安裝 Debian 時預設會安裝的套件

http://www.turbolinux.com.cn/products/tlw/tlc/node143.html

http://tetralet.luna.com.tw/index.php?op=ViewArticle&articleId=194&blogId=1

Unicode,CJK与字体

九月 16th, 2008

ASCII编码了英文环境的128个符号,而Unicode则是把这个星球上所有人类使用的符号统一编了一个号,所有人只需使用其中一个子集,中文被包含在其中称为CJK的部分,CJK是中国日本韩国的意思,三国文字中字形相同的汉字编码也是一样的。CJK中的符号又根据常用与否又分为
# CJK Compatibility
# CJK Compatibility Forms
# CJK Compatibility Ideographs
# CJK Compatibility Ideographs Supplement
# CJK Radicals Supplement
# CJK Strokes
# CJK Symbols and Punctuation
# CJK Unified Ideographs
# CJK Unified Ideographs Extension A
# CJK Unified Ideographs Extension B
等几个子集。
其中CJK Unified Ideographs包涵了两万多常用汉字,是中文显示最主要的部分。
可以把Unicode想象成一张大表,在其中放着这个星球上的每一个符号和与之对应32位数字索引,32位索引意味着这张表可以容纳2的32次方也就是40多亿个符号,这基本可以包括任何人脑想象得出来的符号。但直接用这个索引来标明符号的缺点是冗余太大,一个英文字母用ASCII码表示只需8位,但Unicode需要32位。于是就产生了很多编码方式,如UTF8,UTF16等(包括中国的GB18030也最终映射到了Unicode表),编码的宗旨就是给常用的符号分配短一点的码位,不常用的分配长一点的,以减少冗余。
存放在磁盘上的文本文件,都是按照某种方式编码后的数据,要最终把这些文字显示出来,首先要用对应的编码方式解码,找到那个字符在Unicode中的编号,然后显示其对应的图形,这时候就要用到字体文件了,字体文件中保存这符号的图形,因此体积相对会很大,一种字体文件一般不会包含所有的Unicode字符图形,而只是其中针对某一种语言的子集。
http://www.alanwood.net/unicode/unicode_samples.html打开这个网页,显示的方框就是你系统上没有装对应字体的Unicode字符,这个Win平台的小工具可以查看Unicode和字体文件的信息。http://www.babelstone.co.uk/Software/BabelMap.html


如图显示,CJK Unified Ideographs共有20932个符号,微软雅黑字体中包含了其中20909个,比其它字体都要多一些。而CJK Unified Ideographs Extension中6582个稀奇古怪的汉字雅黑也全部把他们实现了,其他字体如宋体却只实现了 52个,至于CJK Strokes则根本没有字体文件实现了其中的符号,所以也不知道它们是什么样的,它们的编号从U+31C0到U+31EF只需16位,还在Unicode中最基本的BMP平面上,据说是为了方便GB18030映射到Unicode引入的。

另外Windows自带了一个charmap程序,可以用来查看字符映射的信息。还可以在记事本中按住Alt+Unicode码输入符号。

Linux控制台下(没有启动X)可用unicode_start开启unicode模式,也可以用Alt+Unicode码输入符号。