列出 Windows 10 Universal App 中已安装的字体名称

List installed font names in Windows 10 Universal App

我正在用 C# 构建一个 Windows 10 通用应用程序,它必须列出系统上已安装字体的名称。该应用程序是 metro/modern ui/windows 8.1 应用程序,我在那里使用 来获取名称。

SharpDX 不适用于 Windows 10 UAP(现在?),因此它不再有效。

还有其他方法可以实现我的目标吗?我是否应该考虑在推荐字体下描述 here 的固定字体名称列表?例如,在桌面上时,这似乎相当有限。

提前致谢!

基本思路相同:您仍将使用 DirectWrite 获取字体名称。

您可以使用 Win2D to get to DirectWrite from C# in both Windows 8.1 and Universal Windows Platform apps. CanvasTextFormat.GetSystemFontFamilies 将 return 字体系列:

string[] fonts = Microsoft.Graphics.Canvas.Text.CanvasTextFormat.GetSystemFontFamilies();
foreach (string font in fonts)
{
    Debug.WriteLine(string.Format("Font: {0}", font));
}

我决定采用固定列表方法。它不需要 Win2D。

如果有人感兴趣,这里是保证在所有 Windows 10 个支持 UWP 应用程序的版本中可用的字体列表:

解析自 https://msdn.microsoft.com/en-us/library/windows/apps/hh700394.aspx

public static string[] FontNames = {
    "Arial", "Calibri", "Cambria", "Cambria Math", "Comic Sans MS", "Courier New",
    "Ebrima", "Gadugi", "Georgia",
    "Javanese Text Regular Fallback font for Javanese script", "Leelawadee UI",
    "Lucida Console", "Malgun Gothic", "Microsoft Himalaya", "Microsoft JhengHei",
    "Microsoft JhengHei UI", "Microsoft New Tai Lue", "Microsoft PhagsPa",
    "Microsoft Tai Le", "Microsoft YaHei", "Microsoft YaHei UI",
    "Microsoft Yi Baiti", "Mongolian Baiti", "MV Boli", "Myanmar Text",
    "Nirmala UI", "Segoe MDL2 Assets", "Segoe Print", "Segoe UI", "Segoe UI Emoji",
    "Segoe UI Historic", "Segoe UI Symbol", "SimSun", "Times New Roman",
    "Trebuchet MS", "Verdana", "Webdings", "Wingdings", "Yu Gothic",
    "Yu Gothic UI"
};

特别是,对于我的申请,我从这个列表中删除了一些我不感兴趣的东西,比如 Javanese Text Regular Fallback font for Javanese script 加上那些 Microsoft * 亚洲语言和 Segoe MDL2 Assets 加上 (Web|Wing)dings 仅适用于图标。