特定の言語/スクリプトの文字フォントのコレクションを変更するには、Fontconfigを使用しますか?

特定の言語/スクリプトの文字フォントのコレクションを変更するには、Fontconfigを使用しますか?

私はArch Linux、Deepin Desktopを使用しています。使っています能登セリフ私の標準フォントですが、アラビア語の文字は好きではありません。だから私の目標は、アラビア語の文字にのみ使用される別のフォントを使用することです。

私が試したことは次のとおりです。/etc/fonts/conf.d/次の内容で新しい設定ファイルを作成しました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test name="lang" compare="contains">
            <string>ar</string>
        </test>
        <test qual="any" name="family">
            <string>sans-serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Naskh Arabic</string>
        </edit>
    </match>

    <match target="pattern">
        <test name="lang" compare="contains">
            <string>ar</string>
        </test>
        <test qual="any" name="family">
            <string>serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Noto Naskh Arabic</string>
        </edit>
    </match>
</fontconfig>

私は次に逃げたfc-cache -r。しかし、これはうまくいきません。同じフォントがまだ使用され、実行中は以前と同じようにfc-match返されます。NotoSerif-Regular.ttf: "Noto Serif" "Regular"

ベストアンサー1

多くのNotoフォントは、アラビア語のスクリプトをサポートするとシステムに報告し、部分的にサポートしています。これらのフォントの1つはウルドゥー語何らかの理由でアラビア語のテキストをサポートする他のフォントよりも優先順位の高いフォントです。

あなたはできます好む次のように、特定のフォントは他のフォントよりも優先されます。

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

<alias>
  <family>sans-serif</family>
  <prefer>
   <family>Noto Sans</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

 <alias>
  <family>serif</family>
  <prefer>
   <family>Noto Serif</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

 <alias>
  <family>monospace</family>
  <prefer>
   <family>Noto Sans Mono</family>
   <family>Noto Naskh Arabic</family>
  </prefer>
 </alias>

</fontconfig>

フォントの位置が高いほど人気が​​高くなります。この場合は、Noto Naskh Arabic他のアラビア語のフォントを好みます。

もちろん、必要な言語やフォントでこれを行うことができます。

何らかの理由でのユーザープロファイルのみが機能します~/.config/fontconfig/fonts.conf。環境変数は$XDG_CONFIG_HOMEホームディレクトリ.config内のディレクトリに設定する必要があるため$HOME/.config

その後、構成を再作成して適用する必要がありますfc-cache。新しく実行されたアプリケーションにのみ新しい設定が表示されます。変更を完全に適用するには、X サーバーまたはデスクトップを再起動します。

編集する:ロケールを一致させると、一部のサイトはアラビア語のUTF-8文字を表示するときにロケールを使用するarため、すべてのサイトで機能するわけではありません。en

で始まる設定ファイルを読み、読み込むと、/etc/fonts/conf.dこれが正解であることがわかります。README[30-40]

ウェブサイトにSerifフォントが必要だとしましょう。 Fontconfigは最初にリストを繰り返し、Noto Serifアラビア語の文字を見つけたら、リストの2番目のフォントを使用します。Noto Naskh Arabicそして、そのフォントがアラビア語のスクリプトをサポートしていることがわかったら、そのフォントを使用します。

おすすめ記事