如何在 WPF 中列出等宽(固定宽度)字体

How to list monospace (fixed-width) fonts in WPF

我需要将字体选择器添加到我的 WPF 文本编辑器中。我正在调整这个字体选择器。

但是,它列出了所有已安装的字体。我只需要一个固定宽度(等宽)字体的列表。

如何检查给定的 System.Windows.Media.FontFamily 是否为固定宽度字体?

有一个使用 System.Drawing.FontFamily 的解决方案,但这些字体与 WPF 不完全兼容,我正在调整的代码使用 System.Windows.Media.FontFamily。


也许您可以通过创建具有相同名称的 System.Drawing.Font 并从那里使用 inteop 和 LOGFONT 来过滤 System.Windows.Media.FontFamily 列表。

这是一个可怕的 hack,但我相信它在大多数情况下都会起作用(如果您只使用系统上安装的字体,则 System.Windows.Media.FontFamily 和 System.Drawing.FontFamily 列表应该大部分匹配)

由于 WPF 和 GDI 之间字体渲染器的差异,使用类似这样的东西来获取字体大小信息或有关高级字体属性的信息将完全没用 - 但对于字体的基本属性,如固定宽度,我希望这个应该工作。