字体不';不存在并导致.NET应用程序崩溃,需要检查或安装字体
本文关键字:字体 崩溃 安装 检查 应用程序 不存在 NET | 更新日期: 2023-09-27 18:26:13
部署C#.NET应用程序时,我们的GUI元素使用"Arial"字体(这是Visual Studio GUI设计器中的默认字体)。
由于某种原因,我们合作的一位客户没有安装Arial字体(他们一定是手动删除的,因为据我所知,所有Windows安装都默认使用Arial字体)。
这会导致异常/应用程序崩溃。
有没有办法确保C#中存在字体,如果没有,可以自动安装?
您需要将字体作为资源嵌入,然后执行类似的操作:
[DllImport("gdi32", EntryPoint = "AddFontResource")]
public static extern int AddFontResourceA(string lpFileName);
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
List<FontFamily> fontsFamilies = new List<FontFamily>(FontFamily.Families);
if (!fontsFamilies.Exists(f => f.Name.Equals("Arial")))
{
//Save the font from resource here....
//Install the font
int result = AddFontResourceA(@"C:'MY_FONT_LOCATION'Arial.TTF");
}
Application.Run(new Form1());
}
在显示任何UI元素之前,将字体作为资源嵌入并检查/安装它。