我有一个想在 Linux 上运行的 C# 控制台应用程序。我已经在 MonoDevelop 中编译了它,并且在我的机器(Ubuntu 12.04 LTS,64 位)上运行良好。但是,在我租用的 VPS 上(相同的操作系统但没有 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 还是有办法解决它?我只是错过了服务器上的一些软件包安装吗?如果做不到这一点,是否有替代方法可以用来实现文本测量?