7

I have the font Fira Code installed on my computer but I can't target its bold variant using fontconfig in the same way I do with its other variants. Here's what fc-match gives me:

$ 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 is my fallback font which I think means that Fira Code Bold doesn't have any matches with any of my fonts.
However, it does match the right one if I run fc-match with Fira Code:Bold.

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

Following this question, I created a file called 30-fira-code-bold.conf within ~/.config/fontconfig/conf.d/ with the following content:

<?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>

and then I ran fc-cache -rv and logged out but it still gives me Noto Sans if I run $ fc-match "Fira Code Bold". The only difference I have noticed is that it gives me Noto Sans even if I run $ fc-match "Fira Code:Bold"; so basically I can't target the bold variant of Fira Code in any way now.

I'm running Archlinux, if it can help, and this is the output of 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

Can anyone tell me how I can target Fira Code Bold using "Fira Code Bold"?

1 Answer 1

7

By testing around from other fontconfig files, the right configuration file which seems to be working is the one below:

<?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>

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .