First of all, Please note that "Regular" style is default style though, most applications request *Regular weight* instead of style name. So the correct command to represent a request is `fc-match "Amber Whiskey:weight=regular". Based on that, let's see what happened. AmberWhiskey-Aged.otf has two family names. one is "Amber Whiskey" and one is "Amber Whiskey Aged". And, weight is set to 80 which is the same as FC_WEIGHT_REGULAR. So the behavior itself isn't wrong. Second, I don't recommend using the above config because that will break non-Regular selection. I didn't test but this may works instead: <match> <test name="family"> <string>Amber Whiskey</string> </test> <test name="weight"> <const>regular</const> </test> <test qual="all" name="style" compare="eq"> <string></string> </test> <edit name="style"> <string>Regular</string> </edit> </match> This will add Regular to style property only when weight is set to "regular" and no styles is set. you can still pick up the aged variant with "Amber Whiskey:style=Aged". If you don't want to see the aged variant as a part of "Amber Whiskey", things would be much simpler. you may have another workaround like this: <match target="scan"> <test name="family"> <string>Amber Whiskey</string> </test> <test name="family"> <string>Amber Whiskey Aged</string> </test> <edit name="family" mode="delete" /> </match> This will modify the fontconfig cache. AmberWhiskey-Aged.otf is then represented as "Amber Whiskey Aged" only. For your original question, if there are any reasons you can't put something into a config file, you can use FcConfigParseAndLoadFromMemory() function as said in other mail. otherwise you can create your own config for a workaround and put it into $HOME/.config/fontconfig or something like that. Hope that helps, On Wed, Apr 12, 2023 at 9:12 AM Idriss Fekir <mcsm224@xxxxxxxxx> wrote: > > Hi, > > Some fonts aren't matched by fontconfig correctly e.g: the Amber Whiskey > family has 4 faces Regular, Aged, Full Color, Shadow. > `fc-match "Amber Whiskey"` outputs "Aged" instead of "Regular", And > since Pango relies on fontconfig for that, it also exhibits the same > behavior (e.g: Inkscape an gimp, both rely on pango, would pick the > "Aged" variant). This could be worked around with a rule: > > ``` > <match target="pattern"> > <test name="family"> > <string>Amber Whiskey</string> > </test> > <edit name="style"> > <string>Regular</string> > </edit> > </match> > ``` > > My question is how can i do that but in code (in C), that is > how can i check what fc-match would output, then if the output is wrong > add a rule like the following to the FcConfig? > > I'm open to suggestions if there are better ways. > > I did read the docs but i couldn't figure out how. > > The man page for FcFontMatch says that it should only be called after > FcConfigSubstitute and FcDefaultSubstitute have been called for > the pattern, i don't understand what that means exactly. > > Thanks a lot. -- Akira TAGOH