Tentando configurar fontconfig para fazer com que a fonte "Sans" seja mapeada para "Times" e "sans-serif" para "Helvetica", não importa o que eu tente, Sans e sans-serif mapeiam para a mesma fonte. Config:
<alias>
<family>sans-serif</family>
<prefer>
<family>Helvetica</family>
</prefer>
</alias>
<alias>
<family>sans</family>
<prefer>
<family>Times</family>
</prefer>
</alias>
<match>
<test name="family">
<string>sans-serif</string>
</test>
<edit binding="strong" name="family" mode="append">
<string>Helvetica</string>
</edit>
</match>
<match>
<test name="family">
<string>sans</string>
</test>
<edit name="family" mode="append">
<string>Times</string>
</edit>
</match>
Resultados:
$ fc-match "sans"
Times.ttc: "Times" "Regular"'
$ fc-match "sans-serif"
Times.ttc: "Times" "Regular" <-- want this to be Helvetica!
Curiosamente, qualquer string que comece com "sans-" coincide com Times agora:
$ fc-match "sans-ssdsdxcc"
Times.ttc: "Times" "Regular"
Considerando que "sans serif" corresponde a alguma outra fonte:
$ fc-match "sans serif"
GoudyBookletter1911.otf: "Goudy Bookletter 1911" "Regular"