【问题标题】:Creating a bitmap font for Qt为 Qt 创建位图字体
【发布时间】:2017-10-15 01:43:08
【问题描述】:

客户提供了详细说明特定 LED 设备的位图字体的文件。该设备的大小是已知的,不会改变。另外,字符集很小(ASCII加上一些图形字符)。

现在我们已经有了使用标准 Linux 字体(Arial)在这些设备上呈现的软件,代码如下:

m_font = new QFont("Arial", m_fontHeight);

因此,显然,使用该代码并简单地用我们的字体名称代替 Arial 会更容易,让 Qt 自动拾取它。

所以我的问题实际上与如何在 Linux 中创建一个位图字体有关。对 FontForge 等工具(以及 OTF/TTF 文件格式本身)的调查似乎表明您需要根据矢量图而不是简单的位图来定义字体。

我发现这条路径充满了转换问题,尤其是因为我们已经有了希望用于单个字符的位图。

有没有一种简单的方法让 Qt(或底层 Linux 字体引擎)选择一个非常简单的位图类型字体文件而不是矢量图形文件?

【问题讨论】:

标签: linux qt fonts bitmap


【解决方案1】:

位图字体的未来是基于 SFNT 的位图字体(基本上是 OpenType 兼容容器中的位图字形)。它应该在现代 *nix 系统、GTK 和 QT 下按原样工作(您可能需要确保没有 fontconfig 规则将目标系统上的位图字体列入黑名单)。

现在位图字体的整个“未来”是黯淡和有限的,我认为它们无法在 HiDPi 和 4K 屏幕中幸存下来。尽管 SFNT 位图字体是您的最佳目标,但这并不是一个很大的目标,我怀疑位图设备市场是否足以支持健康的位图字体软件生态系统。

【讨论】:

    【解决方案2】:

    BDF Format 应该适合您的需求。它能够存储原始位图,并且根据他们的文档here 与 Qt 兼容。

    Qt 文档

    Qt 使用 FreeType 2 字体引擎来产生字体输出。

    ...

    FreeType 2 库可以支持以下字体格式:

    • TrueType (TTF)
    • PostScript Type1 (PFA/PFB)
    • 位图分布格式 (BDF)
    • CID 键控类型 1
    • 紧凑字体格式 (CFF)
    • OpenType 字体
    • 基于 SFNT 的位图字体
    • 可移植编译格式 (PCF)
    • Microsoft Windows 字体文件格式 (Windows FNT)
    • 便携式字体资源 (PFR)
    • 42 型(有限支持)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2014-05-27
      相关资源
      最近更新 更多