fc-matchの一致を確認するには?

fc-matchの一致を確認するには?

実行するとfc-mach Sans返されますが、次のように実行するDejaVuSans.ttf: "DejaVu Sans" "Book"と返されます。私はいつもDejaVu Sansを使用することを好みますが、Fontconfigがunifontを選択する理由を理解していません。グローバル構成とローカル構成はどちらもunifont(何も返さない)に言及していないようです。 LC_DEBUGを使っても私には役に立ちませんでした。 Fontconfigがこのように動作する理由に関する情報を取得する方法はありますか?fc-match "Sans "fc-match "Sans 9"unifont.ttf: "unifont" "Medium"grep -ri unifont /etc/fonts/ ~/.fonts.conf

ベストアンサー1

ちょっと見てみると、ここではうまく機能し、DejaVuとUnifontがインストールされているので、実際のフォント設定のバグのように見えます。

$ fc-match Sans
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans"
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans "
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans 9"
DejaVuSans.ttf: "DejaVu Sans" "Book"

しかし、詳細を見ると、より詳細な情報を見ることができます。どこかにまだフォント設定エラーがある可能性がありますが、fc-match何も見つからない場合は、明らかにデフォルト値が返されます。私のシステムのデフォルトはDejaVuです。

$ fc-match uni
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match unifont
Unifont.ttf: "unifont" "Medium"
$ fc-match 4e5zedrkbxp
DejaVuSans.ttf: "DejaVu Sans" "Book"

マニュアルページでは、fc-match(1)コマンドが正確な一致を実行せず、代わりに最も一致すると見なされる項目を返すことを確認します。-a次のコマンドを使用するか、より簡潔に表示できます-s

$ fc-match -s uni # now it also finds unifont
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
n019003l.pfb: "Nimbus Sans L" "Regular"
helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
KanjiStrokeOrders.ttf: "KanjiStrokeOrders" "Medium"
Eadui.ttf: "Eadui" "Medium"
Unifont.ttf: "unifont" "Medium"
FreeSerif.ttf: "FreeSerif" "нормален"
cu12.pcf.gz: "ClearlyU" "Regular"
cu-pua12.pcf.gz: "ClearlyU PUA" "Regular"
10x20.pcf.gz: "Fixed" "Regular"

単に「粗雑」と言い、その上に必要な方法で一致するように他の検索を追加することができます。

$ fc-match -s uni | grep -i uni
Unifont.ttf: "unifont" "Medium"

しかし、あなたの質問は、それが正確にどれだけ一致するかです。FcFontMatch(3)また、デフォルト/設定値を使用しているかどうかを概説し、渡されたクエリを最初に変更するかどうかを明示的に確認します。より深い内容のためにコード確認(上記の機能から始めてください)

おすすめ記事