5.5.在 X11 中使用字体
Xorg 附带的默认字体对于典型的桌面出版应用程序并不理想。大号演示字体看起来参差不齐,显得不专业,而小号字体几乎完全无法辨认。然而,有几种免费的高质量 Type1(PostScript®)字体可以轻松用于 Xorg。
5.5.1. Type1 字体
URW 字体集(x11-fonts/urwfonts)包含高质量的标准 Type1 字体版本(如 Times Roman™、Helvetica™、Palatino™ 等)。Freefonts 字体集(x11-fonts/freefonts)包含更多字体,但其中大多数适用于图形软件(如 Gimp),并不完整,无法作为屏幕字体使用。此外,Xorg 也可以通过最小的配置来使用 TrueType® 字体。有关更多详细信息,请参阅 X(7) 手册页或 TrueType® 字体。
要通过二进制包安装上述 Type1 字体集,请运行以下命令:
# pkg install urwfonts
同样地,也可以安装 freefont 或其他字体集。为了让 X 服务器检测到这些字体,需要在 X 服务器配置文件(/usr/local/etc/X11/xorg.conf.d/90-fonts.conf)中添加以下行:
Section "Files"
FontPath "/usr/local/share/fonts/urwfonts/"
EndSection
或者,在 X 会话的命令行中运行:
% xset fp+ /usr/local/share/fonts/urwfonts
% xset fp rehash
这种方法有效,但会在 X 会话结束时丢失,除非它被添加到启动文件中(例如,普通 startx
会话使用 ~/.xinitrc,或者通过图形登录管理器(如 XDM)登录时使用 ~/.xsession)。另一种方法是使用新的 /usr/local/etc/fonts/local.conf,如 抗锯齿字体 所示。
5.5.2. TrueType® 字体
Xorg 内置支持 TrueType® 字体的渲染。有两个不同的模块可以启用此功能。由于 freetype 模块与其他字体渲染后端更一致,因此在此示例中使用该模块。要启用 freetype 模块,只需在 /usr/local/etc/X11/xorg.conf.d/90-fonts.conf 的 "Module"
部分添加以下行:
Load "freetype"
现在,创建一个 TrueType® 字体目录(例如,/usr/local/share/fonts/TrueType),并将所有 TrueType® 字体复制到该目录中。请注意,TrueType® 字体不能直接从 Apple® Mac® 获取,它们必须是 UNIX®/MS-DOS®/Windows® 格式,以便 Xorg 使用。将文件复制到该目录后,使用 mkfontscale 创建 fonts.dir,这样 X 字体渲染器就知道这些新文件已安装。可以通过包管理器安装 mkfontscale
:
# pkg install mkfontscale
然后在目录中创建 X 字体文件的索引:
# cd /usr/local/share/fonts/TrueType
# mkfontscale
现在,将 TrueType® 目录添加到字体路径。这与 Type1 字体 中的描述相同:
% xset fp+ /usr/local/share/fonts/TrueType
% xset fp rehash
或者,向 xorg.conf 添加 FontPath
行。
现在,Gimp、LibreOffice 和所有其他 X 应用程序应该能够识别已安装的 TrueType® 字体。极小的字体(例如高分辨率显示器上的网页文本)和极大的字体(例如在 LibreOffice 中)现在看起来会好多了。
5.5.3. 抗锯齿字体
Xorg 中位于 /usr/local/share/fonts/
和 ~/.fonts/
的所有字体都会自动提供给支持 Xft 的应用程序。大多数最近的应用程序都支持 Xft,包括 KDE、GNOME 和 Firefox。
要控制哪些字体启用抗锯齿,或配置抗锯齿属性,可以创建(或编辑,如果已存在)文件 /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/share/fonts/
和 ~/.fonts/
中的所有字体已经自动提供给 Xft 支持的应用程序。如果要添加这两个目录树之外的其他目录,可以将如下行添加到 /usr/local/etc/fonts/local.conf
:
<dir>/path/to/my/fonts</dir>
添加新字体或特别是新字体目录后,需要重新构建字体缓存:
# fc-cache -f
抗锯齿使边框略显模糊,这使得非常小的文本更易读,并去除了大文本的“阶梯”效果,但如果应用于普通文本,可能会导致眼睛疲劳。为了排除小于 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>
对于某些等宽字体,启用抗锯齿后,字形间距可能不合适。这在 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,启用抗锯齿后可能会出现问题。通常,这表现为字体似乎被垂直切割。最严重的情况可能会导致应用程序崩溃。为了避免这种情况,可以考虑向 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>
标签结束文件。如果未这样做,变更将被忽略。
用户可以通过创建自己的 ~/.config/fontconfig/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
:可以进行实验,看看哪种效果最好。
有关如何在 FreeBSD 上安装和配置字体的更多信息,请阅读文章 Fonts and FreeBSD。
最后更新于
这有帮助吗?