Fonts

如何覆蓋預設字型別名優先級

  • January 13, 2020

對於草書字型,我同時安裝了 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。

首先,您錯誤配置了一條規則,您使用了

<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)

如果那裡的姓氏變成Ecolier_court,那麼您必須在配置中使用它。

第三,請注意我從網上下載的版本沒有en語言,這意味著如果您$LANG設置為en fc-match cursive永遠不會匹配此字型。fc-match cursive:lang=fr您可以使用或env LANG=fr fc-match cursive例如根據您的外殼顯式匹配不同語言的字型。

可能還有其他原因,但讓我們看看這三個是否會首先解決您的問題。

引用自:https://unix.stackexchange.com/questions/561325