第21章 其他文件系统
附录 D. OpenPGP 密钥
5.5.在 X11 中使用字体

5.5.1 Type1 字体

对于典型的桌面应用来说,Xorg 自带的默认字体并不是太理想。大的显示字体有锯齿状,看起来有点不专业,而小的字体几乎完全无法看清。然而,有几种免费的、高质量的 Type1(PostScript®)字体,可以随时用于 Xorg。例如,URW 字体集(x11-fonts/urwfonts)包括标准 Type1 字体(Times Roman™、Helvetica™、Palatino™和其他)的高质量版本。Freefonts 字体集(x11-fonts/freefonts)包括更多的字体,但其中大多数是为了在图形软件(如 Gimp)中使用,不够完备,无法作为屏幕字体使用。此外,只需花费很少的精力,就可以配置 Xorg 使用 TrueType® 字体。有关这方面的更多细节,请参见 X(7) 手册页或 TrueType® 字体
要从二进制软件包中安装上述 Type1 字体集,运行下列命令:
1
# pkg install urwfonts
Copied!
或者,要从 Ports 源码库编译安装,运行下列命令:
1
# cd /usr/ports/x11-fonts/urwfonts
2
# make install clean
Copied!
同样,自由字体或其它字体集合也是如此。要想让 X Server服务器检测到这些字体,请在 X Server服务器配置文件(/etc/X11/xorg.conf)中添加适当的一行,内容如下:
1
FontPath "/usr/local/share/fonts/urwfonts/"
Copied!
或者,在 X 会话的命令行上运行:
1
% xset fp+ /usr/local/share/fonts/urwfonts
2
% xset fp rehash
Copied!
这会起到作用,但在关闭 X 会话时将会丢失,除非它被添加到启动文件中(~/.xinitrc 用于常规的 startx 会话,或者 ~/.xsession 用于通过 XDM 这样的图形登录管理器登录)。第三种方法是使用新的 /usr/local/etc/fonts/local.conf ,正如在 Anti-Aliased Fonts 中演示的那样。

5.5.2 TrueType® 字体

Xorg 已经内置了对 TrueType® 字体的渲染支持。有两个不同的模块可以实现这个功能。本例中使用了 freetype 模块,因为它与其他字体渲染后端更加一致。要启用 freetype 模块,只需在 /etc/X11/xorg.confModule 部分添加以下一行。
1
Load "freetype"
Copied!
现在为 TrueType® 字体建立一个目录(例如,/usr/local/share/fonts/TrueType),将所有的 TrueType® 字体复制到这个目录中。请记住,TrueType® 字体不能直接从 Apple® Mac® 中提取;它们必须是 UNIX®/MS-DOS®/Windows® 中的格式,才能被 Xorg 使用。文件被复制到这个目录中后,使用 mkfontscale 创建一个 fonts.dir ,这样 X 字体渲染器就知道这些新文件已经被安装好了。mkfontscale 可以作为一个软件包安装。
1
# pkg install mkfontscale
Copied!
然后在目录中创建一个 X 字体文件的索引:
1
# cd /usr/local/share/fonts/TrueType
2
# mkfontscale
Copied!
现在将 TrueType® 目录添加到字体路径中。这和在 Type1 字体 中描述的一样:
1
% xset fp+ /usr/local/share/fonts/TrueType
2
% xset fp rehash
Copied!
或在 xorg.conf 中添加 FontPath 行。
现在,Gimp、LibreOffice 和所有其他的 X 应用程序应该可以识别已安装的 TrueType® 字体。极小的字体(如网页上高分辨率显示的文本)和极大的字体(在 LibreOffice 中)现在看起来会好得多。

5.5.3 抗锯齿字体

Xorg 中所有在 /usr/local/share/fonts/~/.fonts/ 中找到的字体都会自动提供给采用 Xft-aware 技术的应用程序用于抗锯齿。大多数最新的应用程序都支持 Xft-aware ,包括 KDE、GNOME 和 Firefox。
要控制哪些字体可以抗锯齿,或者配置抗锯齿属性,可以创建(或者编辑,如果它已经存在)文件 /usr/local/etc/fonts/local.conf 。Xft 字体系统的一些高级功能可以通过这个文件进行微调;本节只描述一些简单的可能性。详细内容请参见 fonts-conf(5)
这个文件必须是 XML 格式的。请仔细注意大小写,并确保所有的标签都被正确配对。该文件以通常的 XML 头开始,后面是 DOCTYPE 定义,然后是<fontconfig> 标签:
1
<?xml version="1.0"?>
2
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
3
<fontconfig>
Copied!
如前所述,/usr/local/share/fonts/ 以及 ~/.fonts/ 中的所有字体已经被提供给支持 Xft-aware 的应用程序。要在这两个目录树之外添加另一个目录,请在 /usr/local/etc/fonts/local.conf 中添加这样一行:
1
<dir>/path/to/my/fonts</dir>
Copied!
在添加新的字体,特别是新的字体目录之后,要重建字体缓存:
1
# fc-cache -f
Copied!
抗锯齿使边界略显模糊,这使非常小的文本更易阅读,并消除了大文本的“阶梯”,但如果应用于正常文本,可能会导致眼睛疲劳。要将小于 14 点的字体排除在抗锯齿之外,请包括这几行。
1
<match target="font">
2
<test name="size" compare="less">
3
<double>14</double>
4
</test>
5
<edit name="antialias" mode="assign">
6
<bool>false</bool>
7
</edit>
8
</match>
9
<match target="font">
10
<test name="pixelsize" compare="less" qual="any">
11
<double>14</double>
12
</test>
13
<edit mode="assign" name="antialias">
14
<bool>false</bool>
15
</edit>
16
</match>
Copied!
一些等宽字体的间距也可能因抗锯齿而不合适。需要指出,这似乎是 KDE 环境中存在的一个未被解决的问题。一个可行的解决方法是强制这类字体的间距为 100。需要添加这几行:
1
<match target="pattern" name="family">
2
<test qual="any" name="family">
3
<string>fixed</string>
4
</test>
5
<edit name="family" mode="assign">
6
<string>mono</string>
7
</edit>
8
</match>
9
<match target="pattern" name="family">
10
<test qual="any" name="family">
11
<string>console</string>
12
</test>
13
<edit name="family" mode="assign">
14
<string>mono</string>
15
</edit>
16
</match>
Copied!
(这为其它一些常规固定字体创建了"mono"的别名),然后再添加:
1
<match target="pattern" name="family">
2
<test qual="any" name="family">
3
<string>mono</string>
4
</test>
5
<edit name="spacing" mode="assign">
6
<int>100</int>
7
</edit>
8
</match>
Copied!
某些特定字体,如 Helvetica,在应用抗锯齿时可能会出现问题。通常情况下,这表现为字体在垂直方向上看起来被切成两半。在最坏的情况下,它可能会导致应用程序的崩溃。为了避免这种情况,可以考虑在 local.conf 中加入以下内容:
1
<match target="pattern" name="family">
2
<test qual="any" name="family">
3
<string>Helvetica</string>
4
</test>
5
<edit name="family" mode="assign">
6
<string>sans-serif</string>
7
</edit>
8
</match>
Copied!
在编辑完 local.conf 后,确保用 </fontconfig> 标签结束该文件。不这样做会导致更改被忽略。
用户可以通过创建自己的 ~/.config/fontconfig/fonts.conf 来添加个性化的设置。这个文件使用和上面描述相同的 XML 格式。
最后一点:对于 LCD 屏幕,可能需要进行子像素采样。这基本上是分别处理(水平分离的)红色、绿色和蓝色分量,以提高水平分辨率;其结果可能非常显而易见。要启用这一点,请在 local.conf 的空白之处添加这几行:
1
<match target="font">
2
<test qual="all" name="rgba">
3
<const>unknown</const>
4
</test>
5
<edit name="rgba" mode="assign">
6
<const>rgb</const>
7
</edit>
8
</match>
Copied!
注意
根据显示器的种类,rgb 可能需要改为 bgrvrgbvbgr:试验一下,看看哪种效果最好。