fontconfig の側からアプローチしてみた。

<match target="font">
<test name="family"><string>mediumのフォント名</string></test>
<test target="pattern" name="weight" compare="more">
<const>medium</const>
</test>
<edit name="file" mode="prepend" binding="strong">
<string>代替フォントのフルパス</string>
</edit>
<edit name="family" mode="prepend" binding="strong">
<string>代替フォント名</string>
</edit>
</match>

しかし firefox では上の設定が反映されるが、肝心の Emacs では反映されない orz