如何在C#中通过PrivateFontCollection始终获取英文字体名称?

时间:2016-12-09 05:55:12

标签: c# privatefontcollection

现在我通过以下代码获取字体名称:

PrivateFontCollection fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile("path_to_my_Thai_font");
return fontCollection.Families[0].Name;

在英语Win7系统上,我得到了" DFPHeiMedium-UN",但在中国的Win7系统上,我得到了"华康中黑体(P)-UN"。 因此,字体名称在不同的系统语言中有所不同。

我的问题是如何编写我的代码以确保我始终可以获得" DFPHeiMedium-UN"不管系统语言如何?

谢谢。

顺便说一下,我尝试过CurrentCulture。我把这行放在上面的代码之前。仍然没有工作。     Thread.CurrentThread.CurrentCulture = new CultureInfo(" en-us");

1 个答案:

答案 0 :(得分:1)

您可以使用接受语言标识符的GetName函数,或者使用0作为中性语言:

PrivateFontCollection fontCollection = new PrivateFontCollection();
fontCollection.AddFontFile("path_to_my_Thai_font");
return fontCollection.Families[0].GetName(0);

至于为什么你的文化变革不起作用,我们可以看一下Name in the reference source的实施:

    public String Name 
    {
        get 
        {   
            return GetName(CurrentLanguage);
        }
    }

如果我们检查CurrentLanguage,我们就可以看到它正在使用System.Globalization.CultureInfo.CurrentUICulture.LCID,即当前的 UI 文化,而不是CurrentCulture