Silverlight 2 Betaでフォントファイルをサーバー側からダウンロードして使用するもっとも簡単な方法

Silverlightで普通にフォント名を指定して利用できるフォントは、組み込みフォントである9種類のみとなっています。



これは基本的にSilverlight 2 Betaでも変わらないようです。

Text and Fonts | Microsoft Docs



※04/18追記
Silverlight 2 Betaからクライアントにインストールされたフォントも指定することができるようです。その場合、フォント名は英語表記にする必要があります。

Akira Onishi's weblog : How to set Japanese font on Silverlight 2 Beta 1:フォントを指定して日本語表示を行う時のポイント

※※※※※※※


しかしながらこれらのフォントしか使えないとなると、日本語は事実上使えないということになっていまいます。そのため、Silverlight 2 Betaから日本語はクライアントにインストールされたフォントが利用されるようになりました。これで、とりあえず何もしなくとも日本語の表示、入力は行えます。

http://www.microsoft.com/silverlight/overview/faq.aspx
TextBlock supports and uses the East Asian fonts installed on the user's machine.






上記の画像はWindowsFirefox上で確認したものですが、これを見ると変換確定前の文字が「MS UI Gothic」で、確定後の文字は「MS ゴシック」になっているようです。これらのフォントがどのように決定されているかは分かりません。フォントリンクが影響しているのか、それともダイアログフォントなどが関係するのか、はたまた固定なのか、ご存知の方がいましたら教えていただきたいと思います。


ちなみにMac OS X Leopardの場合、日本語の表示はできたものの入力はできませんでした。表示は「ヒラギノ角ゴ Pro」だと思います。こちらについてもご存知の方いましたらよろしくお願いいたします。


これらのデフォルトのフォント以外で日本語を表示、入力したいとなると、サーバー側からフォントをダウンロードするという方法になります(静的な文字の表示だけの場合にはPathに変換したものを利用する方法でも可)。
※04/18追記
クライアントにインストールされたフォントを利用するという方法のほかに、サーバー側からフォントをダウンロードして利用するという方法があります。
※※※※※※※
ただし、「WPFアプリケーションにおけるフォントのパッケージング - Yuya Yamaki’s blog」でのフォントのパッケージングの場合同様、フォントのライセンス的に可能であることが前提となります。


Silverlight 1.0では、JavaScriptからDownloaderオブジェクトを使ってサーバー側からフォントをダウンロードすることができました。Silverlight 2 BetaからはマネージのDownloaderがなくなり、その代わりにWebClinetを使ってコンテンツをダウンロードすることができます。

Downloading Content on Demand | Microsoft Docs



しかしながら、フォントの場合にはもっと簡単にXAMLの記述だけでサーバー側からダウンロードして利用することが可能です。


XAML

<StackPanel Margin="10">
    <TextBlock FontFamily="BIZARG_.TTF#Bizareadventure" Text="/g*'y" FontSize="24" />
    <TextBlock Text="デフォルト:abcABCabcABCあいう" FontSize="24" />
    <TextBlock FontFamily="ipafont.zip#IPAGothic" Text="IPAゴシック:abcABCabcABCあいう" FontSize="24" />
    <TextBlock FontFamily="ipafont.zip#IPAPMincho" Text="IPA P明朝:abcABCabcABCあいう" FontSize="24" />
</StackPanel>





上記のようなXAMLを記述し、フォントファイルはxapファイルと同じフォルダにそのまま置くか、もしくはzipファイルに圧縮して置くだけです。


最後に、冒頭に紹介したリンク先のSilvelightのFAQには下記のようなことも書かれていましたので、試してみました。

http://www.microsoft.com/silverlight/overview/faq.aspx
In addition TextBlock supports surrogate content as well as handling proper line breaking for East Asian text.






サロゲートペア文字も表示可能です。ただし、デフォルトフォントではサロゲートペア文字の部分だけがなぜか「MS ゴシック」ではなくなにか別のフォントで表示されているようです。