5.5. 在 Xorg 中使用字体 ======================= 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 字体,请运行下列命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # pkg install urwfonts 同样地,freefont 或其它字体也是如此。要想让 X 服务器检测到这些字体,请在 X 服务器配置文件(\ **/usr/local/etc/X11/xorg.conf.d/90-fonts.conf**\ )中适当的添加一行,内容如下: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session Section "Files" FontPath "/usr/local/share/fonts/urwfonts/" EndSection 或者,在 X 会话的命令行中运行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % 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"``\ 部分添加以下一行。 .. raw:: latex \diilbookstyleinputcell .. code:: shell-session Load "freetype" 现在为 TrueType® 字体建立一个目录(如 **/usr/local/share/fonts/TrueType**\ ),将所有的 TrueType® 字体复制到这个目录中。请记住,不能直接从 Apple® Mac® 中提取 TrueType® 字体;它们必须是 UNIX®/MS-DOS®/Windows® 中的格式,才能被 Xorg 使用。文件被复制到这个目录中后,使用 ``mkfontscale`` 创建一个 **fonts.dir**\ ,这样 X 字体渲染器就知道这些新文件已经被安装好了。可以作为一个软件包安装 ``mkfontscale``\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # pkg install mkfontscale 然后在目录中创建 X 字体文件的索引: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # cd /usr/local/share/fonts/TrueType # mkfontscale 现在将 TrueType® 目录添加到字体路径中。这和在 `Type1 字体 `__\ 中所述的一样: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % 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-aware,包括 KDE、GNOME 和 Firefox。 要控制哪些字体开启抗锯齿,或者配置抗锯齿属性,可以创建(或编辑,如果文件已经存在)文件 **/usr/local/etc/fonts/local.conf**\ 。可以通过这个文件进行微调 Xft 字体系统的一些高级功能;本节只说明一些简单的功能。详细内容请参见 `fonts-conf(5) `__\ 。 这个文件必须是 XML 格式的。请仔细注意大小写,并确保所有的标签都被正确配对。该文件以通常的 XML 头开始,后面是 DOCTYPE 定义,然后是\ ```` 标签: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session \ 如前所述,\ **/usr/local/share/fonts/** 以及 **~/.fonts/** 中的所有字体已经被提供给支持 Xft-aware 的应用程序。要在这两个目录树之外添加另一个目录,请在 **/usr/local/etc/fonts/local.conf** 中添加这样一行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session /path/to/my/fonts 在添加新的字体,特别是新的字体目录之后,要更新字体缓存: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # fc-cache -f 抗锯齿使边界略显模糊,这使非常小的文本更易阅读,并消除了大文本的“梯形”,但如果应用于正常文本,可能会导致眼睛疲劳。要将小于 14 号的字体排除在抗锯齿之外,请加入这几行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session 14 false 14 false 一些等宽字体的间距也可能因抗锯齿而不合适。需要指出的是,在 KDE 环境中,这似乎是一个未解决的问题。一个可行的解决方法是强制这类字体的间距为 100。需要添加这几行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session fixed mono console mono (这为其它一些常规固定字体创建了 ``"mono"`` 的别名),然后再添加: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session mono 100 某些特定字体,如 Helvetica,在应用抗锯齿时可能会出现问题。通常情况下,这表现为字体在垂直方向上看起来被切成两半。在最坏的情况下,它可能会导致应用程序的崩溃。为了避免这种情况,可以考虑在 **local.conf** 中加入以下内容: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session Helvetica sans-serif 在编辑完 **local.conf** 后,确保用 ```` 标签结束该文件。不这样做会导致更改被忽略。 用户可以通过创建自己的 **~/.config/fontconfig/fonts.conf** 来添加个性化的设置。这个文件使用和上面说明相同的 ``XML`` 格式。 最后一点:对于 LCD 屏幕,可能需要进行子像素采样。这基本上是分别处理(水平分离的)红色、绿色和蓝色分量,以提高水平分辨率;其结果可能非常显而易见。要启用这一点,请在 **local.conf** 的空白之处添加这几行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session unknown rgb .. **注意** 根据显示器的种类,\ ``rgb`` 可能需要改为 ``bgr``\ 、\ ``vrgb`` 或 ``vbgr``\ :试一下,看看哪种效果最好。 想要了解在 FreeBSD 上安装和配置字体的更多信息,请阅读\ `字体和 FreeBSD `__ 这篇文章。