What is the correct Fontconfig syntax for substituting a given uninstalled font with an installed font?

The Fontconfig documentation is fairly opaque. I want applications looking up the 'Helvetica' family to instead receive the 'Helvetica LT Std' family and display that font, browsers in particular. The latest XML file I wrote to ~/.fontconfig/fonts.conf was

<fontconfig>

    <match target="pattern">
        <test name="family" target="default" compare="eq">
            <string>Helvetica</string>
        </test>
        <edit name="family" mode="assign">
            <string>Helvetica LT Std</string>
        </edit>
    </match>

</fontconfig>

What am I doing wrong and what would be a correct way to express this substitution?


This works for me to replace Arial with Ubuntu

<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>
<match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>Ubuntu</string>
        <string>Arial</string>
    </edit>
</match>
</fontconfig>

I found fc-match to be super helpful.

Also, I am on Precise so I use ~/.fonts.conf. In Quntal I understand you should use ~/.config/fontconfig/fonts.conf


That's exactly the same substitution I'm using! This is my configuration, but it only works when the specified font is not available. If the specified font was accessible by fontconfig, named Helvetica, the alias would not apply. However this has been working correctly on all my Ubuntu installations, so I recommend it before using the match tag.

<fontconfig>

<!-- Excerpt -->

    <alias>
        <family>Helvetica</family>
        <accept>
            <family>Helvetica LT Std</family>
        </accept>
    </alias>

<!-- Excerpt -->

</fontconfig>