外部依存関係なしで、配布したいスタンドアロンの HTML ドキュメントがあります。このドキュメントでは、一部のユーザーのみがインストールする非標準フォントを使用しています。
フォントがインストールされていないユーザーのために、埋め込み SVG ドキュメントにフォントのコピーを含めています<body>
。(この例では 1 グリフ フォントを使用していますが、実際のドキュメントでは完全なフォントを使用しています。)
<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 フォントは通常のフォントほど見栄えがよくないため、フォントがローカルにインストールされていない場合にのみ SVG フォントを使用したいと考えています。フォントが外部 SVG ドキュメントで定義されている場合、次のようにローカルにインストールされたフォントよりも低い優先度で使用できます: ( 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>
残念ながら、現在のドキュメントのフォントでは、明らかなバリエーションはどれも機能しないようです: ( fiddle )
src: local("My Font"),
url("./#MyFontElement") format("svg"),
url("./#MyFontElement"),
url("#MyFontElement") format("svg"),
url("#MyFontElement");
宣言がなくても、フォントはで指定された@font-face
として文書内ですでに使用可能です。ただし、これはという名前のネイティブ フォントよりも優先的に使用されるため、解決策ではありません。MyFont
font-family
<font-face />
MyFont
...として参照できることを願っていましたlocal("MyFont")
( fiddle )
src: local("My Font"), /* local */
local("MyFont"); /* embedded */
...しかし、それもうまくいきません。
埋め込みフォントに別の名前を付けて、優先度を下げて使用することもstyle="font-family: LocalFont, EmbeddedFont"
できますが、ユーザーがローカル ファイルからドキュメントにスニペットをインポートできるようにすると、それらのローカル ファイルは標準名でのみフォントを参照します。これらの参照をインポート時に書き換えることは可能ですが、私はその解決策が好きではありません。
@font-face
現在のドキュメントに埋め込まれている SVG フォントを宣言から参照するにはどうすればよいですか?