|
前言:
其实公社上关于如何汉化gtk的教程是多得不能再多了。可惜里面有太多的忽悠帖子,什么运行mkfontdir来生成font.dir啦等等(我心想,你们tnnd真的试过了吗)……有些是过时的,例如使用ttmkfdir(这个程序已经不能用了),不使用freetype,要用xtt。我在刚开始读公社的精华贴时,真的被忽悠得好惨。弄了n久都搞不定,到了最后终于搞定了,差点跑到这里来发贴骂人。后来想想自己是读书人,算了……但是,我实在不想有更多的新手被那些精华忽悠,只好自己写一贴出来。由于本人水平有限,难免出现了很多错误,多谢道网友的提醒。
初级入门的意思,就是不会涉及到font.conf的问题。也就是说,字体更换(就是挂羊头卖狗肉的意思。明明是字体A,在显示的时候却用字体B来代替)的问题,本文章不会教。本文章的目标,让所有的gtk1,gtk2程序都能正常地显示中文。
理论:
这个我不想多说了,公社关于字体处理机制的精华到处都是,里面没有什么忽悠。有兴趣的新人可以翻查精华或者狗狗。
实践:
软件范围:xorg 6.9/7.0。相信6.8.2也应该没有问题。
1. 和所有的指导文章一样,第一步当然是把你喜欢的字体拷贝到一个文件夹下面啦。理论上什么文件夹都没有问题。不过我一般喜欢把字体放在和系统字体同一个文件夹下面。对于xorg 6.8.2/6.9,系统的字体文件夹是/usr/lib/X11/fonts。对于xorg7.0,系统的字体文件夹是/usr/share/fonts/X11。其实这样就能让gtk2的程序使用简体的拉。具体见X.org的用户手册:http://ftp.x.org/pub/X11R7.0/doc/html/fonts2.html#4 2.1.1第一段。
反正我现在用的是xorg 7.0。所以我在/usr/share/fonts/X11下面起了一个叫TrueType的文件夹。把从windows那里得到的simsun.ttc和simehei.ttf拷进去。不过,强烈推荐文泉驿点阵中文,好看得不得了(英文好像有点bug)。这字体能在这里得到:http://www.linuxfans.org/nuke/mo ... ic&t=149691
记得使用ttf后续的那个啊!
3.如果你无聊的话,那就在用fc-cache -fv来让linux干点活吧。不过你也可以无视这步。因为xft会自己找。
下面的步骤使用来对付gtk1的。如果你没有任何gtk1的程序,例如xmms。下面所有内容你都可以无视。不过如果你没有使用任何gtk1程序,你又干吗看这贴呢?嘿嘿……
3. 修改xorg.conf文件。该文件在/etc/X11下面。在Section "Files"里面,加上你刚才新添加的那个目录。例如,我是FontPath "/usr/share/fonts/X11/TrueType"
然后,很重要的一步,在Section "Module"
里面,添加 Load "freetype"
。如果有的话,,,,�欢ㄒㄒㄒㄒ�确定前面没有#。至于xtt,如果有的话你就在它前面用#注掉,没有的话就算了。
这里解释一下,根据官方文档http://ftp.x.org/pub/X11R7.0/doc/html/fonts2.html的说法,freetype和xtt都可以用作ttf和ttc类型字体的显示。但是在实践当中,出现了和某精华贴相反的情况,xtt不能让gtk1的程序显示truetype出来(现象是乱码),反而freetype可以。大家可以根据自己x window的版本,选择不同的模块。
先解释一下,gtk1的程序字体显示是由/etc/gtk下面的那堆gtkrc来控制的。不过,想要通过那堆gtkrc来控制字体,你首先要让gtk1的程序识别你的字体。而gtk1程序的字体识别,是通过两个叫fonts.dir和fonts.scale的文件来完成的。
4.回到你放ttf字体的那个目录下面。一定要输入mkfontscale(不是mkfontdir)。这时候会得到一个fonts.scale的文件。然后cat fonts.scale > fonts.dir就可以了。
这里还是得声讨一下那些口口声声说输入mkfontdir,然后cat fonts.dir > fonts.scale的精华贴和写这些精华贴的人。真不知道你们是怎么弄出来的。看看官方的文档是怎么写的?http://ftp.x.org/pub/X11R7.0/doc/html/fonts2.html
Installing scalable fonts is very similar to installing bitmap fonts: you create a directory with the font files, and run `mkfontdir' to create an index file called `fonts.dir'.
There is, however, a big difference: `mkfontdir' cannot automatically recognise scalable font files. For that reason, you must first index all the font files in a file called `fonts.scale'. While this can be done by hand, it is best done by using the `mkfontscale' utility.
怀疑你们没有看清楚,“you create a directory with the font files, and run `mkfontdir' to create an index file called `fonts.dir'.”指的是安装bitmap fonts的过程,不是点阵字体的过程。如果硬用mkfontdir,只会得到一个两个字节的fonts.dir文件。
还有一点就是,不知什么原因,ttmkfdir不能工作了,生成的scale文件也不全。大家还是使用mkfontscale吧。
5 完成了第四步,任何gtk1的程序包括xmms里面的菜单字体不会有任何变化……(= =),因为不是这两个文件控制的。但是,这时候在首选项里面的字体标签里面,你点击浏览的话,就会发现simsun等字体都会出现在里面。这时候你才能想其他精华帖子里面写的那样,使用
-misc-simsun-medium-r-normal-*-12-*-*-*-p-*-gb18030.2000-0
6. 最后一步,修改gtk1菜单字体。中文的话,是由/etc/gtk/gtkrc.zh_CN来控制的。不过,如果修改该文件的话是系统级的修改。我一般是把这个gtkrc.zh_CN的文件拷贝到我自己的用户根目录下面,把它改名为.gtkrc.mine(看清楚,前面多了个点的),然后再修改。修改内容就像其他精华那样:把原来花括号里面的内容全部用#注掉,添加上
fontset = "-*-simsun-medium-r-normal--14-*-*-*-*-*-zh_CN.GB18030,\ -*-*-medium-r-normal--14-*-*-*-*-*-zh_CN.GB18030,*-r-*"
修改好之后,重新启动一下x。这时候你的gtk1程序也能展示出最美好的一面的啦。
问与答:
问:为什么windows里面simsun等有粗体,linux下怎么弄都弄不出simsun的粗体来?
答:simsun的ttc包里面不含粗体。所以就弄不出来。windows下的simsun粗体是模拟出来的。
问:那为什么linux不像windows那样干?
答:为了这个问题,我曾经去google过。好像有开发人员说他们不喜欢windows的模拟粗体算法。并且讥笑windows的粗体非常难看,说他们没有计划要加入模拟粗体算法。但是,但是……现在linux也能模拟粗体了(具体要求忘了,公社里面有说)。那,那以前那个说法……莫非是吃不到葡萄就说葡萄酸?!真是天晓得。
问:如果没有模拟粗体,那怎么使用粗体?
答:使用含有粗体的字库,例如simhei,或者公社的文泉驿(强烈推荐)。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|