【问题标题】:How to list monospace (fixed-width) fonts in WPF如何在 WPF 中列出等宽(固定宽度)字体
【发布时间】:2011-02-03 09:15:30
【问题描述】:

我需要将字体选择器添加到我的 WPF 文本编辑器中。我正在适应this font chooser

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

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

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

【问题讨论】:

    标签: wpf fonts


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我正在考虑获取一个固定宽度字体的名称列表作为过滤器,无论是您建议的方式还是直接向 EnumFonts() 调用的方式,但我希望有一个不那么老套的方式。
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2014-11-14
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多