为什么 Xft 忽略字体设置?

Ern*_*t A 9 fonts fontconfig xft

如下所示,我的 Xft 设置与我的 fontconfig 设置完全匹配:

$ xrdb -query | grep -i xft
Xft.antialias:  1
Xft.autohint:   1
Xft.dpi:    96
Xft.hinting:    1
Xft.hintstyle:  hintmedium
Xft.lcdfilter:  lcddefault
Xft.rgba:   none

$ fc-match --verbose :family=Mono:size=12 | grep '^.\(hint\|anti\|auto\|dpi\|rgba\|lcd\)'
    antialias: True(w)
    hintstyle: 2(i)(w)
    hinting: True(w)
    autohint: True(w)
    dpi: 96(f)(w)
    rgba: 5(i)(w)
    lcdfilter: 1(i)(w)
Run Code Online (Sandbox Code Playgroud)

不幸的是,Xft 似乎忽略了这些设置,并且根本没有做任何暗示。我可以在 GUI Emacs 或运行命令中看到这一点

pango-view --backend=xft --font='Mono, 12' -t 'Xft - X FreeType interface library'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

将渲染与开罗后端生成的渲染进行比较:

pango-view --backend=cairo --font='Mono, 12' -t 'Xft - X FreeType interface library'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Ern*_*t A 10

事实证明,在 Xft 中hintmedium是 的同义词hintslight,而在 fontconfig 中hintmedium是 的同义词hintfull。因此,该选项hintmedium实际上会根据程序是使用 Cairo 还是 Xft 来选择不同的提示方法。

据我所知,这在任何地方都没有记录。我不得不通过反复试验来弄清楚。