文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>亲密接触gentoo之设置字体

亲密接触gentoo之设置字体

时间:2006-03-04  来源:cyvins

以前一直对linux下的字体系统不明白,设置也是迷迷糊糊的,最近看了一些文章,感觉有些比较清晰的思路了,不过也不知道对不对,不管了 ,总结一下先:
1.关于字体历史的一些介绍:
开始接触font的时候,被一些写法类似概念搞的晕头转向,比如Type 1,TrueType,OpenType,FreeType,xft,等等,一直都想把这些概念搞清楚,看了很多文章,都没有什么头绪,直到昨天看到那篇《A font primer for Linux 》(已经被我收藏了),才对这些概念有些比较清晰的认识。我对这些概念的认识也都是基于那篇文章的,也就是说如果作者讲错了的话,那我也跟着错了,下面的这段话就是根据那篇文章总结出来了。总结下来主要有两个目的:a)保持文章的完整性;b)也为了以后查阅方便。
计算机中最早的字体是monochrome bitmaps,就是textmode下的字体,这些字是由一个个点组成的,是不可变的,每种字体只提供几种固定的大小,当使用未提供的大小,显示出来的字符就会呈锯齿状。随着发展,就需要一种可变形的字体。于是在80年代后期,Adobe就设计出了一种可变形的字体Type 1。但是当时的系统巨头apple&ms自然就不甘心让Adobe统治字体的发展,于是他们也设计了自己的可变形字体,后来ms的被淘汰了,apple的TrueType被留下来。这两种字体原理是一样的,只是算法上有稍稍不同,没有哪个具有明显的优势,但是又是不相兼容的,于是出现Type 1,TrueType并存的局面。1996年,Adobe推出了兼容Type 1,TrueType的OpenType, 现代的Windows and Mac OS X都支持OpenType,但是OpenType并没有得到很大推广。后来出现的开源可变形字体引擎FreeType同时支持Type 1,TrueType,OpenType,而且还支持其他的一些字体格式,因为FreeType是模块化设计,如果有新的字体需要支持,只要加入相应的模块就行了,以前的都不需要改动。xft是xfree86使用的FreeType接口协议,xft只提供对FreeType的接口函数库。Fontconfig是xfree86用来负责字体的安装确认和匹配的。
具体工作原理为:首先系统的字体库使由Fontconfig通过读取XML文件建立起来的。当应用程序需要显示一串字符的时候,就调用xft,然后xft通过Fontconfig找到与应用程序要求符合的字体,然后将结果传递给FreeType,然后FreeType在字体文件中查找相应的字体,变形,光栅化。FreeType返回给xft的是对所请求的字型的8bit的灰度渲染结果。至于颜色渲染,由更高一级的工具完成,比如gtk,qt等。
2.X中的字体系统:
X中的字体系统有两种:核心X11字体系统和Xft字体系统。这个主要参考Xorg的官方文档以及debian的字体设置。这里只说一下具体配置的过程以及应用程序的设定。
1)核心X11字体系统的配置
i)建立字体目录:建立一个字体目录(如/usr/X11R6/lib/X11/fonts/myfonts/),并将要安装的字体文件copy到建立的目录下面。
ii)生成字体索引文件:如果是位图字体则只有一个fonts.dir索引文件,如果是像simsun.ttc这样的可缩放字体则还需要一个fonts.scale索引文件。索引文件可通过工具自动生成,如果是TrueType字体,可使用ttmkfdir工具。其它的字体可用mkfontdir和mkfontscale这两个工具来生成。
 $ mkfontscale /usr/local/share/fonts/*/
$ mkfontdir /usr/local/share/fonts/*/
fonts.dir文件和fonts.scale内容是一样的,所以可直接拷贝。
推荐运行 ttmkfdir 生成字体描述文件,而不要使用mkfontdir和mkfontscale,因为它生成的字体描述文件中常常找不出gbk的encoding。
执行:
   $ ttmkfdir /usr/local/share/*/ -o /usr/local/share/*/fonts.dir
   $ cp /usr/local/share/*/fonts.dir /usr/local/share/*/fonts.scale
iii)配置xorg.conf
将上述字体路径包含到xorg.conf中,  FontPath        "/usr/local/share/*" 
xorg.conf中要加入正确的字体模块,因为核心X11字体系统是通过这些模块引擎相应的字体的。
字体模块列表:
bitmap:位图字体,支持的字体文件有*.bdf,*.pcf和*.snf。
type1:Type1字体,支持的字体文件有*.pfa和*.pfb,还有CIDFonts。
speedo:Bitstream Speedo字体,支持的字体文件有*.spd。
freetype:TrueType字体,支持的字体文件有*.ttf和*.ttc。,在X.org系统中,xtt模块功能合并到该模块中。
xtt:另一个的TrueType字体模块,支持的字体文件有*.ttf和*.ttc。在X.org系统中,不使该模块,该模块的功能合并到freetype模块中。所以需要将这个模块去掉
iv)重启X服务器后就可使用新加入的字体了。xlsfonts命令可列出系统中已安装的X11核心字体。
v)使用xfontsel可以配置相应的字体名称。
  2)Xft字体系统:
i)建立字体目录:建立一个字体目录(如/usr/X11R6/lib/X11/fonts/myfonts/),并将要安装的字体文件copy到建立的目录下面。
ii)把字体路径加到/etc/fonts/local.conf中
iii)使用fc-cache -fv 把字体加入到了列表
iv)fc-list列出来可以在xft中使用的字体
v)配置/etc/fonts/local.conf 包括AA的打开和关闭;hint,autohint的打开和关闭;粗体的设置等。

3)应用程序的配置
i)GTK+2.x和QT程序都可以使用Xft字体系统,GTK+2.2版本及以上的程序默认使用Xft字体系统,不用进行配置。GTK+2.0程序如果要使用Xft,
则需设置环境变量GDK_USE_XFT=1。GTK+1.x程序是不支持Xft字体系统的,它只能使用X11核心字体系统。
ii)GTK程序有默认的全局配置文件。GTK+1.x程序使用/etc/gtk/gtkrc.zh_CN文件配置(X11核心字体系统) 例子如下(其中字体表示方法可由
xfontsel得到):
# This file defines the fontsets for Chinese language (zh) using
# the simplified chinese standard GuoBiao as in mainland China (CN)
#
# 1999, Pablo Saratxaga <[email protected]>
#
style "gtk-default-zh-cn" {
fontset = "-*-bitstream vera Serif-medium-r-normal-*-*-120-*-*-p-*-microsoft-cp1252,\
-*-simsun-medium-r-normal-*-12-*-*-*-*-*-gbk-0"
}
class "GtkWidget" style "gtk-default-zh-cn"
GTK+2.x程序使用配置文件/etc/gtk-2.0/gtkrc(xft字体系统),例子如下(其中字体表示方法可由fc-list得到,见font-conf手册):
style "gtk-default-zh-cn" {
    font_name = "Bitstream Vera Sans 10,SimSun 10"
    }
    class "GtkWidget" style "gtk-default-zh-cn"
iii)应用程序也可以在自己的配置文件或者在.Xresource中配置。
  遗留问题:
gtk+默认配置文件的优先级不清楚。
相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载