我试图理解为什么我的一些测试fonts.conf
使用<match target="pattern">
(默认),其他测试使用<match target="font">
,而其他测试则根本不使用。例如:
<match>
<test name="family"><string>monospace</string></test>
<edit name="family"><string>Cousine</string></edit>
</match>
<match>
<test name="family"><string>Cousine</string></test>
<test name="pixelsize" compare="more"><double>17.5</double></test>
<edit name="family" binding="strong"><string>Liberation Mono</string></edit>
</match>
<match target="font">
<test name="family"><string>Overpass</string></test>
<edit name="hintstyle"><const>hintslight</const></edit>
</match>
这是为什么?我读过文档,但上面只说If 'target' is set to "font" instead of the default "pattern", then this element applies to the font name resulting from a match rather than a font pattern to be matched.
我不理解措辞,有人能解释一下区别吗?
答案1
从:
https://lists.freedesktop.org/archives/fontconfig/2007-December/002787.html
应用程序通常像这样工作:
- 将用户的字体请求转换为字体配置模式;
- 使用 target="pattern" 在其上应用 fontconfig 配置;
- 从字体配置中获取与该模式匹配的字体的排序列表。该列表作为一组字体配置模式本身返回;
- 选择要使用的字体(通常是第一个具有所请求字符的字体);
- 使用 target="font" 在字体模式上应用 fontconfig 配置。
因此,这意味着,例如,如果您想关闭 Bitstream Vera Sans 上小于 7.5 尺寸的抗锯齿功能,则应使用 target="font" 执行此操作。如果您使用 target="pattern" 执行此操作,则如果请求是 Bitstream Vera Sans,它将关闭所有字体的 aa,无论您是否安装了该字体。
如果您想编写后备规则,以便用 DejaVu Sans 替代 Bitstream Vera Sans,那么可以使用 target="pattern" 来完成,因为您想修改请求。
还有来自:
https://lists.freedesktop.org/archives/fontconfig/2003-March/000128.html
使用字体目标来改变特定字体的呈现方式,使用图案目标来改变从可用字体中选择字体的方式。