如何覆盖默认字体别名优先级

如何覆盖默认字体别名优先级

对于草书字体,我安装了 URW Z003 和 Écolier Court 字体。我想使用 Écolier Court,但fc-match cursive显示正在选择 Z0003。我无法删除 Z003 字体包,因为它是我想要保留的许多软件包的依赖项。我尝试过制作一个 fontconfig conf 文件来更改所选择的内容,但没有任何运气。

中 URW Z003 的相关 fontconfig 行/etc/fonts/conf.d/61-urw-z003.conf是:

  <alias>
    <family>cursive</family>
    <prefer>
      <family>Z003</family>
    </prefer>
  </alias>

  <alias>
    <family>Z003</family>
    <default>
      <family>cursive</family>
    </default>
  </alias>

中 Écolier Court 的相关 fontconfig 行/etc/fonts/conf.d/61-ecolier-court.conf

  <alias>
    <family>cursive</family>
    <prefer>
      <family>Écolier court</family>
    </prefer>
  </alias>

  <alias>
    <family>Écolier court</family>
    <default>
      <family>cursive</family>
    </default>
  </alias>

我写的fontconfig文件是:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>cursive</family>
    <prefer>
      <family>Écolier court</family>
    </prefer>
  </alias>
  <alias>
    <family>Écolier court</family>
    <prefer>
      <family>cursive</family>
    </prefer>
  </alias>
</fontconfig>

我在 fontconfig 文件名中添加了 和 前缀00-99-但无论哪种情况都fc-match表明,当要求使用草书字体时,fontconfig 始终选择 Z003。

答案1

第一的,您错误配置了一条规则,您使用了

<prefer>
  <family>cursive</family>
</prefer>

然而,你应该使用

<default>
  <family>cursive</family>
</default>

第二,您也可能使用了错误的姓氏。一般来说,字体名称不带有重音符号。检查正确的姓氏

≻ fc-scan ecolier-court.ttf
        family: "Ecolier_court"(s)
        lang: aa|bi|fj|gv|ho|ia|id|ie|io|nr|om|so|sq|ss|st|sw|ts|uz|vo|xh|yap|zu|jv|kj|kwm|ms|ng|rn|rw|sg|sn|su|za(s)

如果那里的姓氏变成了生态庭院,那么您必须在您的配置中使用它。

第三,请注意,我从网上下载的版本没有该en语言,这意味着如果您$LANG设置为en fc-match cursive永远不会匹配该字体。您可以使用fc-match cursive:lang=frenv LANG=fr fc-match cursive例如根据您的 shell显式匹配不同语言的字体。

可能还有其他原因,但让我们先看看这三个原因是否可以解决您的问题。

相关内容