Linux で実行したい C# コンソール アプリケーションがあります。MonoDevelop でコンパイルし、自分のマシン (Ubuntu 12.04 LTS、64 ビット) で正常に動作します。ただし、レンタルした VPS (同じ OS で X11 はありません) では、アプリケーションは問題なく起動しますが、実行時に例外が発生します。
例外の原因となる呼び出しは、クラス System.Windows.Forms.TextRenderer の MeasureText メソッドです。このメソッドがコンソール アプリで何をしているのか疑問に思っている場合は、作成している SVG ファイル内のテキスト要素の正しい配置を計算するために、特定のフォントでレンダリングされたテキストの長さを測定する必要があります。以下の例外メッセージとスタック トレースの抜粋:
An exception was thrown by the type initializer for System.Windows.Forms.XplatUI
at System.Windows.Forms.TextRenderer.MeasureTextInternal (IDeviceContext dc, System.String text, System.Drawing.Font font, Size proposedSize, TextFormatFlags flags, Boolean useMeasureString) [0x00000] in <filename unknown>:0
at System.Windows.Forms.TextRenderer.MeasureText (System.String text, System.Drawing.Font font) [0x00000] in <filename unknown>:0
問題のフォントをサーバーに正しくインストールしたと思います。少なくとも、fc-list を呼び出すと表示されます。それで、これにはXが必要ですか、それとも回避する方法はありますか? サーバーにパッケージがインストールされていないだけですか? それができない場合、テキスト測定を達成するために使用できる代替手段はありますか?