返回信息流来自原北邮人论坛
作者: ycflash
linux下的字体美化
如何使Linux桌面正确显示和输入中文, 一直是令Linux初学者头痛的事情. 目前有很多汉化的文章, 但大多只讲步骤而不谈道理, 让初学者云里来雾里去. 这篇文章将从X的字体原理入手,帮助大家理解X的字体机制,在汉化中学习.
首先, 我们要理解X的字体引擎. X中支持Truetype字体(一种可放缩字体) 的主要有四种引擎. freetype, xtt, xfs和Xft.
其中freetype 和 xtt 是 X 的内部模块. 使用的都是freetype1渲染引擎.
Xfs 和xft 是外部服务程序. xfs 是系统级的字体服务程序, 也可以作为X的内部模块, 使用的是X 内部的freetype2. Xft 和其他类库一样, 只有被调用的时候才被加载. 其中只有xft才有antialias 支持.
这里有必要讲讲freetype. Freetype 是开源字体渲染引擎, 并不只为X设计. 它的功能就是读取Truetype字体信息, 如大小, 分辨率, 编码等, 然后渲染成所需的位图数据输出. Freetype 现在的版本是 2.x, 与1.0 相比, 最大的差别就是加入了抗锯齿功能.
有这么多引擎,到底要用哪个好? 其实我们目前为止, 支持中文最好的还是xtt. 因为小字体的时候, 用函数描述法算出来的中文字体效果不能让人满意, 所以很多中文字体公司就在Truetype字体里嵌入了位图字体. 这些位图字体需要用特殊的方式读出来, 所有的引擎中就只有xtt能做到这一点.
我们下一步就是将字体添加到X中, 使xtt可以正确读取, 这样就可以了.
首先, 由于要配置Linux系统文件, 我们需要用root帐号进入, 相当于windows下的administrator.
X的配置文件是/etc/XF86Config-4 (比较新的显卡) 或者是 XF86Config (比较老的显卡). 用你喜欢的文本编辑器打开, 如 kedit或gedit.
打开后我们发现配置文件分成很多个Section, 我们首先要配置的就是 Section "Files" , 这个部分描述了X所要调用的文件信息.
要加入一个字体目录, 只需在里面插入一行 FontPath "目录名" 就可以了, 如:
Section "Files"
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.
FontPath "unix/:-1"
FontPath "/truetype" # 插入一个字体目录
EndSection
然后, 我们让X加载xtt字体引擎:
找到Section "Module", 像这样修改:
Section "Module"
# Load "dbe" # Double-Buffering Extension
# Load "v4l" # Video for Linux
Load "extmod"
Load "glx
# Load "type1" # type1 模组是渲染type1字体的, 和xtt冲突, 必需屏蔽
# Load "freetype" # freetype 模组是渲染Truetype字体的, 和xtt冲突, 必需屏蔽
Load "xtt" # 加入xtt模组引擎
EndSection
好了, 现在xtt会自动去 /truetype 里找字体.
现在开始拷贝字体到 /truetype里去, 先要在根目录建一个truetype目录, 打
mkdir /truetype
就可以了.
从windows分区拷贝要先mount, 就是作一个联接, 将Linux目录连到windows分区. 在根目录下建一个"c"目录.
mkdir /c
然后
mount /dev/hda1 /c
这样就将windows下的C盘 联接到我们Linux下的/c目录了, 进入/c, 应该可以看到你C盘的文件.
然后, 进入/c 中的字体文件目录, 一般在window下面的Fonts里, 注意目录名大小写在Linux下面是有区别的.
拷贝字体文件到 /truetype里, 打
cp simsun.ttc /truetype/simsun.ttf
cp tahoma* /truetype/
这样就将我们所需要的字体文件拷贝到truetype 里了.
下一步我们要设置字体文件, Linux中X的字体设置很烦锁, 不像windows一拷贝就完事, 初级阶段嘛, 大家还是忍忍吧, 呵呵.
1. 建立字体信息文件fonts.dir
如下
24
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
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
tahoma.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:tahoma.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-iso8859-1
tahomabd.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:tahomabd.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-iso8859-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-gbk-0
ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-gbk-0
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-gbk-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-fcd8859-15
ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-fcd8859-15
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-fcd8859-15
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-p-0-iso8859-15
ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-iso8859-15
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-iso8859-15
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
ai=0.3:simsun.ttf -misc-SimSun-medium-i-normal--0-0-0-0-c-0-iso10646-1
ds=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-c-0-iso10646-1
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-c-0-iso10646-1
第一行的24表示下面一共有24行设置 (好像有点傻) , 其他的格式都差不多:
ds=y:ai=0.3:simsun.ttf -misc-SimSun-bold-i-normal--0-0-0-0-p-0-gbk-0
说明:
simsun.ttf: 字体文件名
ds=[yn]: ds是xtt的功能, 设成"y" 表示粗体, "n" 表示正常.
ai=Real_number: 表示倾斜度. 不设表示自动.
misc : 表示字体的类别
SimSun : 是字体的名称
bold : bold 表示粗体, 其他如medium表示正常,
i : 表示斜体, r 是正常
p: 可变长度, c 是正方形, m是固定宽度
gbk: 字体编码
这里大家发现我们还使用了tahoma英文字体, 这样替换, 系统读取Simsun英文字体的时候, 就会用pp的tahoma替代.
好了, 现在存盘. 然后拷贝一个到fonts.scale
cp fonts.dir fonts.scale
然后拷贝编码文件 encodings.dir 到目录里来.
cp /usr/X11R6/lib/X11/fonts/encodings/encodings.dir /truetype
好, 重起, 把KDE, mozilla, galeon 等等所有默认字体都改成simsun, 哈哈, 是不是比从前漂亮了很多?
大家还是把这几个配置文件备份起来, 以后安装的时候就不用再设置了.
这里顺带说一下其他几个字体引擎的配置:
xfs : 配置文件是 /etc/X11/fs/config
xft : 配置文件是 /etc/X11/Xftconfig
xft 的配置相对来说比较容易, 只要将字体拷到配置文件中dir 指定的任何一个目录就可以了. 如果要小字体不显示AA, 可以在末尾加入:
match
any size > 8
any size < 17
edit
antialias = false;
match
any pixelsize > 8
any pixelsize < 17
edit
antialias = false;
这样 8~17号的字体就不会用抗锯齿功能了.
ycflash 设置精华标记 本主题 于 06-10-2004 08:46
由 ycflash 最后编辑于 06-10-2004 08:46
这是一条镜像帖。来源:北邮人论坛 / linux / #7同步于 1 周前
Linux机器人发帖
linux下的字体美化
ycflash
1 周前镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
[转载]一个关于汉化的帖子,不错
几乎适合任何Linux的简单,规范而有效的中文化
评注
张贴者: unix (addict)
张贴日期 12/04/03 12:40 AM
一.添加TrueType字体.用到了Windows下simsun.ttf tahoma.ttf tahomabd.ttf
安装完XFree86后,会自动生成了一个TrueType字体目录:
/usr/X11R6/lib/X11/fonts/TTF.这个目录已经包含了一些TrueType字体并且已经配置完毕.
您可以复制其他TrueType字体到这个目录中.也可以在/usr/X11R6/lib/X11/fonts/
目录下建立一个新目录然后把您的TrueType字体放到进去.
创建文件 fonts.scale 和 fonts.dir :
现在进入你放置TrueType字体的目录,然后运行:
mkfontscale &&
另外:你可能需要手动修改这两个文件。参考:
http://fractal.csie.org/~eric/wiki/...nfig#fonts.conf
http://freedesktop.org/software/fontconfig
修改XF86Config以加载支持TrueType的模块
"Module"部份应该是这样:
Section "Module"
...
Load "freetype"
...
EndSection
修改XF86Config中的FontPath部分加入TrueType目录
"Files"部份应该像这样:
Section "Files"
...
FontPath "YOUR FONTS DIR"
...
EndSection
更新字体缓存文件
最后,更新在 /etc/fonts/fonts.conf
文件中指明的所有字体的缓存文件,命令如下:
fc-cache
现在XFree86在重起后可以使用TrueType字体了. 您可以使用 xlsfonts 或
xfontsel 程序来查看一下是否已经有了新字体.
注: 在增加或减少了 TrueType字体后,你必须再次运行 mkfontscale 和
mkfontdir.不管增加和减少的是不是 TrueType字体,你必须再次运行 fc-cache.
二.GTK1中程序字体的设置(包括XMMS,Mplayer等).
style "gtk-default-zh-cn" {
fontset = "-*-*-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
-*-*-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0,*-r-*"
}
class "GtkWidget" style "gtk-default-zh-cn"
三.GTK2中程序字体的设置(如,gaim,gqview等)
中文字体主要修改文件/etc/gtk-2.0/gtkrc,以下是我的供参考
style "default"
{
font_name = "helvetica,simsun,sans 12"
}
widget_class "*" style "default"
这样中英文显示效果都不错。
四(tram edit)KDE中程序字体的设置.
首先,要运行qtconfig,打开字体的xft选项,因为如果不这样,有些标点会显示不出来.
其次,也是运行qtconfig,把输入模式选成over the spot,这样才能正常使用输入法.
五(tram edit)Emacs 中字体的设置
参考地址:
http://zhdotemacs.sourceforge.net/emacs/index.html
由于在sourceforge的二级域名,可能要找个代理才能看.
六(tram edit)vim和gvim中字体的设置
七(tram edit)mplayer加载中文字幕
八(tram edit)OpenOffice中文字体设置
参考:
一部分: www.linuxfromscratch.org www.xfree86.org
三部分: http://www.ajgenius.us/gnome/gnome2-gtk2-themes.html