现在我通过以下代码获取字体名称:
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");
答案 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
。