vb.net - 由于缺少标准字体 (VB.NET) 而导致崩溃

标签 vb.net fonts crash

我们的自动崩溃报告系统已经开始发送越来越多的此类崩溃报告:

System::Windows::Forms::Application::ThreadException event occured
SENDER: System.Threading.Thread

EXCEPTION: System.ArgumentException
MESSAGE: Font 'Arial' does not support style 'Regular'.
SOURCE: System.Drawing
CALL STACK
   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..ctor(FontFamily family, Single emSize)
   at Kernel.EH_FontServer.CreateFont(String family, Single size, FontStyle style) in **
   at Kernel.EH_FontServer..cctor() in **

我的印象是 Arial 应该在 Windows 上的任何地方都可用,并且当找不到字体时,Windows 将恢复为另一种确实存在的字体+样式。

处理这个问题的正确方法是什么?我的应用程序需要为不同的显示元素定义许多标准字体。到目前为止,我已经对 Arial、Courier New、Comic Sans Serif 和 Times New Roman 进行了硬编码,并且我已经收到了所有这些的崩溃报告。

一旦用户安装了丢失的字体,一切都会恢复正常。

最佳答案

避免这种情况的一种方法是将字体直接嵌入到您的应用程序中。从许可的角度来看,像 Arial 这样的核心 TTF 字体应该没问题:

阅读此许可规范:

http://www.microsoft.com/typography/RedistributionFAQ.mspx

如何将字体嵌入 VB.NET 应用程序:
http://www.tek-tips.com/faqs.cfm?fid=4747

关于vb.net - 由于缺少标准字体 (VB.NET) 而导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545171/

相关文章:

crash - 使用某些插件访问设备通讯录时,应用程序崩溃且没有任何日志

c# - 如何让我的控制台应用程序在不退出的情况下在另一个线程上运行后台进程?

vb.net - MDX 查询返返回告中的值,但不返回 Visual Basic 代码中的值

c# - 在 ASP.Net 中调用 QueueUserWorkItem 期间如何保留执行线程的上下文?

css - @font-face 在 Firefox 和 Chrome 中的奇怪行为

android - BroadcastReceiver 在连接状态更改时使 Android 应用程序崩溃

.net-4.0 - w3wp.exe 崩溃 - ThreadAbortException

javascript - 显示加载进度模式不隐藏

javascript - 使用 Javascript 动画可变字体

html - 谷歌网络字体