Consolasの場合、fc-matchがCourierの一致と編集ルールを尊重しないのはなぜですか?


1

XFCEでDebianを使用しています。

デフォルトの動作:一致またはエイリアスなし

最初に、〜/ .config / fontconfig / fonts.confに一致タグまたはエイリアスタグがない場合のシステムのデフォルトの動作を示します。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
</fontconfig>

この場合、fc-matchはCourierおよびConsolasについて次を出力します。

lone@debian:~$ fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match Consolas
DejaVuSans.ttf: "DejaVu Sans" "Book"

カスタム動作:一致が定義されている場合

〜/ .config / fontconfig / fonts.confに次のものがあります。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- Courier => DejaVu Sans Mono -->
    <match>
        <test name="family"><string>Courier</string></test>
        <edit name="family"><string>Deja Vu Sans Mono</string></edit>
    </match>

    <!-- Consolas => DejaVu Sans Mono -->
    <match>
        <test name="family"><string>Consolas</string></test>
        <edit name="family"><string>Deja Vu Sans Mono</string></edit>
    </match>
</fontconfig>

この場合、fc-matchは次を出力します。

lone@debian:~$ fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match Consolas
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

ここで、システムはコンソラスの代替ルールを尊重しているが、クーリエの代替ルールを尊重していないことがわかります。なぜfc-match Courier「DejaVu Sans Mono」ではなく「Nimbus Mono L」の出力なのですか?

回答:


3

この質問は時代遅れになりそうですが、ArialをLiberation Sansに置き換えるシステムをオーバーライドするソリューションを自分で検索したところ、新しいKubuntu Xenial 16.04デスクトップでは嫌いでした。

ユーザーのfontconfigのデフォルトの置き換えを上書きすることが望ましい場合は、Askubuntuでの私の投稿を読むことに興味があるかもしれません:https ://askubuntu.com/a/793363/306420

短い要約

最新のシステムでは、fontconfigはユーザー設定を~/.config/fontconfig/fonts.conf(または分離の目的で)から取得します~/.config/fontconfig/conf.d

私の場合、FirefoxでCSSフォントファミリーを使用してテキストをレンダリングし、Noto Sansを使用したArialを優先するように設定しました。Fontconfigは、デフォルトで、Liberation SansをArial(/etc/fonts/conf.avail/30-metric-aliases.conf)のメトリックドロップインとして使用するように構成されています。

長い検索、試行錯誤の後、解決策は非常に簡単でした:言及されたユーザーディレクトリにあるときにオーバーライドが尊重され、フォーム内のfontconfigの期待に従って名前が付けられます[0-9][0-9]*.conf/etc/fonts/conf.avail/50-user.confおよび/ etcを参照してください)/fonts/conf.d/README)。

Arialをオーバーライドする私の作業構成:

~/.config/fontconfig/conf.d/00-arial-noto.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <!-- Map Arial to Noto Sans instead of Liberation Sans
       (overrides /etc/fonts/conf.d/30-metric-aliases.conf) -->
  <alias binding="same">
    <family>Arial</family>
    <accept>
      <family>Noto Sans</family>
    </accept>
  </alias>
</fontconfig>

fc-match Arialユーザーとしてコンソールで確認すると、追加の作業なしで「Noto Sans」(または新しい設定)が出力されます。

fontconfigの領域での勇敢な戦いについての非常に冒険的な物語を読むことを含めて、半日かけてすべてを理解した後、これが他の人の助けになることを願っています。


0

デフォルト設定で何も変更していない場合、フォント設定ファイルに/etc/fonts/conf.d/はConsolasへの参照が含まれていないため、設定はその設定に使用されます。

ただし、すでにCourierのエントリが含まれており、Nimbus Mono Lにエイリアスされています。

したがって、fonts.confが解析される頃には、Courierはすでに処理されており、作業するCourierはなくなり、Nimbus Mono Lのみになりました。

ソリューション:

fonts.confのNimbus Mono Lフォントで作業します。
書いたら

<match>
    <test name="family"><string>Nimbus Mono L</string></test>
    <edit name="family"><string>DejaVu Sans Mono</string></edit>
</match>

その後、fc-match Courier出力そしてDejaVuなきモノになります。

または、/ etc / fonts / conf.dのすべての.confファイルからCourierエイリアスを削除します。

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