Fonts

相同的字型,相同的名稱,兩種不同的文件格式。Fontconfig 使用哪一個?

  • April 27, 2022

原始問題

我下載了Cozette 字型,其中包括CozetteVector.ttfCozetteVector.otf。我將這兩個文件都複製到~/.local/share/fonts並執行了fc-cache -v ~/.local/share/fonts. 現在,當我執行時fc-list | grep -i cozette,我可以看到列出了 TTF 和 OTF 版本,名稱相同CozetteVector:style=Regular

當我CozetteVector在圖形程序中選擇字型時,將使用哪種字型?

Fontconfig 如何處理這種情況?

擁有兩個版本會導致問題或產生衝突嗎?


關於為什麼會發生這種情況以及為什麼有人會關心的其他背景資訊

在 Fedora 35 上,字型包通常包含相同字型的 OTF 和 TTF 格式。例如,redhat-text-fonts包同時包含/usr/share/fonts/redhat/RedHatText-LightItalic.otf/usr/share/fonts/redhat/RedHatText-LightItalic.ttf

我還遇到過一種情況,我通過將字型複製到~/.local/share/fonts並執行來手動“安裝”字型fc-cache -f,但後來我使用系統提供的軟體包安裝了相同的字型。現在我在兩個完全不同的目錄中擁有相同的字型檔,定義了相同的字型系列。文件名可能完全相同,也可能存在一些變化。

通常重複項實際上是重複項,差異並不重要。但有時這些衝突並非微不足道,例如,一個版本是可變字型而另一個版本不是,或者一個版本包含多個樣式集而另一個版本不包含。

我在今年年初的郵件列表執行緒中找到了答案:https ://lists.freedesktop.org/archives/fontconfig/2022-January/006860.html

最新的有優先權。它由 測量FC_FONTVERSION。如果兩者相同,則取決於元素的順序。第一個有優先權。

似乎順序是由使用者配置文件中的目錄順序定義的。除此之外,它完全是任意的,並且可能取決於使用者的文件系統。我查看了原始碼,但無法弄清楚字型檔列表的確切生成位置。

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