同じフォント、同じ名前、2つの異なるファイル形式。 Fontconfigはどちらを使用しますか?

同じフォント、同じ名前、2つの異なるファイル形式。 Fontconfigはどちらを使用しますか?

元の質問

ダウンロードしましたcozetteフォント、これにはとCozetteVector.ttfが含まれますCozetteVector.otf。これら2つのファイルをにコピーして~/.local/share/fonts実行しましたfc-cache -v ~/.local/share/fonts。これで実行すると、fc-list | grep -i cozetteTTFと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これは高度なルールの非常に強力な機能です。同じフォントには、それぞれ固有の設定を持つ複数のエイリアスがあります。 (まだテストしていません)

おすすめ記事