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® Fonts

要从二进制包中安装上述 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,如 Anti-Aliased Fonts 中所示。

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-aware 应用程序使用抗锯齿功能。大多数最新的应用程序都支持 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-aware 应用程序使用。要添加到这两个目录树之外的另一个目录,请在 /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 格式。

最后一点:对于液晶显示屏,可能需要子像素采样。这基本上将红、绿和蓝组件(水平分离)分开处理,以提高水平分辨率;结果可能会很显著。要启用此功能,请在 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 可能需要更改为 bgrvrgbvbgr:进行实验,看看哪个效果最好。

更多有关在 FreeBSD 上安装和配置字体的信息,请阅读文章 Fonts and FreeBSD

最后更新于

FreeBSD 中文社区