DirectWrite字体拉伸

时间:2018-02-26 15:38:58

标签: fonts directwrite stretching

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

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

传递给CreateTextFormat的DWRITE_FONT_STRETCH枚举太粗糙,并没有给我足够的控制权。例如,我不是“半精简”,而是希望71%垂直浓缩。

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

1 个答案:

答案 0 :(得分:0)

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

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