字体配置
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
— 红、绿、蓝 — 最常见,当今大多数显示器都使用它bgr
vrgb
— 垂直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 查询信息。