如果我有两个文件/etc/fonts/conf.d/
。
其中之一就是:
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Color Emoji</family>
</prefer>
</alias>
</fontconfig>
另一个是:
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Emoji</family>
</prefer>
</alias>
</fontconfig>
将它们都读进去之后结果会怎样?
问题背后的原因——
我有一个巨大的、混乱的字体选择文件。如果我能以某种方式一步一步地从文件中构建字体选择,那将极大地整理我混乱的字体选择文件。所以,
以 Noto Emoji 为例,我如何逐步构建字体选择,以便它Noto Color Emoji
成为默认字体并Noto Emoji
作为后备字体?
答案1
这取决于文件名前面的数字。例如:
10-my-color.conf
20-my-other.conf
这应该赋予颜色变量更高的优先级。
PS 您是否考虑过将~/.config/fontconfig/conf.d
目录用于此目的?这样您就不会将自己的文件与各种软件包安装的文件混在一起。
答案2
alias
支持具有默认选择的后备/优先级列表的元素fontconfig
。无需多个文件或别名规则。一个别名规则对于单个家族匹配来说就足够了。
来自 fontconfig 手册页:
<alias>
Alias elements provide a shorthand notation for the set of common match operations needed to substitute one font family for another. They contain a <family> element followed by optional <prefer>, <accept> and <default> elements. Fonts matching the <family> element are edited to prepend the list of <prefer>ed families before the matching <family>, append the <accept>able families after the matching <family> and append the <default> families to the end of the family list.
<family>
Holds a single font family name
<prefer>
,,<accept>
<default>
These hold a list of <family> elements to be used by the <alias> element.
这是具有扩展设置的示例:
<fontconfig>
<alias>
<family>sans-serif</family>
<!-- <accept> list if needed -->
<prefer>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<!-- you may add more font families here -->
</prefer>
<!-- <default> list if needed -->
</alias>
</fontconfig>
如果您想强制字体绕过匹配,请改用accept
。
顺便说一句,您可以将优先级视为/认为<prefer>
是中等/首选、<accept>
强/覆盖、<default>
弱/后备。
以下是很好的例子:Beyond Linux® From Scratch(System V 版本)- Fontconfig 概述