X11 使用的默认字体不是很理想。 大型的字体显得参差不齐,看起来很不专业, 并且, 在 Netscape® 中, 小字体简直无法看清。 有好几种免费、 高质量的字体可以很方便地用在 X11 中。 例如,URW字体集合 (x11-fonts/urwfonts) 就包括了高质量的 标准 type1 字体 (Times Roman®, Helvetica®、 Palatino® 和其他一些)。 在 Freefont 集合中 (x11-fonts/freefonts) 也包括更多的字体, 但它们中的绝大部分使用在图形软件中,如 Gimp,在屏幕字体中使用并不完美。另外, 只要花很少的功夫,可以将 XFree86™ 配置成能使用 TrueType® 字体:请参见后面的 TrueType® 字体一节。
如果希望使用 Ports Collection 来安装上面的 Type1 字体, 只需运行下面的命令:
#
cd /usr/ports/x11-fonts/urwfonts
#
make install clean
freefont 或其他的字库和上面所说的大体类似。 为了让 X
服务器能够检测到这些字体, 需要在
X 服务器的配置文件 (/etc/X11/xorg.conf
)
中增加下面的配置:
FontPath "/usr/local/lib/X11/fonts/URW/"
或者,也可以在命令行运行:
%
xset fp+ /usr/local/lib/X11/fonts/URW
%
xset fp rehash
这样会起作用,但是当 X 会话结束后就会丢失,
除非它被添加到启动文件 (~/.xinitrc
中,
针对一个寻常的 startx
会话,或者当您通过一个类似
XDM 的图形登录管理器登录时添加到
~/.xsession
中)。
第三种方法是使用新的
/usr/local/etc/fonts/local.conf
文件: 查看
anti-aliasing 章节。
Xorg 已经内建了对
TrueType® 字体的支持。有两个不同的模块能够启用这个功能。
在这个例子中使用 freetype 这个模块,因为它与其他的字体描绘后端
是兼容的。要启用 freetype 模块,只需要将下面这行添加到
/etc/X11/xorg.conf
文件的
"Module"
部分。
Load "freetype"
现在,为 TrueType® 字体创建一个目录 (比如,
/usr/local/lib/X11/fonts/TrueType
)
然后把所有的 TrueType® 字体复制到这个目录。记住您不能直接从
Macintosh® 计算机中提取 TrueType® 字体;
能被 X11 使用的必须是
UNIX®/MS-DOS®/Windows® 格式的。
一旦您已经将这些文件复制到了这个目录, 就可以用
ttmkfdir 来创建
fonts.dir
文件,
以便让X字体引擎知道您已经安装了这些新文件。
ttmkfdir
可以在 FreeBSD
Ports 套件中的
x11-fonts/ttmkfdir 中找到。
#
cd /usr/local/lib/X11/fonts/TrueType
#
ttmkfdir -o fonts.dir
现在把 TrueType® 字体目录添加到字体路径中。 这和上面 Type1 字体的步骤是一样的, 那就是,使用
%
xset fp+ /usr/local/lib/X11/fonts/TrueType
%
xset fp rehash
或者把 FontPath
这行加到
xorg.conf
文件中。
就是这样。现在 Netscape®, Gimp, StarOffice™ 和其他所有的 X 应用程序 应该可以认出安装的 TrueType® 字体。一些很小的字体(如在 Web 页面上高分辨率显示的文本) 和一些很大的字体(在 StarOffice™ 下) 现在看起来已经很好了。
对于所有支持 Xft 的应用程序, 所有放到 X11
/usr/local/lib/X11/fonts/
和
~/.fonts/
中的字体都自动地被加入反走样支持。
绝大多数较新的程序都提供了 Xft 支持, 包括
KDE、 GNOME 以及
Firefox。
要控制哪些字体是 anti-aliased,或者配置 anti-aliased 特性,
创建(或者编辑,如果文件已经存在的话)文件
/usr/local/etc/fonts/local.conf
。Xft 字体系统的几个
高级特性都可以使用这个文件来调节;
这一部分只描述几种最简单的情况。要了解更多的细节,请查看
fonts-conf(5).
这个文件一定是 XML 格式的。注意确保所有的标签都完全的关闭掉。
这个文件以一个很普通的 XML 头开始, 后跟一个 DOCTYPE 定义,
接下来是 <fontconfig>
标签:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>
像前面所做的那样,在
/usr/local/lib/X11/fonts/
和
~/.fonts/
目录下的所有字体已经可以被支持 Xft 的
应用程序使用了。如果您想添加这两个目录以外的其他路径,
简单的添加下面这行到
/usr/local/etc/fonts/local.conf
文件中:
<dir>/path/to/my/fonts</dir>
添加了新的字体,尤其是添加了新的字体目录后, 您应该运行下面的命令重建字体缓存:
#
fc-cache -f
Anti-aliasing 会让字体边缘有些模糊,这样增加了非常小的文本的可读性, 并从大文本字体中删除 “锯齿”。 但如果使用普通的文本, 则可能引起眼疲劳。 要禁止 14磅 以下字体的反走样, 需要增加如下配置:
<match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match>
用 anti-aliasing 来间隔一些等宽字体也是不适当的。 这似乎是 KDE 的一个问题。 要修复这个问题需要确保每个字体之间的间距保持在100。 加入下面这些行:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match>
(这里把其他普通的修复的字体作为
"mono"
),然后加入:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match>
某些字体,比如 Helvetica,当 anti-aliased 的时候可能存在问题。
通常的表现为字体本身似乎被垂直的切成两半。
糟糕的时候,还可能导致应用程序崩溃。
为了避免这样的现象,考虑添加下面几行到
local.conf
文件里面:
<match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match>
一旦您完成对
local.conf
文件的编辑,确保您使用了
</fontconfig>
标签来结束文件。
不这样做将会导致您的更改被忽略。
最后,用户可以通过他们个人的
.fonts.conf
文件来添加自己的设定。
要完成此项工作, 用户只需简单地创建
~/.fonts.conf
并添加相关配置。
此文件也必须是 XML 格式的。
最后:对于LCD屏幕, 可能希望使用子像素的取样。 简单而言,
这是通过分别控制 (水平方向分开的) 红、绿、蓝 像素,
来改善水平分辨率; 这样做的效果一般会非常明显。
要启用它, 只需在
local.conf
文件的某个地方加入:
<match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match>
随您显示器的种类不同, 可能需要把
rgb
改为 bgr
、
vrgb
或 vbgr
:
试验一下看看那个更好。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.