LinuxGTK字体美化原理.doc

上传人:自*** 文档编号:126226162 上传时间:2020-03-23 格式:DOC 页数:5 大小:47.45KB
返回 下载 相关 举报
LinuxGTK字体美化原理.doc_第1页
第1页 / 共5页
LinuxGTK字体美化原理.doc_第2页
第2页 / 共5页
LinuxGTK字体美化原理.doc_第3页
第3页 / 共5页
LinuxGTK字体美化原理.doc_第4页
第4页 / 共5页
LinuxGTK字体美化原理.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《LinuxGTK字体美化原理.doc》由会员分享,可在线阅读,更多相关《LinuxGTK字体美化原理.doc(5页珍藏版)》请在金锄头文库上搜索。

1、1.GTK1的程序是不支持Fontconfig的。所以有点麻烦。拿到一个字体,你首先要让X找到它对吧?这一步就是在 /etc/X11/XF86config的Section files段里面的Fontpath属性里说明的详细后面会讲。好了,X现在知道字体在哪里了。那gtk1的程序还不能直接使用它们,因为我们还没有给它们注册,这就需要在前面设定的Fontpath里生成两个文件fonts.dir fonts.scale这两个文件里有Fontpath下所有字体的列表信息,就是一个索引。有了这个索引,gtk1的程序就可以找到相应的字体了。生成这两个文件的工具有mkfontdir,mkfontscale,

2、ttmkfdir等等。好了,上面两步如果正确完成了,你的gtk1程序现在就可以正常显示汉字了。 常见的gtk1程序有xmms,gimp. 2.GTK2和QT程序可以使用Fontconfig。Fontconfig是一个把字体选择出来,并且决定怎么显示这些字体的东东。类似于前面提到的 XF86config里的Fontpath属性以及fonts.dir和fonts.scale的功能,就是让程序找到这些字体。所以,对于GTK2和 QT程序XF86config和fonts.dir就没有用了。所以对于这类程序来说,主要的Linux配置文件是/etc/fonts/fonts.conf。 Fontconfig

3、的高级功能有很多,详细的说明可以参考这里: http:/www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=48331 GTK2和QT的程序就很多了,KDE,GNOME,Firebird. 上面的两段提到的只是让程序找到字体,并不负责具体的显示工作。它们只能保证你的程序能找到字体不会出现乱码现象,也就是所谓的汉化 至于freetype/Xft或者xtt是什么?我的理解它们是负责具体把字体显示到屏幕上的东西,决定了你看到的字体是个什么效果。著名的firefly美化包就做了很多改善中文显示效果的工作。也就是所谓的美化 到此

4、你应该对汉化,美化有了一个大概的概念。接下来就是具体的操作 具体在Slackware 9.1上实现freetype/fontconfig/xft汉化美化工作 我用的是Slackware 9.1,但是对其它发行版,美化汉化的原理都是大同小异的。看了文章再通过实践加以理解,应该能够灵活应用其它发行版上的。 以下命令以#开头表示是以root身份操作,$开头则是以普通用户身份操作。 Step1. 准备TrueType字体,常用的如simsun.ttf tahoma.ttf verdana.ttf等等。然后决定你要把字体放在哪个目录里。这个目录随你喜欢,我把它们放在/usr/X11R6/lib/X11/

5、fonts/TTF/里。 比如你下载来的的ttf字体都在/home/username/myfonts/下面,就做如下操作 #cp /home/username/myfonts/*.ttf /usr/X11R6/lib/X11/fonts/TTF/ Step2. 让GTK1程序找到你刚才放进去的字体。上面说的方法你还没有忘吧?让我们先修改XF86config #vi /etc/X11/XF86config 找到 Section Files 这一段,在里面加上一个Fontpath属性 FontPath /usr/X11R6/lib/X11/fonts/TTF/ 当然,如果里面已经有了你放字体的路径

6、就不用加了,如果你的路径和我不一样,那就写你的路径,你也可以随时添加自己的字体路径,道理都一样。 如果你在XF86config里发现了 Load xtt这行,把它注释掉。我是不用xtt的接下来当然是准备fonts.dir 和fonts.scale了。生成这两个的文件工具前面说了。Slackware自带的是mkfontdir和mkfontscale,我个人强烈不推荐这两个工具,它们生成的fonts.dir很不爽,simsun.ttf里找不出gbk的encoding。你可以去下载一个叫ttmkfdir的工具: ftp:/216.254.0.38/linux/rawhide/1.0/i386/Fed

7、ora/RPMS/ttmkfdir-3.0.9-7.i386.rpm 假设你已经装上了这个工具,就做如下操作 #ttmkfdir /usr/X11R6/lib/X11/fonts/TTF/ -o /usr/X11R6/lib/X11/fonts/TTF/fonts.scale 现在检查一下这个文件 #vi /usr/X11R6/lib/X11/fonts/TTF/fonts.scale 如果里面有 :1:simsun.ttfxxxxxxxxxxxxxxxxxxxx 这样以 :1:开头的行,把它们都删掉,freetype不需要这个东西,而且可能会导致一些问题。特别再注意一下是不是生成了 sims

8、un.ttf -misc-SimSun-medium-r-normal-0-0-0-0-c-0-gb2312.1980-0 simsun.ttf -misc-SimSun-medium-r-normal-0-0-0-0-c-0-gbk-0 这两行,因为encoding是很重要的,mkfontdir生成的fonts.dir很可能没有-gbk-0的编码。这样也会导致一些问题。所以我用 ttmkfdir 确保无误后 #cp /usr/X11R6/lib/X11/fonts/TTF/fonts.scale /usr/X11R6/lib/X11/fonts/TTF/fonts.dir (这两个文件其实是

9、一样的) 你的gtk1程序已经可以使用字体了,但是在gtk1程序里当然还要指定你究竟要使用什么字体。对gtk1程序使用什么字体有一个全局Linux配置文件/etc/gtk/gtkrc.zh_CN 把我的Linux配置文件贴一下 # This file defines the fontsets for Chinese language (zh) using # the simplified chinese standard GuoBiao as in mainland China (CN) # # 1999, Pablo Saratxaga # style gtk-default-zh-cn f

10、ontset = -*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252, -*-simsun-medium-r-normal-*-12-*-*-*-*-*-gbk-0 class GtkWidget style gtk-default-zh-cn 这个文件告诉程序,对于英文字体优先使用bitstream vera sans字体,对于中文由于bitstream vera sans没有中文字体,就使用后面的simsun字体。至此,gtk1程序的汉化全部完成。 现在可以startx 运行一个xmms看看,界面如

11、何?至于xmms列表显示中文可以搜索其它文章。也很简单 补充几点技巧和说明: 1. -*-bitstream vera sans-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252 这种字体表示方法是不是很复杂?有个小技巧帮你选择自己想要的字体,/usr/X11R6/bin/下有一个程序xfontsel ,运行它。自己摆弄一下你就明白了。在这里你可以看到gtk1程序所能找到的ttf字体,有一些就是从你刚才生成的fonts.dir里读出来的。通过它你还可以得到你需要的字体的正确表达格式。 2.Slackware 9.1有了bitstream vera

12、 sans 等一系列优秀的ttf字体。它们默认也的都在/usr/X11R6/lib/X11/fonts/TTF/目录下,那些Veraxx.ttf的字体都是。可是那个目录下的fonts.dir没有把它们列进去。如果你前面都是按照我的方法做了,刚才那步ttmkfdir已经把它们收录进去了。如果你刚才操作的是别的目录,那就在这个/usr/X11R6/lib/X11/fonts/TTF下ttmkfdir 一次了,方法和前面的一样。 3.ttmkfdir生成的fonts.dir 和fonts.scale可能会有一些多余的编码,比如那些以ascii-0和adobe standard-0结束的行,在我这里引

13、起了一些问题,如果你觉得有什么异常,先把这样的行都删掉。 Step3 搞定gtk2和QT程序。 基于fontconfig选择字体的程序就容易配置多,fontconfig也提供了一些更高级的功能。类似gtk1,现让这些程序找到这些字体。前面已经说过XF86config里的Fontpath和fonts.dir文件已经没有必要了。fontconfig的核心Linux配置文件是/etc/fonts/fonts.conf用vi打开这个文件 开始就有这么一段 /usr/X11R6/lib/X11/fonts/.fonts/usr/share/fonts这段是告诉fontconfig去这些目录包括它们的子目

14、录里面去找字体。是不是比Fontpath和fonts.dir省事多了? 你要做的就是把你放字体的路径加上,我刚才放自己的路径已经被包括在里面了。所以不用修改它。 运行 #fc-cache 更新字体信息。 好了,现在gtk2和qt的程序就可以使用你添加的字体了,太简单了吧?而且对fonts.conf的修改马上就可以生效。不像gtk1程序修改gtkrc后还要重新运行,修改XF86config甚至还要restart X等等。 类似gtk1程序,gtk2和qt程序都有一个全局字体配置。 gtk2程序的全局Linux配置文件是/etc/gtk-2.0/gtkrc 也把我的内容贴上来 style user

15、-font font_name=Bitstream Vera Sans 9 class * style user-font 是告诉程序使用Bitstream Vera Sans ,字体大小是 9 qt程序的默认字体配置 $/usr/lib/qt-3.2.1/bin/qtconfig 出来一个图形界面,在里面就可以方便选择你要的字体了 补充几点技巧和说明: 1.刚才提到的xfontsel可以帮你查看gtk1可用的字体,那么fontconfig究竟找到了哪些字体呢?也有一个程序叫fc-list,默认在 /usr/X11R6/bin/下面,运行它,会显示一个列表。里面的字体名称就是可以使用的字体。比

16、如我刚才的gtk2Linux配置文件的字体名字就在里面。 2./etc/fonts/fonts.conf的强大的功能有很多,其实也很复杂。详细的设置可参考本文开头给出的文章连接。 3.你应该会发现。比如在kde控制中心里选择字体的时候,你可以选择所有字体都是Tahoma,Vera sans什么的,我的gtkrc里写的也是一个英文字体,这样英文字体看起来很pp,而中文字体又是如何决定的呢?为什么我选择了英文字体而中文字体还能正常显示呢?这就是fontconfig的功劳,在我的fonts.config里有这么两段: Bitstream Vera Sans Tahoma Verdana Arial Helvetica Nimbus Sans L Luxi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 机械/模具设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号