0

我想使用 DirectWrite 将字体垂直或水平拉伸 x%。

我正在使用 IDWriteTextFormat::CreateTextFormat 和 IDWriteFactory::CreateTextLayout 和 DrawTextLayout。

传递给 CreateTextFormat 的 DWRITE_FONT_STRETCH 枚举太粗糙,没有给我足够的控制权。例如,我想要的不是“半压缩”,而是 71% 的垂直压缩。

到目前为止,如果没有 direct2d 缩放转换或使用 GDI,我无法弄清楚如何做到这一点。我宁愿避免使用 GDI 的 LOGFONT,因为它会使我的应用程序更加复杂。

4

1 回答 1

0

使用 DWRITE_FONT_STRETCH 指定的字体拉伸仅用于匹配过程。将其视为匹配逻辑的输入参数 - 您指定所需的拉伸(和其他参数)并且 DirectWrite 选择“最接近”的字体。严格来说不同的拉伸值并不意味着任何不同的视觉外观,它是字体设计者指定的元数据。现在您要问的听起来更像是可变字体,当可变字体支持拉伸轴时,您可以将其设置为允许范围内的任何值并获得不同的渲染结果。

当然,您可以手动转换轮廓,如果您愿意,可以沿坐标轴缩放。但这有其自身的局限性。

于 2018-02-27T07:24:42.913 回答