我想使用DirectWrite将字体垂直或水平拉伸x%。
我正在使用IDWriteTextFormat :: CreateTextFormat和IDWriteFactory :: CreateTextLayout和DrawTextLayout。
传递给CreateTextFormat的DWRITE_FONT_STRETCH枚举太粗糙,并没有给我足够的控制权。例如,我不是“半精简”,而是希望71%垂直浓缩。
到目前为止,如果没有direct2d缩放转换或使用GDI,我无法弄清楚如何做到这一点。我宁愿避免使用GDI的LOGFONT,因为它会使我的应用程序变得更加复杂。
答案 0 :(得分:0)
使用DWRITE_FONT_STRETCH指定的字体拉伸仅用于匹配过程。将其视为匹配逻辑的输入参数 - 指定所需的拉伸(和其他参数),DirectWrite选择“最接近”的字体。严格地说,不同的拉伸值并不意味着任何不同的视觉外观,它是字体设计者指定的元数据。现在你所要求的听起来更像是变量字体,当变量字体支持拉伸轴时,你可以将它设置为允许范围内的任何值,并获得不同的渲染结果。
当然,您可以手动变换轮廓,如果您愿意,可以沿坐标轴缩放。但这有其自身的局限性。