私が管理しているWinFormsアプリケーションは、ごく一部のユーザーマシン(おそらく現在までに約4台)でクラッシュします。これらのユーザーの場合、アプリケーションは毎回クラッシュし、最初のダイアログが表示される前にクラッシュします。
例外
Source:
System.Drawing
Message:
Font 'Arial Black' does not support style 'Bold'.
Stack Trace:
at System.Drawing.Font.CreateNativeFont()
at System.Drawing.Font.Initialize(FontFamily family, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
at System.Drawing.Font.Initialize(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet, Boolean gdiVerticalFont)
at System.Drawing.Font..ctor(String familyName, Single emSize, FontStyle style, GraphicsUnit unit, Byte gdiCharSet)
アプリケーションが使用するフォントの1つは、ArialBlackです。
this.label3.Font = new System.Drawing.Font("Arial Black", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
このクラッシュが初めて発生したとき、ユーザーのコンピューターにあるフォントに気づきましたが、私のものではありませんでした。これは「ArialBlackItalic」と呼ばれ、1997年の日付です。これはファイル名です。
ARBLI___。TTF
ユーザーはWindowsXPを使用していました。
フォントを削除した後、アプリケーションは正常に実行されました。前述したように、過去22か月間に、このクラッシュは他の約3人のユーザーに発生しました。ユーザーのコンピューターから「ArialBlackItalic」フォントを削除するたびに、問題が解決したようです。
最近では、ユーザーはWindows 7を使用していて、フォントの日付ははるかに新しいものでしたが、前述のプロトコルで問題は解決しました。
この時点で、私はこのクラッシュバグの根本的な原因とそれを防ぐ方法を理解しようとしています。