C# Fontクラスを使うときはこれに注意
先日は 新しくパソコンを自作した ので、Windowsもクリーンインストールしました。 いつも使っていた「写真に文字を入れる」自作アプリがあって、新しいパソコンでも普通に使えました。 それが、何日後に出力された写真を使おうとしたら、「あれ?何かが違う!」と感じて、よく見てみたら、写真に描画された文字のフォントが違うではありませんか!? そういえばWindowsをインストールしたけど、そのフォントをまだ入れていないと思い出しました。 フォントが見つからなかったら、なんでエラーが出ないんだろうと不思議に思って、早速コードを調べてみました。 C#のFontクラスにはfallback代替フォントが存在している 指定フォントが見つからないときの挙動 Font Classの公式仕様を調べてみる 指定フォントが見つからないときにエラーを出す方法 Fontが見つからないときにエラーを出すべきかどうか C#のFontクラスにはfallback代替フォントが存在している 指定フォントが見つからないときの挙動 指定のフォントが見つからなかったときはExceptionを投げてくれると期待しました。 string fontName = "My Font" ; Font font = new Font(fontName, 12 ); } /* * fontを使うコード */ わざと存在しないFontを指定して、fontオブジェクトの中身をDebugで見てみよう: Exceptionを出さずに代替フォント Microsoft Sans Serif が自動的に使われています! Font Classの公式仕様を調べてみる Microsoft DocサイトのFont Classページ に注意書きがありました: If you attempt to use a font that is not supported, or the font is not installed on the machine that is running the application, the Microsoft Sans Serif font will be substituted. やっぱり、サポートされないフォントあるいはインストールされて