红联Linux门户
Linux帮助

Linux中字体配置

发布时间:2007-03-26 00:58:48来源:红联作者:Reference
  当前Linux中有两种具有不同特点的子系统:

  1.系统字体配置

  1>.核心字体处理系统 xfs+xtt;

  2>.新一代字体处理系统 xft+fontconfig+freetype .

  配置X11核心字体有两步,第一,建立字体目录,在该目录中包含字体文件;第二,配置X服务器,使他能使用这些字体。字文件体一般放在/usr/X11R6/lib/fonts/truetype,其他地方亦可,下面生成索引文件,如果是位图字体则只有一个 fonts.dir 索引文件,如果矢量字体还要一个 fonts.scale索引文件。TrueType字体可用 ttmkdir工具,其他字体用 mkfontdir 和 mkfontscale . fonts.dir 和fonts.scale的内容是一样的,可以拷贝。接着要设置配置文件 XF86config-4 或 xorg.conf,填入新字体的路径和正确加载X字体模块。最后重启X服务器即可。xlsfonts命令可以列出系统已安装的X11核心字体。还有一个defoma工具可以使用。

  在Xft字体系统中安装新的字体是很简单的,只须把字体文件拷贝到fonts.conf中指定的字体文件目录即可,fontconfig会自动发现新字体。默认的字体目录如下:/usr/share/fonts ,/usr/X11R6/lib/X11/fonts/Type1, /usr/local/share/fonts, ~/.fonts ,拷贝完后,就可以用fc-list命令列出新安装的字体,如果没有,可以用 fc-cache 进行手动更新系统字体配置:fc-cache -f-v或 fc-cache 如果字体文件是以.gz结尾,应先解压再用。

  安装完后,可以用命令xfcontsel来选择字体,xlsfonts,fc-list查看字体列表。

  2.应用程序如何使用字体

  Linux下常见的GUI程序有三种:GTK1,GTK2,QT,基于这三种图形库的程序在美化上是有不同要求的。Xserver下常用的字体绘制方案就是上述两种字体处理系统的职责。下面分别介绍:

  1>.GTK1程序

GTK1程序不支持Fontconfig所以有点麻烦。按前面的方法将字体路径加入Session"files"段里,这样虽然X服务器知道字体放在哪里,但是GTK1的程序还不能直接使用它们,因为我们还没有把他们“注册”给字体服务器使用,这就需要在前面的Fontpath所指的目录下生成两个文件fonts.dir 和fonts.scale,这两个文件里有Fontpath所指目录下所有字体的列表信息,就是一个“索引”。有了这个索引,GTK1的程序就能找到相应的字体了。例如:xmms 和 gimp等。gtk1程序在使用字体后,还要指定要使用什么字体,对gtk1程序使用什么字体有一个全局配置文件"/etc/gtk/gtkrc.zh_CN"。

2.GTK2和QT

GTK2和QT程序可以使用Fontconfig。Fontconfig是一个把字体选择出来,并且决定怎样显示这些字体的函数库。类似于前面的XF86config 或 xorg.conf 里的Fontpath 属性,以及fonts.dir 和 fonts.scale的功能,就是让程序找到这些字体。对于GTK2和QT的程序来说,主要的设置文件是"/etc/fonts/fonts.conf"

  GTK2和QT的程序就多了:KDE,GNOME,Firebird等。

GTK+2.0 版本及以上的程序默认使用Xft字体系统,不用进行配置。GTK+2.0程序如果要使用Xft,则需要设置环境变量GDK_USE_XFT=1。

GTK+2.0 程序字体配置可以直接进行“应用程序”。它也有配置文件是"/etc/gtk-2.0/gtkrc"。

QT默认可以在KDE的“控制中心”配置。

以上列出的字体系统用法有两个例外。openOffice.org (使用自己的字体绘制技术)和Mozilla(使用fontconfig,但不是GTK2程序)。用命令 ldd /usr/bin/xmms 可以查询相关程序使用的字体服务器。到此,已经可以保证程序找到正确的字体,但仍可能出现乱码,下面就是解决字体显示问题,字体显示由freetype 和xtt 负责,它们决定了在屏幕上看到的字体效果,著名的“firefly美化包”就做了很多改善中文显示效果的工作,也就是所谓的“美化”。

  3.字体美化

  字体美化就是为应用程序选择合适的字体,由于xtt逐渐退出,下面基于freetype/fontconfig/xft介绍一些。这里的字体都是TrueType。字体美化主要包括三个方面:

1>.将中文显示不正常的问题解决掉,比如英文宽字符等;

2>.换漂亮字体;

3>.将英文字体与中文字体混用 。

这里我们要提一下fontconfig的作用:

1>.自动搜索字体路径,发现新拷贝的字体;

2>.当需要显示的字体不存在时,会自动选择其他字体代替显示(这是我们美化字体的关键);

3>.配合Xft等X系统的渲染引擎,实现高质量的字体输出。

fontconfig的配置文件有以下三个:

系统级配置文件:“/etc/fonts/fonts.conf”,一般不建议去修改;

"/etc/fonts/local.conf":一般修改这个文件;

用户级的字体配置:"~/.fonts.conf",只对当前用户有效。

下面介绍一些常见问题的解决办法:

a.英文字符变宽的问题

在用户的“~/.fonts.conf”中把中文字体的设置进行改变(2.3版以上有对中文字体名的支持,如果)libxft没有升级到2.1.7,那将有问题,解决办法要么降低fontconfig版本,要么升级libxft。绝大多数简体中文字体不需要设置gloabladvance为false,因为设置与否都没有任何效果。

b.某些网页的英文字体难看的问题

  这是由于那些网页使用了如Times,Helvetica等英文字体。原来的fontconfig2.2由于找不到这些字体,将自动使用最基本的serif或sans-serif字体。新的2.3版本把Times等字体映射到了其他系列的字体,字体看起来不够美观。修改“~/.fonts.conf”,再把Times等字体映射回你喜欢的字体即可。

  c.有关sans-serif系列字体优先使用问题

  在gnome系统菜单中的“字体”对话框选择字体时,可选择的字体都是英文字体,gtkrc中描述的也是英文字体,但是当前系统为中文环境是能够正常显示中文的。这其实是fontconfig在系统中起到的作用,在文件“/etc/fonts/fonts.conf”中添加或修改要显示的字体的顺序即可。

d.中英文字体混用问题

  对于中英文字体混用问题,混用是为了使中英文分开使用不同的字体,使得字体显示的更好看,当然可以更具上面的方法自己进行设置。
文章评论

共有 0 条评论