LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5592|回复: 15

我的Freebsd汉化方法[基于xft2的汉化]

[复制链接]
发表于 2003-10-3 22:43:28 | 显示全部楼层 |阅读模式
0. 前言和声明
下面是我的Freebsd5汉化方法,我想它并不是很适用于初学者,因为fontconfig对他们来说显得太晦涩,而这个方法需要仔细调整fonts.conf才能达到最佳效果,我也没有什么现成的配置文件可以提供给大家copy。不过从效果来说,应该是目前最好的。另外,也不算太麻烦。
请注意,所有的工作在cvsup/make world之后进行!
没用过4.x,但是下面的方法应该基本适用。

本文欢迎转载,但请写明原始出处和作者。谢谢
发表于 2003-10-3 22:50:36 | 显示全部楼层
我是初学者,汉化方法是cp tahoma.ttf /usr/X11R6/lib/X11/fonts/TTF/
呵呵,管它呢,看上去感觉也不错,只是不能显示粗体斜体什么的
 楼主| 发表于 2003-10-3 23:25:27 | 显示全部楼层
firefly的网页:
http://firefly.idv.tw/setfont-xft/patches/

下面提到的xxx的patch,就是指从该连接下对应目录下载的文件
另外我说的patch不一定完全必要和可靠,我只保证它们在我的系统上没问题 ;)
每个patch的作用可以从名字以及firefly的changelog中找到

1. patch相关软件包
需要patch三个软件包,xft2/fontconfig/freetype

Xft2:
  1. # cd /usr/ports/x11-fonts/Xft/
  2. # make patch
  3. # cd work/xft-2.1.2/
  4. # wget http://firefly.idv.tw/setfont-xft/patches/Xft2/xft-2.1.2-CJK-fixwidth-embededbitmaps-artificial_bold-20030606.patch
  5. # patch -p1 < xft-2.1.2-CJK-fixwidth-embededbitmaps-artificial_bold-20030606.patch
  6. # cd -
  7. # make install clean
复制代码
也可以把patch放到files目录,然后直接make install clean。但是手工patch放心一些吧
Xft的这个patch主要是能提取内嵌bitmap字体/解决英文字体过宽的问题。虽然这些也能通过写fonts.conf解决,但是并不是总有效。patch来的可靠些。

fontconfig:
cd /usr/ports/x11-fonts/fontconfig
ports里面的是2.2.90,但是2.2.1的patch依然适用
下载
fontconfig-2.2.1-fclang-miss_1_percent-20030617.patch
fontconfig-2.2.1-include_CJK_charmaps-20030626.patch.gz
fontconfig-2.2.1-multifamily-20030618.patch
然后同上,patch/安装之
注意第二个先要gunzip一下。这三个patch里面,1和2是解决缺少一些字的问题,第三个patch,是为了解决中文字体名以及对默认fonts.conf的调整,基本上,如果使用了这个patch(而不修改qt),qtconfig/kde里面会看到显示为乱码的中文字体名,而gtk2程序里面可以看到正确的中文字体名。

freetype
cd /usr/ports/print/freetype2
这里有三个patch,
freetype-2.1.4-smooth-usegamma-20030519.patch
freetype-2.1.5-UNPATENTED_HIN TING.patch
freetype-2.1.5-autohint-cjkfonts-20030924.patch
第一个是在AA的时候使用gamma,但是好像效果并不好,个人推荐只用后面的两个(提高中文字体hint/autohint的效果)。

整个来说,这三个patch,除了Xft2,其他的都不是必须的

QT的patch
cd /usr/ports/x11-toolkits/qt32/
firefly在这里只提供了一个3.2的patch,解决中文粗斜体以及中文字体名的问题,但是没有解决qt的缺字问题(比如☆, ……等);如果运气好或者能写出合适的fonts.conf,也许qt会找到恰当的替代字体,不再缺字。日本的akito有另外一套patch(freetype/fontconfig/Xft2/qt),效果不佳,字型管理部分还有严重bug,不过qt不缺字 @_@。。
release自带的QT 3.1.2虽然老点,但是编译kde 3.1.4应该没什么问题,也能正确处理中文粗斜体,除了没有中文字体名。
说了这么多,总之,个人不建议升级QT,系统自带的qt 3.1.2目前足够

或者,使用5.1-release的光盘里面的3.1.2ports,用它来重新patch/编译是最好的(3.1.x有很完善的patch,包括粗斜体,字型管理,中文字体名,打印)。patch在http://firefly.idv.tw/setfont-xft/patches/qt/old/
发表于 2003-10-4 00:11:09 | 显示全部楼层
多谢penny兄,这个方法对我来说确实是难搞了点。呵呵,
佩服一下penny兄
并对firefly表达一下敬仰之情。
发表于 2003-10-4 00:15:06 | 显示全部楼层
另外penny兄最好在本贴再发一张图,做为说明的比较好。
你另外一贴虽然有图,但分散在两贴,不方便看。
 楼主| 发表于 2003-10-4 00:41:35 | 显示全部楼层
2. 基本设置(配置文件的修改以及字体安装)

a. locale,5-current里面有GBK了,所以可以幸福的用GBK的locale(需要先cvsup/make world,release里面没有),4可能还是只有zh_CN.EUC吧。。我用bash,所以直接修改
/etc/profile,添加:
LANG=zh_CN.GBK
LC_ALL=zh_CN.GBK
export LANG LC_ALL

我自己的习惯是英文界面,中文输入/显示,所以
LC_ALL=""
LANG=en_US.ISO8859-1
LC_COLLATE=en_US.ISO8859-1
LC_TIME=en_US.ISO8859-1
LC_NUMERIC=en_US.ISO8859-1
LC_MONETARY=en_US.ISO8859-1
LC_MESSAGES=en_US.ISO8859-1
LC_CTYPE=zh_CN.GBK
export LC_COLLATE LC_TIME LC_NUMERIC LC_MONETARY LC_MESSAGES LANGUAGE LC_CTYPE LANG LC_ALL

b. xtt字体
粗斜体我们用xft2实现,XLFD的字体,能显示中文,不太难看就好
先从/usr/ports/x11-fonts/ttmkfdir安装ttmkfdir
然后是从windows里面借用两个字体:

# mkdir /usr/X11R6/xttfont
# cp simsun.ttf tahoma.ttf /usr/X11R6/xttfont
# cd /usr/X11R6/xttfont
# ttmkfdir > fonts.dir
我把fonts.dir里面关于simsun的encoding改了一下,可能不是必需的,大概是这样
  1. 17
  2. simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0
  3. simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
  4. simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0
  5. simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
  6. tahoma.ttf -microsoft-Tahoma-medium-r-normal--0-0-0-0-p-0-ascii-0
  7. tahoma.ttf -microsoft-Tahoma-medium-r-normal--0-0-0-0-p-0-fcd8859-15
  8. ..................
复制代码
然后cp fonts.dir fonts.scale

修改/usr/X11R6/lib/X11/XF86Config,
Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        FontPath     "/usr/X11R6/xttfont"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

Section "Module"
        Load  "dbe"
        Load  "dri"
        Load  "extmod"
        Load  "glx"
        Load  "record"
        Load  "xtrap"
        Load  "speedo"
        Load  "type1"
Load "xtt"
EndSection

不用去掉什么,品蓝色的部分是需要添加的
重启X,
xlsfonts | grep simsun
xlsfonts | grep tahoma,看看字体是不是加进去了

c. gtk1程序的设置(包括xmms)
我直接copy了linux下的配置文件, ~/.gtkrc.zh_CN
  1. # $(gtkconfigdir)/gtkrc.zh_CN
  2. #
  3. # This file defines the fontsets for Chinese language (zh) using
  4. # the simplified chinese standard GuoBiao as in mainland China (CN)
  5. #
  6. # 1999, Pablo Saratxaga <pablo@mandrakesoft.com>
  7. #
  8. style "gtk-default-zh-cn" {
  9.        fontset = "-microsoft-tahoma-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
  10.                   -misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-*"
  11. }
  12. class "GtkWidget" style "gtk-default-zh-cn"
复制代码
这样英文是tahoma,中文是simsun,看着还不错

xmms更简单,直接ctrl+p,fonts
选中Use fontsets和Use X font,然后直接用broswer键选simsun字体即可
我这里的结果是
-misc-simsun-medium-r-normal-*-*-120-*-*-p-*-gb2312.1980-0
 楼主| 发表于 2003-10-4 01:05:09 | 显示全部楼层
3. Xft2/fontconfig部分
前面patch了那么多,就是为了这里的方便
如果前面没有用fontconfig的第三个patch,那么在/usr/X11R6/etc/fonts/fonts.conf里面加上
  1. <match target="font" >
  2.   <test compare="more" target="pattern" name="weight" >
  3.    <const>medium</const>
  4.   </test>
  5.   <edit mode="assign" name="weight" >
  6.    <const>bold</const>
  7.   </edit>
  8. </match>
复制代码
如果patch过,那就应该已经有了

$ mkdir ~/.fonts
$ cd ~/.fonts
$ ln -s /usr/X11R6/xttfont/*.ttf  .
$ fc-cache -f -v

这样就完成了字体的安装,以后,需要添加字体,直接从windows分区ln -s到~/.fonts就可以(当然cp过来也行)。我个人习惯把所有的truetype字体放在一个目录,(比如/usr/X11R6/truetype),然后
ln -sf /usr/X11R6/truetype/*.ttf ~/.fonts/
fc-cache并不是必须的,系统会定时扫描目录,添加字体
所以你可以随意使用任何ttf字体,直接ln就行,个人另外推荐bitstream的英文字体

http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2

Xft的所有字体可以用fc-list查看,或者qtconfig,如果你前面patch过fontconfig,可能会看到中文的字体名(UTF8编码)
如图(gnome-terminal,字体是Bitstream Vera Sans Mono和方正准园)

顺便说一下,如果你要用gnome系的程序,pango也要patch,否则看不到中文粗斜体,方法和上面的类似

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2003-10-4 01:48:26 | 显示全部楼层
4. XWindow的设置
这里,我只想说一句,打开Anti-Aliasing(AA/使用字体平滑),欣赏AA字体的美丽效果吧
至少我的系统上,AA在任何字体,任何大小都是打开的,在patch了xft2之后,SimSun在小字号的时候直接使用内嵌bitmap字体,效果很好,12号以上,AA的效果也不错。用禁止AA的方法来“解决汉字显示模糊的问题”实在是不太可取

另外,在qtconfig里面设置XIM Input Style, 改为Over the spot,解决输入法不能上字的问题。在font页,Default font选Tahoma,设置tahoma字体的substitutuion为SimSun;或者用Bitstream Vera Sans 也不错。again,不用disable aa。

kde里面随便选用什么字体都行,自己看着办。。

konqueror里面把字体都设成tahoma(or Bitstream Vera Sans, or any font u like). 如果前面的patch顺利,应该粗斜体都有了

gnome类似,不再说了

输入法用fcitx最简单,在ports里面有,我用的scim,从这里下载bsd版
http://202.38.99.17/~huxw/
版本有点低,还算好用。

总之,这里是享受前面patch成果的地方

推荐statue兄的这篇文章

http://Community.FreeBSDChina.ORG/phpBB/viewtopic.php?t=5186

对simsun字体的显示效果提高很大
参照里面的具体解释,也可以对fonts.conf加深了解,我就不再赘述了。

另外一个大家常常遇到的问题,是字体的绑定,比如希望中文是simsun,英文是tahoma,具体的做法可以看看我以前的一篇文章
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=61740

基本上X Window的设置到此为止了。需要注意的是,如果要达到比较完美的效果,还要调整autohint/hinting的设置;qt的字型管理也不是太完善,这些都可以通过fonts.conf(最好写在~/.fonts.conf里面,这样升级fontconfig的时候不会被覆盖)来校正。所以,多看看fontconfig手册总是没错的。
 楼主| 发表于 2003-10-4 02:30:14 | 显示全部楼层
5. 其他软件的设置

首先,无比强烈的推荐statue兄的Freebsd Chinese Howto
http://freebsd.sinica.edu.tw/zh-tut/

我只说说上面没提到的一些问题(对5-current)

首先是gbfs, 这个在5-current下不能编译了,我不知道问题在哪里
解决办法:直接用mount_ntfs/mount_msdosfs加参数

mount_msdosfs -L zh_CN.GBK -D cp936 /dev/ad0s1 /mnt/c/
mount_ntfs -C eucCN /dev/ad0s5 /mnt/d/

马马虎虎,有些汉字还是看不了,但比不能用强,mount_cd9660和mount_ntfs的参数一样,我手头没有中文的光盘,这个没实验。另外据说gbfs小做改动就可以在5-current上编译,我再看看吧。。

再是console下的中文环境
5-current里面zhcon据说问题多多,找来statue兄维护的outta-port
# fetch http://freebsd.sinica.edu.tw/conf/outta-port.supfile
# cvsup -g outta-port.supfile
然后在/usr/ports/outta-port/cce下,make install clean
cce效果还行,就是分辨率只有640x480

其他好像没什么了,有问题再说了......也有可能我还没遇到,毕竟才装了三天。。。呵呵
 楼主| 发表于 2003-10-4 03:09:45 | 显示全部楼层
贴图玩:
qtconfig和kde的字体设置


中文字体名还是挺方便的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表