WPFアプリケーションにおけるフォントのパッケージング

WPFでは、アプリケーションで利用するフォントをどの環境でも利用できるようにパッケージ化することができます。アセンブリとは別にコンテンツとしてフォントをパッケージ化する方法と、アセンブリにリソースとしてフォントを埋め込む方法の2種類が存在します。


アセンブリとは別にコンテンツとしてフォントをパッケージ化する方法
プロジェクトにフォントファイルを追加し、Visual Studioで[ビルドアクション]を[コンテンツ]に設定します。
一度ビルドを行い、今度はExpression Blend 2 September Preview(以下Blend 2)でフォント選択のドロップダウンを表示させると、コンテンツとしてパッケージ化したフォントに星印が付いていることを確認できます(※Expression Blend 2 September Previewからの新機能です)。



TextBlockでもなんでも構わないので、そのフォントを使用して文字を表示するようにします。
ビルドを行い、作成された実行ファイルとそのフォントファイルをほかの環境に持っていって実行すると、そのフォントがインストールされていない環境でも期待通りの表示を行うことができます。なお、アセンブリとフォントファイルは同一フォルダに存在している必要があります。


アセンブリとは別にコンテンツとしてフォントをパッケージ化する方法
コンテンツとする方法とほとんど同じになりますが、今度は[ビルドアクション]を[Resource]に設定したうえでビルドします。
やはりBlend 2のフォント選択のドロップダウンには星印が表示されます。


リソースとしてフォントが埋め込まれているので、今度はフォントファイルを一緒に配布する必要ありません。実行ファイルのみでどの環境でもそのフォントを使用した表示を行うことができます。
先ほどのフォント「Bizareadventure」を使用した例

※「Bizareadventure」フォントがインストールされていない環境でも問題なく表示できる。


XAMLを見ると、どちらの場合もフォント名の前に#が付いています。
XAML

<TextBlock FontFamily="./#Bizareadventure" Text="/g*'y"/>


これがパッケージ化したフォントを参照する記述のようです。
フォントのパッケージングの詳細については、下記のページが参考になります。

アプリケーションでのフォントのパッケージング



なお上記のページにも記載がありますが、フォントをアプリケーションに埋め込んだり、再頒布したりする場合には、フォントのライセンス確認を忘れずに行いましょう。