字体不';不存在并导致.NET应用程序崩溃,需要检查或安装字体

本文关键字:字体 崩溃 安装 检查 应用程序 不存在 NET | 更新日期: 2023-09-27 18:26:13

部署C#.NET应用程序时,我们的GUI元素使用"Arial"字体(这是Visual Studio GUI设计器中的默认字体)。

由于某种原因,我们合作的一位客户没有安装Arial字体(他们一定是手动删除的,因为据我所知,所有Windows安装都默认使用Arial字体)。

这会导致异常/应用程序崩溃。

有没有办法确保C#中存在字体,如果没有,可以自动安装?

字体不';不存在并导致.NET应用程序崩溃,需要检查或安装字体

您需要将字体作为资源嵌入,然后执行类似的操作:

[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元素之前,将字体作为资源嵌入并检查/安装它。