安装和配置字体

在 SUSE Linux Enterprise 中安装附加字体非常简单。 只需要将字体复制到位于 X11 字体路径中的任何目录即可(请参见 第 26.2.1 节 “X11 核心字体”)。 安装目录应是 /etc/fonts/fonts.conf 中配置的目录的子目录(请参见第 26.2.2 节 “Xft”),或用 /etc/fonts/suse-font-dirs.conf 包含到此文件中。

以下是 /etc/fonts/suse-font-dirs.conf 中的摘录。因为此文件被链接到目录 /etc/fonts/conf.d(由 /etc/fonts/fonts.conf 包含),所以它包含在该配置中。在此目录中,以两位数字开头的所有文件或符号链接均由 fontconfig 装载。有关此功能的更详细描述,请参见 /etc/fonts/conf.d/README

<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir> 
<dir>/opt/kde3/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>
<dir>~/.fonts/kde-override</dir>
<include ignore_missing="yes">suse-font-dirs.conf</include>

/etc/fonts/suse-font-dirs.conf 会自动生成,以引入随(多为第三方)应用程序附送的字体,如 OpenOffice.org、Java 或 Adobe Acrobat Reader。 /etc/fonts/suse-font-dirs.conf 的典型条目外观如下:

<dir>/usr/lib/ooo-2.0/share/fonts</dir>
<dir>/usr/lib/ooo-2.0/share/fonts/truetype</dir>
<dir>/usr/lib/jvm/java-1.5.0-sun-1.5.0_update10/jre/lib/fonts</dir>
<dir>/usr/X11R6/lib/Acrobat7/Resource/Font</dir>
<dir>/usr/X11R6/lib/Acrobat7/Resource/Font/PFM</dir>
 

要在整个系统安装其他字体,请手动将字体文件复制至适当的目录(如 root),例如 /usr/share/fonts/truetype。或者,可以使用 KDE 控制中心中的 KDE 字体安装程序来执行此任务。 结果是一样的。

您还可以创建符号链接,而不复制实际字体。 例如,如果已装入的 Windows 分区上的字体已获得许可并要使用,则可能要执行此操作。随后,运行 SuSEconfig --module fonts

SuSEconfig --module fonts 执行脚本 /usr/sbin/fonts-config,该脚本处理字体的配置。有关此脚本的更多信息,请参见其手册页 (man fonts-config )。

上面的过程同样适用于位图字体、TrueType 和 OpenType 字体以及 Type1 (PostScript) 字体。 可以将所有这些字体类型安装在任何目录中。

X.Org 包含两个完全不同的字体系统:旧的 X11 核心字体系统和新设计的 Xft 及 fontconfig 系统。下面几节简要介绍这两种系统。

X11 核心字体

目前,X11 核心字体系统不仅支持位图字体,还支持可缩放字体(例如 Type1 字体)、TrueType 以及 OpenType 字体。 X11 核心字体系统只在没有反锯齿处理和子像素显示的情况下支持可缩放字体,并且装载许多语言具有字形的大型可缩放字体可能需要较长的时间。 也支持 Unicode 字体,但使用它们的速度比较慢,而且需要更多内存。

X11 核心字体系统带有一些固有缺陷。 它已经过时,而且不再能以有意义的方式扩展。虽然为了实现向后兼容而不得不保留 X11 核心字体系统,但应尽可能使用更先进的 Xft 和 fontconfig 系统。

为了执行相应的操作,X 服务器需要知道它可使用的字体以及在系统中的哪些位置可找到这些字体。 这由 FontPath 变量来处理,该变量包含所有有效系统字体目录的路径。在其中每个目录中,一个名为 fonts.dir 的文件会列出此目录中的可用字体。 FontPath 由 X 服务器在启动时生成。它将在配置文件 /etc/X11/xorg.conf 的每个 FontPath 项中搜索有效的 fonts.dir文件。 这些项位于 Files 部分。 使用 xset q 可显示实际的 FontPath。运行时也可以使用 xset 更改该路径。 要添加其他路径,请使用 xset+fp <path>。要删除不需要的路径,请使用 xset-fp <path>

如果 X 服务器已经处于活动状态,则可以使用命令 xsetfp rehash 使装入的目录中新安装的字体可用。 通过 SuSEconfig--module fonts 执行此命令。 因为命令 xset 需要访问正在运行的 X 服务器,所以只有当从可以访问正在运行的 X 服务器的 shell 启动 SuSEconfig---module fonts 时,此命令才能发挥作用。 实现此操作最简单的方法是通过输入 suroot 密码获得 root 权限。su 会将启动 X 服务器的用户的访问权限转移到 root 外壳。要检查是否正确安装了字体以及是否可以通过 X11 核心字体系统使用字体,请使用命令 xlsfonts 列出所有可用字体。

默认情况下,SUSE Linux Enterprise 使用 UTF-8 区域设置。 因此,应首选 Unicode 字体(xlsfonts 输出中以 iso10646-1 结尾的字体名称)。 可以使用 xlsfonts| grep iso10646-1 列出所有可用的 Unicode 字体。 几乎所有在 SUSE Linux Enterprise 中可用的 unicode 字体都至少包括欧洲语言所需的字形(以前编码为 iso-8859-*)。

Xft

从一开始,Xft 的编程人员就确保该系统可以很好地支持可缩放字体(包括反锯齿处理)。 如果使用 Xft,则是由使用字体的应用程序显示字体,而不是像 X11 核心字体系统中由 X 服务器显示字体。 采用这种方式,相应的应用程序能够访问实际字体文件并完全控制如何显示字形。 这就为正确显示多种语言的文本奠定了基础。 直接访问字体文件对于用于打印的嵌入字体非常有用,因为这样可以确保打印输出与屏幕输出看上去完全一样。

在 SUSE Linux Enterprise 中,两个桌面环境 KDE 和 GNOME、Mozilla 和许多其他应用程序均已默认使用 Xft。 使用 Xft 的应用程序在数目上已经超过了使用以前的 X11 核心字体系统的应用程序。

Xft 使用 fontconfig 库来查找字体并影响字体的显示方式。 fontconfig 的属性由全局配置文件 /etc/fonts/fonts.conf 和用户特定的配置文件 ~/.fonts.conf 控制。 所有这些 fontconfig 配置文件的开头必须是

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

并且结尾必须是

</fontconfig>

要添加用于搜索字体的目录,请追加类似下面内容的一行:

<dir>/usr/local/share/fonts/</dir>

但通常没有必要这样做。 默认情况下,已经在 /etc/fonts/fonts.conf 中输入了用户特定的目录 ~/.fonts。 因此,要安装附加字体,只需将它们复制到 ~/.fonts 即可。

您还可以插入用来确定字体外观的规则。 例如,输入

<match target="font">
 <edit name="antialias" mode="assign">
  <bool>false</bool>
 </edit>
</match>

来禁用所有字体的反锯齿处理,或输入

<match target="font">
 <test name="family">
  <string>Luxi Mono</string>
  <string>Luxi Sans</string>
 </test>
 <edit name="antialias" mode="assign">
 <bool>false</bool>
 </edit>
</match>

来禁用特定字体的反锯齿处理。

默认情况下,大多数应用程序使用字体名称 sans-serif(或等效的 sans)、serifmonospace。 它们不是真正的字体,而只是可解析为合适的字体(取决于语言设置)的别名。

用户可以方便地将规则添加到 ~/.fonts.conf 中,以将这些别名解析为他们喜欢的字体:

<alias>
 <family>sans-serif</family>
 <prefer>
  <family>FreeSans</family>
 </prefer>
</alias>
<alias>
 <family>serif</family>
 <prefer>
  <family>FreeSerif</family>
 </prefer>
</alias>
<alias>
 <family>monospace</family>
 <prefer>
  <family>FreeMono</family>
 </prefer>
</alias>

因为几乎所有应用程序都默认使用这些别名,所以这几乎影响到整个系统。 这样,您可以方便地在几乎所有位置都使用自己喜欢的字体,而无需在各个应用程序中修改字体设置。

使用 fc-list 命令可以查看已安装了哪些字体以及哪些字体可用。 例如,命令 fc-list 返回所有字体的列表。 要查看可用的可缩放字体 (:scalable=true) 中有哪些包含希伯来语 (:lang=he) 所需的所有字形、它们的字体名称 (family)、字型 (style)、粗细 (weight) 以及包含这些字体的文件的名称,请输入以下命令:

fc-list ":lang=he:scalable=true" family style weight

此命令的输出类似于下面:

FreeSansBold.ttf: FreeSans:style=Bold:weight=200
FreeMonoBoldOblique.ttf: FreeMono:style=BoldOblique:weight=200
FreeSerif.ttf: FreeSerif:style=Medium:weight=80
FreeSerifBoldItalic.ttf: FreeSerif:style=BoldItalic:weight=200
FreeSansOblique.ttf: FreeSans:style=Oblique:weight=80
FreeSerifItalic.ttf: FreeSerif:style=Italic:weight=80
FreeMonoOblique.ttf: FreeMono:style=Oblique:weight=80
FreeMono.ttf: FreeMono:style=Medium:weight=80
FreeSans.ttf: FreeSans:style=Medium:weight=80
FreeSerifBold.ttf: FreeSerif:style=Bold:weight=200
FreeSansBoldOblique.ttf: FreeSans:style=BoldOblique:weight=200
FreeMonoBold.ttf: FreeMono:style=Bold:weight=200

可以使用 fc-list 查询的重要参数包括:

表 26.2. fc-list 的参数

参数

含义和可能值

family

字体系列的名称,如 FreeSans

foundry

字体的制造商,如 urw

style

字型,如 MediumRegularBoldItalicHeavy

lang

字体支持的语言,例如 de 表示德语,ja 表示日语,zh-TW 表示繁体中文,zh-CN 表示简体中文。

weight

字体粗细,例如 80 表示常规粗细,200 表示粗体。

slant

倾斜,通常 0 表示不倾斜,100 表示斜体。

file

包含字体的文件的名称。

outline

true 表示外框字体,false 表示其他字体。

scalable

true 表示可缩放字体,false 表示其他字体。

bitmap

true 表示位图字体,false 表示其他字体。

pixelsize

以像素为单位表示的字体大小。 与 fc-list 一起使用时,此选项仅对位图字体有意义。