I have a separate HTML document that I want to distribute, without any external dependencies. I use a custom font in this document, which will be installed only by some of my users.
For those users who do not have a font installed, I include a copy of the font in the embedded SVG document at the top <body>. (I use a single-glyph font for this example, the actual document uses the full font.)
<svg style="display: none;"><defs>
<font id="MyFontElement">
<font-face font-family="MyFont" />
<glyph unicode="A" horiz-adv-x="950" d="M0,0L0,100L100,100L100,200L0,200L0,300L100,300L100,400L200,400L200,500L300,500L300,600L400,600L600,600L600,500L700,500L700,400L800,400L800,300L900,300L900,200L800,200L800,100L900,100L900,0L600,0L600,100L700,100L700,200L800,200L800,300L100,300L100,200L200,200L200,100L300,100L300,0L0,0M300,400L600,400L600,500L300,500L300,400Z" />
</font>
</defs></svg>
SVG fonts do not look as good as regular fonts, so I want the SVG font to be used if the font is not installed locally. If a font was defined in an external SVG document, I could use it with lower priority than a locally installed font like this: ( fiddle )
<style>
@font-face {
font-family: "My Font";
src: local("My Font"), url("fonts.svg#MyFontElement") format("svg");
}
</style>
<p style="font: 3em 'My Font';">
Alphabet
</p>

Unfortunately, none of the obvious options work for the font in the current document: ( fiddle )
src: local("My Font"),
url("./#MyFontElement") format("svg"),
url("./#MyFontElement"),
url("#MyFontElement") format("svg"),
url("#MyFontElement");
Even without declaring @font-facethe font is already available in the document as MyFont, font-familyspecified in <font-face />. However, this will be used with higher priority than the native font with the name MyFont, so it is not a solution.
I was hoping I could refer to it as local("MyFont")... ( fiddle )
src: local("My Font"),
local("MyFont");
... but that doesn't work either.
style="font-family: LocalFont, EmbeddedFont", , . , .
SVG, @font-face?