web-dev-qa-db-ja.com

fontconfigでフォントファミリのウェイトの1つにエイリアスを設定するにはどうすればよいですか?

コンピューターにフォントFiraコードをインストールしていますが、他のバリアントと同じようにfontconfigを使用して太字のバリアントをターゲットにできません。 fc-matchの内容は次のとおりです。

$ fc-match "Fira Code"
FiraCode_Regular.otf: "Fira Code" "Regular"
$ fc-match "Fira Code Light"
FiraCode_Light.otf: "Fira Code" "Light"
$ fc-match "Fira Code Medium"
FiraCode_Medium.otf: "Fira Code" "Medium"
$ fc-match "Fira Code Bold"
NotoSans-Regular.ttc: "Noto Sans" "Regular"

Noto Sansは私の代替フォントです。つまり、Fira Code Boldは私のどのフォントとも一致しません。
ただし、fc-matchFira Code:Boldと一緒に実行すると、正しいものと一致します。

$ fc-match "Fira Code:Bold"
FiraCode_Bold.otf: "Fira Code" "Bold"

この質問 に続いて、30-fira-code-bold.conf内に~/.config/fontconfig/conf.d/というファイルを次の内容で作成しました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test name="family"><string>Fira Code</string></test>
        <test name="weight" compare="more_eq"><const>bold</const></test>
        <edit name="family" mode="assign" binding="strong"><string>Fira Code Bold</string></edit>
    </match>
</fontconfig>

次に、fc-cache -rvを実行してログアウトしましたが、$ fc-match "Fira Code Bold"を実行すると、NotoSansが表示されます。私が気付いた唯一の違いは、$ fc-match "Fira Code:Bold"を実行してもNotoSansが表示されることです。したがって、基本的には、Firaコードの太字のバリアントをターゲットにすることはできません。

Archlinuxを実行していますが、役立つ場合は、これがfc-listの出力です。

$ fc-list "Fira Code" | egrep -o 'FiraCode.*'
FiraCode_Medium.otf: Fira Code,Fira Code Medium:style=Medium,Regular
FiraCode_Light.otf: Fira Code,Fira Code Light:style=Light,Regular
FiraCode_Regular.otf: Fira Code:style=Regular
FiraCode_Bold.otf: Fira Code:style=Bold

「Fira Code Bold」を使用してFira Code Boldをターゲティングする方法を誰かに教えてもらえますか?

6
brainplot

他のfontconfigファイルからテストしてみると、機能しているように見える正しい構成ファイルは次のとおりです。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test qual="any" name="family">
            <string>Fira Code Bold</string>
        </test>
        <edit name="family" binding="same" mode="prepend">
            <string>Fira Code</string>
        </edit>
        <edit name="weight" binding="same" mode="prepend">
            <const>bold</const>
        </edit>
    </match>
</fontconfig>
6
brainplot