QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6306|回复: 30

[不含任何忽悠]面向菜鸟的gtk字体初级入门

[复制链接]
发表于 2006-5-16 06:54:20 | 显示全部楼层 |阅读模式
前言:
其实公社上关于如何汉化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,或者公社的文泉驿(强烈推荐)。

本帖子中包含更多资源

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

×
发表于 2006-5-16 14:06:55 | 显示全部楼层
我的系统里已经没有gtk1的桌面程序了
回复

使用道具 举报

发表于 2006-5-17 00:39:44 | 显示全部楼层
问与答:
问:为什么windows里面simsun等有黑体,linux下怎么弄都弄不出simsun的黑体来?
答:simsun的ttc包里面不含黑体。所以就弄不出来。windows下的simsun黑体是模拟出来的。

问:那为什么linux不像windows那样干?
答:为了这个问题,我曾经去google过。好像有开发人员说他们不喜欢windows的模拟黑体算法。并且讥笑windows的黑体非常难看,说他们没有计划要加入模拟黑体算法。但是,但是……现在linux也能模拟黑体了(具体要求忘了,公社里面有说)。那,那以前那个说法……莫非是吃不到葡萄就说葡萄酸?!真是天晓得。

问:如果没有模拟黑体,那怎么使用黑体?
答:使用含有黑体的字库,例如simhei(本身就是黑体),或者公社的文泉驿(强烈推荐)


是粗体吧
回复

使用道具 举报

发表于 2006-5-20 20:14:34 | 显示全部楼层
顶多说是过时了,毕竟很多都是N久前的帖子,看发帖日期就知道了。不能说是忽悠吧

如果不需要gtk1的东西,任何文件都不要改。直接扔到/usr/share/fonts或其子目录下就行
回复

使用道具 举报

 楼主| 发表于 2006-5-22 13:22:15 | 显示全部楼层
可惜啊,那mkfontdir就是忽悠,要不你给我一个xorg的用户文档,证明以前mkfontdir有能查阅点阵字的能力?
回复

使用道具 举报

发表于 2006-5-22 16:02:47 | 显示全部楼层
现在找不到好看的gtk1的theme才是真的麻烦
回复

使用道具 举报

发表于 2006-5-22 17:06:15 | 显示全部楼层
我记得好像没人说过mkfontdir针对矢量字。要不你给我一个帖子,证明有人有帖说过mkfontdir可以描述矢量字
回复

使用道具 举报

 楼主| 发表于 2006-5-23 11:41:31 | 显示全部楼层
没有人说过,但是有人这样做过

所以嘛,As your wish,就给精华贴
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=2457&highlight=mkfontdir
回复

使用道具 举报

发表于 2006-5-23 12:05:23 | 显示全部楼层
支持楼主, 批评说风凉话的人。
回复

使用道具 举报

发表于 2006-5-23 14:00:46 | 显示全部楼层
K一下过时的帖子也是不错的行为
错误的东西很容易让人走弯路的= =
回复

使用道具 举报

发表于 2006-5-23 17:22:50 | 显示全部楼层
呵呵,一不留神居然成说风凉话的了
回复

使用道具 举报

发表于 2006-5-31 02:05:45 | 显示全部楼层
很不错啊,楼主你用的是什么版的linux,漂亮!
回复

使用道具 举报

发表于 2006-5-31 12:21:22 | 显示全部楼层
linux发展太快,很多昨天还在用的东西,今天就被淘汰了,在不了解历史的情况下就说别人忽悠是一种不负责任的行为。
回复

使用道具 举报

发表于 2006-5-31 19:13:58 | 显示全部楼层
我也基本赞同楼上观点
回复

使用道具 举报

发表于 2006-5-31 19:46:22 | 显示全部楼层
真的没有忽悠?

1.
[code:1]
3.修改完之后xorg.conf之后,其实重新启动x就能让gtk2的程序使用中文字体。
[/code:1]
xorg.conf 里设置路径是给GTK 1 程序用的,影响 GTK 2程序字体的路径是/etc/fonts/fonts.conf 里面。



2.
[code:1] 最后一步,修改gtk1菜单字体。中文的话,是由/etc/gtk/gtkrc.zh_CN来控制的[/code:1]
应该区分不同的locale。GBK,UTF-8 locale 用的配置文件就不一样,分别是/etc/gtk/gtkrc.zh_CN.gbk,/etc/gtk/gtkrc.zh_CN.utf8




3.
[code:1]
问:为什么windows里面simsun等有黑体,linux下怎么弄都弄不出simsun的黑体来?
答:simsun的ttc包里面不含黑体。所以就弄不出来。windows下的simsun黑体是模拟出来的。
[/code:1]
模拟出来的不是黑体,是粗体,embold ,或者叫人工粗体。和黑体是不同的,黑体是simhei。是不同的两种字型。





4.
[code:1]
问:如果没有模拟黑体,那怎么使用黑体?
答:使用含有黑体的字库,例如simhei(本身就是黑体),或者公社的文泉驿(强烈推荐)。
[/code:1]
文泉驿不是公社的,和公社没有任何关系,是主开发者是FangQ,只是在公社发布相关的信息而已。
文泉驿的黑体是没有正式发布的,现在只发布的只有常规和粗体两种点阵。

黑体估计是不能模拟出来的。黑体都是矢量字体。






5
[code:1]
但是……现在linux也能模拟黑体了
[/code:1]
这是错误的说法,模拟“黑体”的不是Linux,Linux只是一个kernel。模拟粗体的是freetype (>=2.1.10)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 15:36 , Processed in 0.070711 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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