パッケージマネージャ(現在Arch Systemで実行中)のフォントを含む多くのフォントには、汎用ファミリが含まれていません。セリフ"、"等幅" そして "筆記体「だから私は正しい家族を手動で示す必要があります(https://eev.ee/blog/2015/05/20/i-stared-into-the-fontconfig-and-the-fontconfig-stared-back-at-me/)。
しかし、「等幅フォントの場合、回避策があります。すべてのフォントの間隔プロパティは100です。これを確認するには、fc-list :spacing=100
(こちらも参照)を実行します。https://unix.stackexchange.com/a/363368/473666)。つまり、このプロパティ値を持つすべてのフォントを自動的に「等幅「フォント」です。
たとえば、デフォルトの設定ファイルとドキュメントでは、"セリフ" そして "等幅" として "サンセリフ" こちらです:
<match target="pattern">
<test qual="all" name="family" compare="not_eq">
<string>sans-serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>monospace</string>
</test>
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
</match>
そこで、私はこれを試しました:
<match target="pattern">
<test qual="all" name="spacing" compare="eq">
<int>100</int>
</test>
<test qual="all" name="family" compare="not_eq">
<string>monospace</string>
</test>
<edit name="family" mode="append_last">
<string>monospace</string>
</edit>
</match>
結果:毎システムのフォントが等幅フォントになりました。 これ<int>100</int>
は の変更でも発生します<const>mono</const>
。man fonts.conf
および に記載されている多くのデフォルト設定ファイルをすでに読みましたfc-conflist
が、動作させることができませんでした。 プロパティとその値の複数の組み合わせを試しましたが、結果は常になしまたは毎フォントは等幅フォントとして扱われます。
今のところ、次のコマンドを使用してソースのリストを生成し、すべてを手動で追加しました: fc-list :spacing=100 | awk -F: '{print $2}' | sort -u
。Stack Exchange で質問するのは初めてですが、わかりやすく説明できたと思います。
答え1
qual="all"
スペースのテストで引数を削除します。これは、リスト (つまり、family
文字列のリスト) をテストするときの動作を指定するために使用されます。 を使用したスカラー テストはqual="all"
常に成功します。これは fontconfig のバグです。
答え2
<match target=font>
間隔をテストするために、一致ターゲットを に変更する必要がありました。fontconfig はパターン マッチ時に間隔を認識しないと思います。
フォント ファミリの設定は必要ないのでまだ試していませんが、設定を変更すると、コンソール テキストのみの GNOME ターミナルでアンチエイリアシングをオフにすることができます。
<match target="font">
<test name="spacing" compare="eq">
<int>100</int>
</test>
<test name="prgname" compare="contains">
<string>gnome-terminal</string>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
fontconfig バージョン 2.13.1 でテスト済み。