我想使用DirectWrite将字体垂直或水平拉伸x%。
我使用IDWriteTextFormat::CreateTextFormat和IDWriteFactory::CreateTextLayout和DrawTextLayout。
传递给CreateTextFormat的DWRITE_FONT_STRETCH枚举太粗糙,没有给我足够的控制权。例如,我想要的是71%的垂直压缩,而不是“半压缩”。
到目前为止,我不知道如何在没有direct2d缩放转换或使用GDI的情况下做到这一点。我宁愿避免使用GDI的LOGFONT,因为它会使我的应用程序更加复杂。
发布于 2018-02-27 15:24:43
使用DWRITE_FONT_STRETCH指定的字体伸展仅用于匹配过程。将其作为匹配逻辑的输入参数-您指定所需的拉伸(和其他参数),然后DirectWrite选择“最接近”的字体。严格地说,不同的拉伸值并不意味着任何不同的视觉外观,它是字体设计者指定的元数据。现在你所要求的听起来更像是可变字体,当可变字体支持拉伸轴时,你可以将其设置为允许范围内的任何值,并获得不同的渲染结果。
当然,您可以手动转换轮廓,如果您愿意,可以沿坐标轴缩放。但这也有其局限性。
https://stackoverflow.com/questions/48991983
复制相似问题