fc-matchがどのように一致するかを調べる方法は?


18

私が実行するときfc-mach Sans、それは戻りますDejaVuSans.ttf: "DejaVu Sans" "Book"が、それのように実行されるfc-match "Sans "か、またはfc-match "Sans 9"それは戻りますunifont.ttf: "unifont" "Medium"。私は常にDejaVu Sansを使用することを好みますが、fontconfigがunifontを選択する理由がわかりません。グローバル設定もローカル設定もunifontに言及していgrep -ri unifont /etc/fonts/ ~/.fonts.confないようです(何も返しません)。LC_DEBUGで遊んでも助けにはなりませんでした。fontconfigがこのように動作する理由に関する情報を取得する方法はありますか?

回答:


11

一見すると、本物のfontconfigのバグのように見えます。ここでは正常に動作し、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"

しかし、よく見ると、さらに詳細を見ることができます。まだどこかにfontconfigのバグがある可能性があり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)さらに、デフォルト値/設定値を使用していることを大まかに確認し、渡した検索語を最初に変更することを確実に確認します。さらに深いものについては、コード検査する必要があります(上記の関数から始めます)。


5

FontConfigは、一致基準からの「距離」に基づいて属性を一致させました。背後で何が起こっているのかを確認したい場合は、環境変数 FC_DEBUG = 3を設定し、検索を再実行します。これにより、役立つデバッグ情報が表示されます。FontConfigコードを読む必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.