字体配置
Fontconfig 是一个库,旨在向应用程序提供可用的字体列表,以及字体渲染方式的配置。
FreeType 库基于此配置渲染字体。freetype2 字体渲染软件包包含了启用的字节码解释器 (BCI),以获得更好的字体渲染效果,尤其是在 LCD 显示器上。参见 #Fontconfig 配置 和 字体配置/示例。
尽管 Fontconfig 在现代 Unix 和类 Unix 操作系统中经常使用,但有些应用程序依赖于原始的字体选择和显示方法,即 X 逻辑字体描述 (XLFD)。
字体路径
为了让应用程序识别字体,必须对字体进行编目以便于快速访问。
Fontconfig 默认已知的字体路径为:/usr/share/fonts/、~/.local/share/fonts(以及现在已弃用的 ~/.fonts/)。Fontconfig 将递归扫描这些目录。为了便于组织和安装,建议在添加字体时使用这些字体路径。
查看 Fontconfig 已知字体列表
$ fc-list ':' file
更多输出格式,请参阅 fc-list(1)。
通过查看 Xorg 日志来检查 Xorg 已知的字体路径
$ grep /fonts ~/.local/share/xorg/Xorg.0.log
- 您也可以使用命令
xset q来检查 Xorg 已知的字体路径列表。 - 如果 Xorg 以 root 权限运行,请使用
/var/log/Xorg.0.log。
请记住,Xorg 不像 Fontconfig 那样递归搜索 /usr/share/fonts/ 目录。要添加路径,必须使用完整路径
Section "Files"
FontPath "/usr/share/fonts/local/"
EndSection
有关 Xorg 配置的更多详细信息,请阅读 Xorg#配置。如果您希望在每个用户的基础上设置字体路径,您可以通过将以下行添加到 ~/.xinitrc 来添加和删除默认字体路径
xset +fp /usr/share/fonts/local/ # Prepend a custom font path to Xorg list of known font paths xset -fp /usr/share/fonts/sucky_fonts/ # Remove the specified font path from Xorg list of known font paths
要查看 Xorg 已知的字体列表,请使用来自 xorg-xlsfonts 软件包的 xlsfonts 命令。
Fontconfig 配置
Fontconfig 配置文档位于 fonts-conf(5) man page 中。
可以通过 $XDG_CONFIG_HOME/fontconfig/fonts.conf(通常是 $HOME/.config/fontconfig/fonts.conf)进行用户级别的配置,以及通过 /etc/fonts/local.conf 进行全局配置。用户配置中的设置优先于全局配置。这两个文件都使用相同的语法。
- 需要启用
50-user.conf预设才能使用户配置生效,而51-local.conf预设用于全局配置。查看 #预设 部分以了解如何启用这些预设。 - 配置文件和目录:
~/.fonts.conf/、~/.fonts.conf.d/和~/.fontconfig/*.cache-*已被弃用,并且在软件包的未来版本中默认不会读取。新的路径分别是$XDG_CONFIG_HOME/fontconfig/fonts.conf、$XDG_CONFIG_HOME/fontconfig/conf.d/NN-name.conf和$XDG_CACHE_HOME/fontconfig/*.cache-*。如果使用第二个位置,请确保命名有效(其中NN是两位数字,如00、10或99)。
Fontconfig 将其所有配置收集到一个中心文件 (/etc/fonts/fonts.conf) 中。此文件在 Fontconfig 更新期间会被替换,不应编辑。Fontconfig 感知的应用程序会读取此文件以了解可用字体及其渲染方式;只需重启此类应用程序即可加载新配置。此文件是来自全局配置 (/etc/fonts/local.conf)、/etc/fonts/conf.d/ 中配置的预设以及用户配置文件 ($XDG_CONFIG_HOME/fontconfig/fonts.conf) 的规则的集合。fc-cache 可用于重建 Fontconfig 配置,但更改仅在新启动的应用程序中可见。
Fontconfig 配置文件使用 XML 格式,并且需要以下标头
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <!-- settings go here --> </fontconfig>
本文中的配置示例省略了这些标签。
预设
预设安装在 /usr/share/fontconfig/conf.avail 目录中。可以通过创建指向它们的符号链接来启用它们,用户级别和全局级别都可以,如 /etc/fonts/conf.d/README 中所述。这些预设将覆盖各自配置文件中的匹配设置。
例如,要全局启用子像素 RGB 渲染
$ cd /etc/fonts/conf.d # ln -s /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf
要执行相同的操作,但改为用户级别的配置
$ mkdir $XDG_CONFIG_HOME/fontconfig/conf.d $ ln -s /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf $XDG_CONFIG_HOME/fontconfig/conf.d
抗锯齿
字体栅格化将矢量字体数据转换为位图数据,以便可以显示。由于锯齿,结果可能会显得粗糙。抗锯齿可用于提高字体边缘的表观分辨率。默认情况下,抗锯齿是启用的。要禁用它
<match target="font">
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
微调
字体微调(也称为 instructing)是使用数学指令来调整轮廓字体的显示,使其与栅格化网格(即显示器的像素网格)对齐。其预期效果是使字体看起来更清晰,从而更具可读性。当显示器具有大约 300 DPI 时,字体将在没有微调的情况下正确对齐。
字节码解释器 (BCI)
使用 BCI 微调,TrueType 字体中的指令根据 FreeType 的解释器进行渲染。BCI 微调适用于具有良好微调指令的字体。默认情况下,微调是启用的。要禁用它
<match target="font">
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
/etc/profile.d/freetype2.sh 中切换。解释器通过将参数 truetype:interpreter-version=NN(NN 对应于所选版本)传递给脚本中的 FREETYPE_PROPERTIES 变量来设置。最常用的值是- 35,用于经典模式(模拟 Windows 98),
- 40,用于最小模式(精简版 Infinality,这是默认值)。
自动微调器
自动微调器尝试进行自动微调,忽略字体中嵌入的任何微调信息。最初,它是默认设置,因为 TrueType2 字体受专利保护,但现在这些专利已过期,几乎没有理由使用它。它确实更适用于具有损坏或没有微调信息的字体,但对于具有良好微调信息的字体来说,它将远非最佳。通常,常用字体属于后一种类型,因此自动微调器将无用。默认情况下,自动微调器是禁用的。要启用它
<match target="font">
<edit name="autohint" mode="assign">
<bool>true</bool>
</edit>
</match>
微调样式
微调样式是为与网格对齐而进行的字体重塑量。微调值有:hintnone、hintslight、hintmedium 和 hintfull。hintslight 将使字体更模糊以与网格对齐,但在保留字体形状方面会更好(参见 [2]),而 hintfull 将是与像素网格良好对齐的清晰字体,但会丢失更多的字体形状。对于非 CFF (.otf) 字体,hintslight 隐式地以垂直方向使用自动微调器,而不是使用字体原生信息。
hintslight 是默认设置。要更改它
<match target="font">
<edit name="hintstyle" mode="assign">
<const>hintnone</const>
</edit>
</match>
子像素布局
Fontconfig 需要知道您的子像素布局,以便能够正确显示您的字体。使用 子像素布局 显示器测试(Lagom LCD 显示器测试页面的一部分)来找出您的子像素排列。
子像素几何形状通过 rgba 属性配置,可以是
rgb— 红、绿、蓝 — 最常见,当今大多数显示器都使用它bgrvrgb— 垂直vbgr
<match target="font">
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
不支持不寻常的子像素布局,例如“Pentile”和“RGBY”,偶尔在电视和移动屏幕上发现。对于这些设备,最好放弃子像素渲染而依赖灰度渲染。
子像素渲染
子像素渲染是一种通过有效利用子像素将水平(或垂直)分辨率提高三倍来提高字体渲染清晰度的技术。在 Windows 机器上,此技术称为 ClearType。
FreeType2 提供了两种不同类型的子像素渲染,称为 Harmony 和 ClearType (FT_CONFIG_OPTION_SUBPIXEL_RENDERING) [3]。从 FreeType 2.10.3 开始,Arch Linux 默认启用 ClearType 子像素渲染 [4]。
启用 ClearType 子像素渲染时,建议使用 LCD 过滤器。Harmony 子像素渲染不需要设置 LCD 过滤器,并且在默认 LCD 几何形状下,它等效于带有 lcdlight 过滤器的 ClearType [5]。请参阅以下关于如何启用 LCD 过滤器及其优点的部分。
LCD 过滤器
使用 ClearType 子像素渲染时,应启用 LCD 过滤器,该过滤器旨在减少彩色条纹。这在 FreeType 2 API 参考的 LCD 过滤下进行了描述。FT_LcdFilter 下描述了不同的选项,并通过此 LCD 过滤器测试页面进行了说明。
lcddefault 过滤器适用于大多数用户。还有其他过滤器可用于特殊情况:lcdlight;一种更轻的过滤器,非常适合看起来太粗或模糊的字体,lcdlegacy,原始 Cairo 过滤器;以及 lcdnone,用于完全禁用它。
<match target="font">
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
</match>
高级 LCD 过滤器规范
如果可用的内置 LCD 过滤器不令人满意,则可以通过构建自定义 freetype2 软件包并修改硬编码的过滤器来非常具体地调整字体渲染。Arch 构建系统可用于从源代码构建和安装软件包。
检出 freetype2 PKGBUILD 并下载/提取构建文件。Arch 构建系统#检索 PKGBUILD 源代码 列出了一些方法。
通过编辑文件 src/freetype-VERSION/include/freetype/config/ftoption.h 并取消注释 FT_CONFIG_OPTION_SUBPIXEL_RENDERING 宏来启用 ClearType 子像素渲染。
然后,编辑文件 src/freetype-VERSION/src/base/ftlcdfil.c 并查找常量 default_filter[5] 的定义
static const FT_Byte default_filter[5] =
{ 0x10, 0x40, 0x70, 0x40, 0x10 };
此常量定义了应用于渲染字形的低通滤波器。根据需要修改它。(参考:freetype 列表讨论)保存文件,构建并安装自定义软件包
$ makepkg --noextract # pacman --remove --nodeps freetype2 # pacman --upgrade freetype2-VERSION-ARCH.pkg.tar.zstd
重启 X。lcddefault 过滤器现在应该以不同的方式渲染字体。
特定字体或字体样式的自定义设置
某些字体可能在 BCI 微调下看起来不佳。可以仅为这些字体禁用它
...
<match target="font">
<test name="family" qual="any">
<string>My Font</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
...
设置默认或回退字体
匹配测试
设置默认或回退字体的可靠方法是添加 XML 片段以执行匹配测试。例如,使用 “binding” 属性,以下设置将回退到 Gentium 以代替 Georgia
... <match target="pattern"> <test qual="any" name="family" compare="eq"><string>Georgia</string></test> <edit name="family" mode="assign" binding="same"><string>Gentium Book Plus</string></edit> </match> ...
在上面,“compare” 属性可以是 “eq”(即,完全等于 Georgia)、“contains”(例如,匹配 Georgia 或 Georgia Pro)或其他值。请参阅 fonts-conf(5)。
别名
另一种方法是使用 <alias> 设置 “首选” 字体。匹配 <family> 元素的字体将被编辑为在匹配的 <family> 之前预先添加 <prefer> 的族列表。以下示例将在调用 Helvetica 时回退到 Bitstream Vera Sans
...
<alias>
<family>Helvetica</family>
<prefer>
<family>Bitstream Vera Sans</family>
</prefer>
</alias>
...
<alias> 还可以用于在缺少某些字形时指定回退字体。例如,许多版本的 Helvetica Neue 不包含希腊字符。用户可能安装了 Helvetica Neue 并希望将其用于拉丁字符,并由于 FreeSans 与 Helvetica 的相似性而回退到 FreeSans 以用于希腊字符。但是,同一用户可能已将另一个字体 Noto Sans 设置为默认的无衬线字体。以下内容将使其能够实现
...
<alias>
<family>Helvetica Neue LT Pro</family>
<prefer>
<family>Helvetica Neue LT Pro</family>
<family>FreeSans</family>
</prefer>
</alias>
...
如果用户只想在缺少字形时回退到默认字体,则不需要上述内容。
字体白名单和黑名单
元素 <selectfont> 与 <acceptfont> 和 <rejectfont> 元素结合使用,以从解析列表和匹配请求中选择性地列入白名单或列入黑名单字体。最简单和最典型的用例是拒绝用户需要安装的字体,但该字体正被匹配到一个通用的字体查询,从而导致用户界面出现问题。
首先,获取字体本身列出的 Family 名称
$ fc-scan .fonts/lklug.ttf --format='%{family}\n'
LKLUG
然后,在 <rejectfont> 节中使用该 Family 名称
<selectfont>
<rejectfont>
<pattern>
<patelt name="family" >
<string>LKLUG</string>
</patelt>
</pattern>
</rejectfont>
</selectfont>
通常,当两个元素组合使用时,<rejectfont> 首先用于更通用的匹配 glob 以拒绝一大组字体(例如整个目录),然后在其后使用 <acceptfont> 从更大的黑名单组中列出单个字体。
<selectfont>
<rejectfont>
<glob>/usr/share/fonts/OTF/*</glob>
</rejectfont>
<acceptfont>
<pattern>
<patelt name="family" >
<string>Monaco</string>
</patelt>
</pattern>
</acceptfont>
</selectfont>
禁用位图字体
位图字体有时用作缺失字体的回退,这可能会导致文本渲染像素化或过大。使用 70-no-bitmaps.conf 预设 来禁用此行为。
要为所有字体禁用嵌入式位图
~/.config/fontconfig/conf.d/20-no-embedded.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
要为特定字体禁用嵌入式位图字体
<match target="font">
<test qual="any" name="family">
<string>Monaco</string>
</test>
<edit name="embeddedbitmap">
<bool>false</bool>
</edit>
</match>
如果为所有字体禁用了嵌入式位图,则仍然可以为特定字体启用它们,以防它在没有嵌入式位图的情况下无法正常工作。例如,对于 Noto Color Emoji
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" qual="any">
<string>Noto Color Emoji</string>
</test>
<edit name="embeddedbitmap">
<bool>true</bool>
</edit>
</match>
</fontconfig>
禁用位图字体的缩放
要禁用位图字体的缩放(这通常会使它们模糊),请删除 /etc/fonts/conf.d/10-scale-bitmap-fonts.conf。请注意,这可能会破坏表情符号字体(如 Segoe UI Emoji)的缩放,使其变得巨大。
要重新启用位图字体的缩放,请重新创建符号链接
# ln -s /usr/share/fontconfig/conf.default/10-scale-bitmap-fonts.conf /etc/fonts/conf.d/10-scale-bitmap-fonts.conf
为不完整的字体创建粗体和斜体样式
FreeType 能够为没有粗体和斜体样式的字体自动创建斜体和粗体样式,但前提是应用程序明确要求。鉴于程序很少发送这些请求,本节介绍如何手动强制生成缺失的样式。
首先编辑 /usr/share/fonts/fonts.cache-1,如下所述。将修改的副本存储在另一个文件中,因为使用 fc-cache 进行字体更新将覆盖 /usr/share/fonts/fonts.cache-1。
假设已安装 Dupree 字体
"dupree.ttf" 0 "Dupree:style=Regular:slant=0:weight=80:width=100:foundry=unknown:index=0:outline=True:etc...
复制该行,将 style=Regular 更改为 style=Bold 或任何其他样式。 также 更改 slant=0 为 slant=100 以获得斜体,weight=80 为 weight=200 以获得粗体,或将它们组合起来以获得粗斜体
"dupree.ttf" 0 "Dupree:style=Bold Italic:slant=100:weight=200:width=100:foundry=unknown:index=0:outline=True:etc...
现在将必要的修改添加到 $XDG_CONFIG_HOME/fontconfig/fonts.conf
...
<match target="font">
<test name="family" qual="any">
<string>Dupree</string>
<!-- other fonts here .... -->
</test>
<test name="weight" compare="more_eq"><int>140</int></test>
<edit name="embolden" mode="assign"><bool>true</bool></edit>
</match>
<match target="font">
<test name="family" qual="any">
<string>Dupree</string>
<!-- other fonts here .... -->
</test>
<test name="slant" compare="more_eq"><int>80</int></test>
<edit name="matrix" mode="assign">
<times>
<name>matrix</name>
<matrix>
<double>1</double><double>0.2</double>
<double>0</double><double>1</double>
</matrix>
</times>
</edit>
</match>
...
embolden 以使其更粗。规则优先级
Fontconfig 按数字顺序处理 /etc/fonts/conf.d 中的文件。因此,01-aaa.conf 和 02-bbb.conf 的规则将与单个 01-aaabbb.conf 文件(首先包含 01-aaa 的规则,然后包含 02-bbb 的规则)具有相同的效果。
通常,这意味着前缀较小的文件将具有更高的优先级。但是,Fontconfig 语法很灵活,允许新规则优先于现有规则。因此,建议#查询当前设置以测试规则交互的结果。
请注意,用户在 $XDG_CONFIG_HOME/fontconfig/fonts.conf 和目录 $XDG_CONFIG_HOME/fontconfig/conf.d 中定义的规则通过文件 /etc/fonts/conf.d/50-user.conf 加载,并且通常优先于以较高数字开头的文件中定义的规则。
查询当前设置
要了解哪些设置生效,请使用 fc-match --verbose。例如:
$ fc-match --verbose Sans
family: "DejaVu Sans"(s) hintstyle: 3(i)(s) hinting: True(s) ...
在 fonts-conf(5) 中查找数字的含义。例如,“hintstyle: 3” 表示 “hintfull”
不支持 Fontconfig 的应用程序
某些应用程序(如 URxvt)将忽略 Fontconfig 设置。您可以使用 ~/.Xresources 来解决此问题,但它不如 Fontconfig 灵活。示例(有关选项的说明,请参阅 #Fontconfig 配置)
~/.Xresources
Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintslight Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb
使用 xrdb -q 确保设置在 X 启动时正确加载(有关更多信息,请参阅 X 资源)。
故障排除
字体失真
有关处理高 DPI 或混合 DPI 显示器的说明,请参阅 HiDPI:使用与物理硬件不匹配的 DPI 设置可能会导致字体显示模糊。
Calibri、Cambria、Monaco 等字体渲染不正确
某些可缩放字体具有嵌入式位图版本,这些版本会被渲染,主要是在较小的尺寸下。使用度量兼容字体作为替换可以改善这些情况下的渲染效果。
您还可以通过禁用嵌入式位图来强制在所有尺寸下使用可缩放字体,但会牺牲一些渲染质量。
应用程序覆盖微调
某些应用程序或桌面环境可能会覆盖默认的 Fontconfig 微调和抗锯齿设置。例如,当您使用 Qt 应用程序(如 vlc 或 smplayer)时,GNOME 3 中可能会发生这种情况。在这种情况下,请使用应用程序的特定配置程序。对于 GNOME,请尝试 gnome-tweaks。
应用程序未从 GNOME 设置中获取微调
例如,在 GNOME 下,有时 Firefox 会应用完全微调,即使在 GNOME 设置中设置为 “无” 也是如此,这会导致字体变得尖锐和加宽。在这种情况下,您必须将微调设置添加到您的 fonts.conf 文件中
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <match target="font"> <edit mode="assign" name="hinting"> <bool>false</bool> </edit> </match> </fontconfig>
在此示例中,微调设置为 grayscale。
GTK 应用程序中不正确的微调
在某些桌面环境中,尤其是在 GNOME 和 Plasma 之外,某些 GTK 应用程序可能无法正确读取字体配置。为了解决此问题,请安装 xsettingsd 或 xsettingsd-gitAUR 并在每次系统启动时执行它。另请参阅 Xsettingsd 和 xsettingsd wiki 以获取更多信息。可以使用以下通用配置对其进行配置
~/.xsettingsd
Xft/Hinting 1 Xft/HintStyle "hintslight" Xft/Antialias 1 Xft/RGBA "rgb"
如果这在其他某些应用程序中不起作用,您可以安装 xorg-xrdb 并提供以下配置
~/.Xresources
Xft.hinting: 1 Xft.hintstyle: hintslight Xft.antialias: 1 Xft.rgba: rgb
然后,您可以在每次系统启动时执行脚本 xrdb -merge ~/.Xresources 以应用选项。另请参阅 X 资源 和 #不支持 Fontconfig 的应用程序。
GTK4 程序中的微调
GTK4 和 libadwaita 程序忽略字体微调设置。要解决此问题,请创建或修改以下配置
~/.config/gtk-4.0/settings.ini
[Settings] gtk-hint-font-metrics=true
另请参阅 GTK 文档 和 GTK issue 3787。
生成的 PDF 中 Helvetica 字体问题
如果以下命令
fc-match helvetica
产生
helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"
那么由 xorg-fonts-75dpi 提供的位图字体很可能被嵌入到各种应用程序的 “打印到文件” 或 “导出” 生成的 PDF 中。位图字体可能是安装整个 xorg 组(通常不推荐)的后果。要解决像素化字体问题,您可以卸载该软件包。安装 gsfonts (Type 1) 或 tex-gyre-fonts (OpenType) 以获得相应的 Helvetica(和其他 PostScript/PDF 基本字体)的免费替代品。
当您打开需要 Helvetica 但未嵌入以供查看的 PDF 时,您也可能会遇到类似的问题。
FreeType 破坏位图字体
一些用户报告称,在将 freetype2 升级到 2.7.1 版本后,位图字体名称已更改,导致终端模拟器和一些其他程序(如 dwm 或 dmenu)出现问题 (FS#52502),因为它们回退到另一个(不同的)字体。这是由于 PCF 字体族格式的更改所致,这在他们的发行说明 [6] 中有所描述。从旧格式过渡的用户可能希望创建一个字体别名来解决这些问题,就像 [7] 中描述的解决方案一样,这里也提供了该解决方案。
假设我们要为 terminus-font 创建一个别名,它在之前描述的 freetype2 更新中从 Terminus 重命名为 xos4 Terminus
- 在
/etc/fonts/conf.avail/中为字体别名创建一个配置文件
/etc/fonts/conf.avail/33-TerminusPCFFont.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<alias>
<family>Terminus</family>
<prefer><family>xos4 Terminus</family></prefer>
<default><family>fixed</family></default>
</alias>
</fontconfig>
- 在
/etc/fonts/conf.d目录中创建一个指向它的符号链接。在我们的示例中,我们将按如下方式链接:ln -s /etc/fonts/conf.avail/33-TerminusPCFFont.conf /etc/fonts/conf.d以使更改永久生效。
现在一切应该像更新前一样工作,字体别名应该生效,但请确保先重新加载 .Xresources 或重启显示服务器,以便受影响的程序可以使用该别名。
DejaVu Monospace 无法渲染下划线
自 Pango 1.44 起,当使用 DejaVu Sans Mono 字体时,在某些字体大小下,下划线字符会消失。一种解决方法是使用 Liberation Mono 作为等宽字体,请参阅 #设置默认或回退字体。
调试 FreeType 字体
freetype2-demos 提供了用于调试 FreeType 字体配置的工具。 ftview 是一个 GUI,您可以在其中通过实时预览调整字体渲染设置。例如
$ ftview -e unic -d 1024x768x24 -r 96 10 /usr/share/fonts/noto/NotoSans-Regular.ttf
文本模糊
某些应用程序(例如 Chromium/Electron)无法正确应用伽玛校正,某些应用程序在特定情况下(灰度)禁用伽玛校正,这会导致深色背景上的小文本模糊不清,并且在 <=1080p 屏幕上文本无法阅读。这是 Chromium/Electron 的一个长期存在的问题,一种解决方法是使用 FREETYPE_PROPERTIES="cff:no-stem-darkening=0 autofitter:no-stem-darkening=0" 环境变量 启用 stem darkerning。
font-config-info
您可以使用 font-config-info-gitAUR 收集您的有效字体配置。它从 多个 GTK 来源、X resources、XSETTINGS 协议和 fontconfig 查询信息。