web-dev-qa-db-ja.com

〜/ .fonts.confによるフォント置換

〜/ .fonts.confを使用してHelveticaをDroidSansに置き換えようとしています。ファイルの内容は次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

しかし、何があっても、何も起こらないようです。 fc-cacheを実行してみましたが、/etc/fonts/conf.dをチェックインしたところ、ユーザー固有の構成を明示的に呼び出しているように見える50-user.confが見つかりました。

何が足りないのですか?

ありがとう

編集:調査の結果、/etc/fonts/conf.dの他のルールがユーザー設定を上書きすることがわかったため、user.conf00-user.confにリンクすると役立ちました。置換するフォントを指定できるので、それでも部分的な成功ですが、選択した置換は無視されます。つまり、Helveticaを無効にして、システムを次のフォントにフォールバックできます(つまり、ブラウザでは、スタイルシートで指定されている次のフォントを使用します。フォントが存在しない場合は、標準のサンセリフを表示します。

18
Matteo Riva

構成にバインディング属性が含まれていないと思います。 ( fonts-conf も参照してください)。他の構成によっては、「同じ」または「強い」のバインディングが機能する可能性がありますが、「弱い」では目的のバインディングが得られない場合があります。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
16
frenkx

私はエイリアスのメカニズムがこれでうまくいくと思います:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
3
Geoff Reedy

Helveticaをサンセリフファミリーとしてエイリアスしようとしたときに、同様の問題が発生しました。同じ問題が発生した場合は、/etc/fonts/conf.d/のファイルへのリンクが含まれる/etc/fonts/conf.availのシステム構成を確認してください。決定論的な振る舞いを得るために、これらのエイリアスの多くを削除する必要がありました。

0
j605

「fc-list」は実際に「Helvetica」を表示しますか? fc-matchは何と言っていますか?私の箱(F-12)には、

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

エイリアスのフォントを置換に追加する必要があるかもしれません。

0
vasquez