Debian GNU/Linux中文化FAQ [转]

原文地址: http://hi.baidu.com/tombkeeper/blog/item/cd7ae31fa15db4f5e1fe0b6d.html
如无特殊说明,本FAQ中所述内容都以Debian Etch + KDE为环境。

Q:
     设置为中文locale时,man的时候提示这样的错误:
/usr/share/groff/1.18.1/tmac/troffrc:44: can’t find macro file `gb.tmac’
不过内容可以正常出来。在英文locale下则没问题。如何解决?
A:
     安装groff软件包即可:
tk@xfocus:~$ sudo apt-get install groff

Q:
     指定KDE 使用Tahoma字体,当遇到中文的时候,就会自动用SimSun来显示。安装
永中集成Office后,本来用SimSun来显示的地方变成了用永中粗黑体显示。如何让永
中的字体不干扰系统原来的字体设置?
A:
     出现这个问题的原因可能是永中的字体名称都是以“Evermore”开头的,首字母
为“E”,排序比较靠前。

     永中的字体文件都放在/usr/X11R6/lib/X11/fonts/TrueType 这个目录下,可以
修改/etc/fonts/fonts.conf,将其中的“<dir>/usr/X11R6/lib/X11/fonts</dir>”
这一行注释掉,永中的字体就不会再干扰系统的字体配置了。

     如果/usr/X11R6/lib/X11/fonts目录里还有其他字体,可以将其移动到别的字体
目录,譬如/usr/share/fonts目录下。

     永中Office对字体的使用比较特殊,只认这个目录,而并不受系统的fontconfig
机制影响,所以这样做并不会影响永中Office的使用。如果想让永中Office使用其它
系统中安装的字体,只需要在将字体拷贝到/usr/X11R6/lib/X11/fonts/TrueType 目
录下或建立符号链接即可。

Q:
     Debian下有什么比较好的中文字体?
A:
     推荐安装这三个字体软件包:ttf-arphic-ukai ttf-arphic-uming xfonts-wqy

     其中,ttf-arphic-ukai(文鼎楷体)和 ttf-arphic-uming(文鼎宋体)这两个
字体是文鼎公司友情提供给Linux 用户使用的;xfonts-wqy(文泉驿点阵宋体)是一
个开源产品,出自文泉驿计划(
http://wqy.sf.net/)。文泉驿计划是一个很值得关
注的中文字体项目,后续还会有其他字体出品,大家可以留意一下。

Q:
     为什么很多宋体的字体被称为“明体”?
A:
     我们现在说的“宋体”这种字形,诞生于宋末,定形于明初。台湾和日本一般称
之为“明体”或“明朝体”,大陆一般称“宋体”,都是一回事。
    
     关于宋体字的历史可以参考叶德辉《书林清话》一书。

Q:
     Sans Serif、Serif、Monospace这些字体分类是什么意思?
A:
     西文字体根据笔画特征主要分为Sans Serif(无衬线字体)和Serif(衬线字体)
两大类,另外还有一种Monospace(等宽字体)。

     Serif 的笔画开始和结束的地方有额外的装饰,而且笔画的粗细会因横竖的不同
而有不同,对应中文字体的宋体、楷体等。Sans Serif则沒有这些额外的装饰,笔画
粗细大致差不多,对应中文字体是黑体、圆体等。Monospace 强调的是等宽,这类字
体中,最宽的M和最窄的I所占宽度都是一样的,对应中文字体是新宋体。

Q:
     中文字体已经配好了,但是像NSimSun 这种等宽字体并没有出现在系统的等宽字
体列表中,所以konsole之类的程序也就无法使用这些字体,应该如何配置呢?
A:
     虽然等宽字体列表中没有这些字体,我们仍然可以手工修改配置文件,指定相应
程序使用某种字体。例如修改.kde/share/config/kconsolerc中的defaultfont。

Q:
     GTK和GTK2的字体配置文件是什么?
A:
     全局配置文件是/etc/gtk/gtkrc.zh_CN和/etc/gtk-2.0/gtkrc,个人配置文件是
~/.gtkrc.zh_CN和~/.gtkrc-2.0。

Q:
     为什么我对系统进行中文化配置后,GTK 程序菜单里的汉字可以正常显示但是菜
单阴影就不正常了?
A:
     先删除改动过配置文件,看问题是否能解决,如果删除配置文件菜单能正常工作
就说明的配置文件写的有问题。

Q:
     安装SCIM后,按Ctrl+Space无法唤出。怎样才能使用SCIM?
A:
     修改/etc/X11/Xsession.d/95xinput内容为:

export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
scim -d

     然后chmod 755 /etc/X11/Xsession.d/95xinput

     更简单的办法是安装im-switch软件包:
tk@xfocus:~$ sudo apt-get install im-switch

     使用im-switch可以简单的在多个输入法之间切换,当然需要重启X:
tk@xfocus:~$ im-switch -s scim

Q:
     zhcon为什么在root下才能进行中文输入,普通用户根本切换不出输入法?
A:
     Debian Sarge中的0.2.3版zhcon确如此,这是一个bug。Debian Etch和Ubuntu中
的新版zhcon 已经修正了这个问题。不过新版zhcon似乎和gpm同时使用的时候会有些
问题。

Q:
     下载了cce 0.5.1,但是编译出了很多错,怎么办?
A:
     我个人认为cce的确是比zhcon更好的终端中文环境,不过由于官方的开发似乎已
经停滞很久了,所以用现在版本的gcc 编译起来的确需要费一些事。可以这个地方找
到答案:
http://www.linuxsir.org/

     如果想省事,也可以安装别人友情提供的RPM包:
    
http://ftp.chinalinuxpub.com/cce/cce-0.51-2.FC4.i386.rpm

Q:
     为什么我的cce在终端下运行后只能以640×480的分辨率工作,而且退出后原来的
终端还显示不正常?
A:
     这多半是由于你没有/dev/fb设备造成的。在/etc/rc.local中增加一行:
     ln -s /dev/fb0 /dev/fb

Q:
     tmsnc中可以正常显示中文,但输入的中文都是乱码,如何解决?
A:
     scim在tmsnc中输入可能有问题,换fcitx就可以了。

Q:
     如何强制让某个名称的字体实际显示为另一种字体?
A:
     修改字体配置文件/etc/fonts/fonts.conf,增加下面这段就可以让monospace以
NSimSun显示,而sans、serif、serif等字体的英文以Tahoma显示:

     <match target="pattern">
       <test qual="any" name="family">
         <string>monospace</string>
       </test>
       <edit name="family" mode="append" binding="strong">
         <string>NSimSun</string>
       </edit>
     </match>
     <match target="pattern">
       <test qual="any" name="family">
         <string>serif</string>
         <string>sans-serif</string>
         <string>sans</string>
       </test>
       <edit name="family" mode="append" binding="strong">
         <string>Tahoma</string>
       </edit>
     </match>

Q:
     为什么在mlterm里使用vi就会导致mlterm自动退出?
A:
     打开字体目录下面的fonts.dir和fonts.scale,可以看到其中包含类似这样的信
息:

simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-c-0-gb2312.1980-0
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal–0-0-0-0-c-0-gb2312.1980-0
ds=y:simsun.ttf -misc-SimSun-bold-r-normal–0-0-0-0-c-0-gb2312.1980-0

     fonts.dir和fonts.scale通常是由mkfontdir、mkfontscale或者ttmkfdir自动生
成的。“ai”和“ds”都是xtt 模块使用的标记。“ai”表示斜体的倾斜度,“ds”
表示是否用粗体。而debian默认只用了freetype。所以在遇到字体切换的时候,就会
出错。在XF86Config-4文件里加载xtt就可以解决这个问题:

Section "Module"
Load "xtt"

     或者把fonts.dir和fonts.scale前面的这些标记去掉就可以了。在VIM中:

:%s/^.*://g

     注:以上问题仅在Debian Sarge中遇到过,在Ubuntu 6.06和使用Xorg 的Debian
Testing中都没有,怀疑可能和Sarge使用的XFree86有关。

Q:
     设置了export LANG=zh_CN.GBK,怎么反而连中文都显示不了?
A:
     如果没有生成GBK 的locale,但是指定了LANG=zh_CN.GBK那么大多数软件都无法
显示中文。也有少数例外,譬如mrxvt等。可以先执行“locale -a”检查一下是否安
装了zh_CN.gbk。如果没有,就需要手工生成。

     在Debian下可以执行“dpkg-reconfigure locales”,选上“zh_CN.GBK GBK”,
生成locale。

     在Ubuntu下需要先编辑/var/lib/locales/supported.d/ 目录下的zh文件,加入
“zh_CN.GBK GBK”,然后执行sudo locale-gen即可。

Q:
     使用GBK字符集之后,为什么GVIM的菜单显示不了?
A:
     GVIM没有GBK的菜单,可以强制GVIM仍然使用GB2312 的菜单。在GVIM配置文件中
增加:
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

     或者在使用GVIM时临时把编码改到GB2312。可以修改KDE菜单中GVIM 的执行命令
为:sh -c ‘export LANG=zh_CN.GB2312;gvim -f %U’

     (2006.09.25注:GVIM升级到7.0.94之后已经可以在GBK下显示中文菜单了。)

Q:
     GVIM里的汉字和英文字符间距都很大,如何解决?
A:
     在GVIM配置文件中增加:

if v:lang =~ "^zh_CN"
set guifont=""
endif

Q:
     VIM中的汉字处理不正常,一次只能删除半个汉字,如何解决?
A:
     在VIM配置文件中增加:

if v:lang=~ "^zh_CN"
     set encoding=prc
     set termencoding=cp936
     set fileencoding=cp936
endif

Q:
     系统可以正常显示中文,但是Kaffeine不能显示中文字幕,这是怎么回事?
A:
     Kaffeine使用的是xine-lib引擎,而xine-lib使用的字体格式和系统字体不同,
必须单独为它制作中文字体。xine-lib中有一个可以将普通TTF 字体转为xine字体的
工具,不过系统自带的xine-lib软件包中并不包含它,需要自己下载源代码编译。

     下载xine-fontconv.c:
tk@xfocus:~$ wget http://xine.cvs.sourceforge.net/*checkout*/xine/\
xine-lib/misc/xine-fontconv.c

     xine-fontconv依赖于freetype开发库:
tk@xfocus:~$ sudo apt-get install freetype6-dev

     编译xine-fontconv:
tk@xfocus:~$ gcc -o xine-fontconv xine-fontconv.c `freetype-config \
–cflags –libs` -lz

     选择自己喜欢的字体,譬如SimHei,在xine-lib的字体目录生成字体:
tk@xfocus:/usr/share/xine/libxine1/fonts$ sudo ~/xine-fontconv \
/usr/local/share/fonts/simhei.ttf simhei gbk

     然后对Kaffeine的“设置”->“xine引擎参数”进行配置。将subtitles 中的字
符编码设置为gbk。字体大小设置为除“tiny”和“small”之外的,譬如“large”。
这主要是因为simhei.ttf 不能生成“tiny”和“small”的字体,对应的16和20号字
体文件都是坏的。在“专家选项”中的把字体名称设置为simhei。

Q:
     Freemind等Java程序的中文菜单显示不正常,如何解决?
A:
     进入JRE或者JDK安装目录下的lib/fonts/,在这里创建一个名为fallback的目录,
然后将系统的中文字体文件(例如simsun.ttf)在其中创建符号链接。

Q:
     MAC OSX系统上的dfont字体能在Linux上用么?
A:
     可以,配置和使用方法和ttf字体完全相同。

Q:
     在某次升级软件包之后,原先配置好的中文字体就不正常了,这是怎么回事?
A:
     在2006年的某一次软件包升级之后,Etch就开始支持中文字体名称。譬如原来类
似“SimSun:size=12”这样的字体设置,现在就需要改写为:“宋体:size=12”。

This entry was posted in GNU/Linux and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *