Introduction
WinForms で ListView
を使った時、下記のような例外を投げる時がある。
SystemSystem.ArgumentException: ‘TrueType フォントのみがサポートされています。これは TrueType フォントではありません。’
そのままの説明なのだが、通常の使用方法では遭遇することはない。
Why?
調べた限り、この例外に遭遇するのは、 ListView
の OwnerDraw
に true
を設定している状態で、下記のパターンに該当した時。
System.Drawing.Text.PrivateFontCollection
のAddFontFile
メソッドを使用してファイルから読み込んだ Open Type Font をListView
のFont
プロパティに設定した時OwnerDraw
がfalse
なら例外には遭遇しないのが不思議。
1 | using System.Drawing; |
AddMemoryFont
を使って追加した Open Type フォントやシステムに追加してある Open Type フォントを使った時はこの現象発生しない。AddFontFile
の 説明 を見ると
Windows Forms applications support TrueType fonts and have limited support for OpenType fonts. If you try to use a font that is not supported, such as an unsupported OpenType font or a Bitmap font, an exception will occur.
とあるので、この現象のことを指していると思われる。