元の質問
ダウンロードしましたcozetteフォント、これにはとCozetteVector.ttf
が含まれますCozetteVector.otf
。これら2つのファイルをにコピーして~/.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
システム提供のパッケージを使用して同じフォントをインストールする状況も発生しました。 2つの完全に異なるディレクトリに同じフォントのコレクションを定義する同じフォントファイルがあります。ファイル名はまったく同じでも、一部変更されている場合もあります。
多くの場合、重複項目は実際に重複項目であり、違いは重要ではない。ただし、このような競合が問題にならない場合もあります。たとえば、あるバージョンは可変フォントで、もう一方のバージョンはそうではありません。あるいは、あるバージョンには複数のスタイルセットが含まれ、他のバージョンには含まれません。
答え1
どちら?
おそらくフォントがスキャンされる順序です。ドキュメントのプロパティを確認してください。
注文が不安定であることを確認するには、次の方法を試してみることもできます。fc-match -f '%{fullname} %{file}\n' CozetteVector
質問?
いいえ。別のファイルである1つのフォント構成は、それを別のフォントとして扱います。
順序は、クエリを作成するアプリケーションによって異なります。これは参照:font-configユーザー設定(FreeDesktopプロジェクト)
フォント優先順位を変更するためのFontconfigルールの例
:)賞金を見逃して、とにかく深く確認するために私を追い続けました。
以下は、同じ種類の2つのフォント間の優先順位を操作する例です。
~/.config/fontconfig/conf.d/00-custom.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- this drop a font from matching, also allow matching with font type
<selectfont>
<rejectfont>
<pattern>
<patelt name="family"><string>CozetteVector</string></patelt>
</pattern>
</rejectfont>
</selectfont>
-->
<!-- this forces a type
<match>
<test name="family">
<string>CozetteVector</string>
</test>
<edit mode="prepend" name="fontformat">
<string>TrueType</string>
</edit>
</match>
-->
<!-- this prioritize the last one which appended, this is for TTF then OTF -->
<match>
<test name="family">
<string>CozetteVector</string>
</test>
<edit mode="prepend" name="fontformat">
<string>CFF</string>
</edit>
</match>
<match>
<test name="family">
<string>CozetteVector</string>
</test>
<edit mode="prepend" name="fontformat">
<string>TrueType</string>
</edit>
</match>
</fontconfig>
フォント構成の一致 デバッグおよびフォント属性の確認
高度なマッチングマンページを見ることができます。また、各フォントで利用可能なプロパティとその値を使用またはfc-match -av ...
理解します。FC_DEBUG=1 fc-match ...
ノート
OTFはTTFよりも進化した。 FontconfigがTTFよりもOTFを優先しても驚くことはありません。しかし、私の主張を裏付ける証拠はありませんが、Ubuntuで見つかった無効なビットマップフォントタイプに似たアップストリームFontconfig設定のどこかにあると疑われます。
アーチウィキリストスタイルセットを有効にするための良いフォント構成の例(まだテストしていません)
ところで、
alias
これは高度なルールの非常に強力な機能です。同じフォントには、それぞれ固有の設定を持つ複数のエイリアスがあります。 (まだテストしていません)
答え2
私は今年初めにメーリングリストスレッドで答えを見つけました。https://lists.freedesktop.org/archives/fontconfig/2022-January/006860.html
最新のものに優先権があります。測定されます
FC_FONTVERSION
。どちらも同じ場合、要素の順序によって異なります。最初のものは優先権を持っています。
順序は、ユーザープロファイルのディレクトリ順序に従って定義されているようです。それ以外は完全に任意であり、ユーザーのファイルシステムによって異なります。ソースコードを見てみましたが、フォントファイルのリストが正確にどこに生成されるのかわかりません。