因字体文件可能存在多种语言,故此按照“简体中文->繁体中文->其它语言”优先顺序获取字体名称。
如某个字体文件存在“zh-cn”、“zh-hk”、“zh-tw”、“en-us”四种语言,那么仅获取“zh-cn”名称。
private System.Collections.Generic.List<string> GetFontsName()
{
System.Collections.Generic.List<string> fontName = new System.Collections.Generic.List<string>();
foreach (System.Windows.Media.FontFamily fontFamily in System.Windows.Media.Fonts.SystemFontFamilies)
{
if (fontFamily.FamilyNames.Keys.Contains(System.Windows.Markup.XmlLanguage.GetLanguage("zh-cn")))
fontName.Add(fontFamily.FamilyNames[System.Windows.Markup.XmlLanguage.GetLanguage("zh-cn")]);
else if (fontFamily.FamilyNames.Keys.Contains(System.Windows.Markup.XmlLanguage.GetLanguage("zh-hk")))
fontName.Add(fontFamily.FamilyNames[System.Windows.Markup.XmlLanguage.GetLanguage("zh-hk")]);
else if (fontFamily.FamilyNames.Keys.Contains(System.Windows.Markup.XmlLanguage.GetLanguage("zh-tw")))
fontName.Add(fontFamily.FamilyNames[System.Windows.Markup.XmlLanguage.GetLanguage("zh-tw")]);
else
foreach (System.Windows.Markup.XmlLanguage xmlLanguage in fontFamily.FamilyNames.Keys)
fontName.Add(fontFamily.FamilyNames[xmlLanguage]);
}
fontName.Sort(System.StringComparer.CurrentCulture);
return fontName;
}
仅获取本地语言字体。
private System.Collections.Generic.List<string> GetFontsName()
{
System.Collections.Generic.List<string> fontName = new System.Collections.Generic.List<string>();
foreach (System.Windows.Media.FontFamily fontFamily in System.Windows.Media.Fonts.SystemFontFamilies)
{
if (fontFamily.FamilyNames.Keys.Contains(System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.Name.ToLower())))
fontName.Add(fontFamily.FamilyNames[System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.Name.ToLower())]);
}
fontName.Sort(System.StringComparer.CurrentCulture);
return fontName;
}