gentoo之设置字体

gentoo之设置字体

1.关于字体历史的一些介绍:
开始接触font的时候,被一些写法类似概念搞的晕头转向,比如Type 1,TrueType,OpenType,FreeType,xft,等等,一直都想把这些概念搞清楚,总结下来主要为了以后查阅方便。
计算机中最早的字体是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服务器后就可使用新加入的字体了。

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/fonts.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
#
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中配置。

 
拷贝字体

拷贝字体文件到/usr/share/fonts下的一个文件夹里,比如/usr/share/fonts/TTF。然后修改文件权限
代码: 修改权限

# chmod 644 /usr/share/fonts/TTF/simsun.ttc

修改/etc/X11/xorg.conf

保证/etc/X11/xorg.conf的Section "Files"里有相应的路径,比如:
文件: /etc/X11/xorg.conf

Section "Files"
        ...
        FontPath     "/usr/share/fonts/TTF"
        ...
EndSection

产生fonts.dir和fonts.scale

这一步的作用是为了使使用X核心字体API的程序可以利用本字体。这类程序的例子有xterm,emacs,xmms等。

安装x11-apps/mkfontdir和x11-apps/mkfontscale并产生fonts.dir和fonts.scale
代码: 安装mkfontdir和mkfontscale

$ emerge mkfontdir mkfontscale
$ cd /usr/share/fonts/TTF
$ sudo mkfontdir
$ sudo mkfontscale

更新fontconfig的cache

这一步的作用是为了使使用fontconfig来配置字体的程序可以利用本字体。qt程序和gtk+2程序皆属此类。
代码: fc-cache -fv

$ sudo fc-cache -fv
验证安装成功
提示! 做完上面这些步骤之后您可能需要重启一下你的X,然后继续下面的操作
安装x11-apps/xlsfonts,执行xlsfonts看是否可以列出刚才安装的字体名。X核心字体的名字很长,比如:
代码: X核心字体名

-misc-simsun-medium-r-normal--0-0-0-0-c-0-ascii-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gb18030.2000-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
-misc-simsun-medium-r-normal--0-0-0-0-c-0-ibm-cp850
-misc-simsun-medium-r-normal--0-0-0-0-c-0-iso10646-1
-misc-simsun-medium-r-normal--0-0-0-0-c-0-iso8859-1
-misc-simsun-medium-r-normal--0-0-0-0-c-0-iso8859-15
-misc-simsun-medium-r-normal--0-0-0-0-c-0-koi8-r

如果有,那么xmms这样的程序就可以使用。
提示! xlsfonts命令需要在X下的Terminal执行,不然你需要加参数-display displayname指定displayname
使用fontconfig的程序

执行fc-list看是否可以列出刚才安装的字体名。

 

 

一、字体设置
参考gentoo wiki上关于字体的文章
http://gentoo-wiki.com/HOWTO_Xorg_and_Fonts#Useful_topics

参考中文gentoo wiki的HOWTO上关于字体的文章
http://zh.gentoo-wiki.com/Index:HOWTO#.E5.AD.97.E4.BD.93

参考字体配置工具fontconfig的用户手册
http://fontconfig.org/fontconfig-user.html

字体的存放目录
/usr/share/fonts

fontconfig配置文件
/etc/fonts/fonts.conf (system wide)
~/.fonts.conf

可能要用到的字体工具
emerge mkfontdir mkfontscale

下载好看的英文字体:
emerge ttf-bitstream-vera corefonts

下载好看的中文字体:
emerge media-fonts/wqy-bitmapfont

在xorg.conf中Section "Files"中加入新增的字体目录

使用fc-cache更新系统字体

使用xlsfonts检查字体是否已经存在


你可能感兴趣的:(linux)