スキップしてメイン コンテンツへ

 locked
フォント名が長いと、.NET Framework 3.x の WPF アプリケーションが起動できなくなる RRS feed

  • 全般的な情報交換

  • こんにちは、Windows SDK サポート チームです。

    今回は、フォント名の長さと WPF アプリケーションの関係についてご案内します。


    現象

    システムに 256 文字以上の長い名前のフォントがインストールされていると、.NET Framework 3.x で開発された WPF アプリケーションを起動したときに System.TypeInitializationException 例外が発生します。


    原因

    WPF アプリケーションでは文字を表示する前に、以下のレジストリ キー下からシステムにインストールされているフォント名を列挙します。

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

    このとき、フォント名の最大長として 255 文字までを想定していますが、それ以上の長さのフォント名がレジストリに登録されていると、フォント名を読み込むことができないため例外が発生し、それ以降の処理を継続できなくなります。

    この動作は、.NET Framework 3.x における仕様であり、.NET Framework 4.x では最大長が 16383 文字に拡張されたため、同様の現象は発生しません。


    回避策

    前述のとおり .NET Framework 4.x ではこの現象は発生しないため、アプリケーションのフレームワークを .NET Framework 4.x にすることが回避策になります。また、上記 Fonts レジストリ下に登録するフォント名を短くすると、例外が発生しなくなります。


    2019年1月30日 5:57
    所有者