如何在 DirectWrite 中获取倾斜字体的正确文本宽度



我通过以下代码创建一个 IDWriteTextLayout 对象,

    hr = g_pDWriteFactory->CreateTextLayout(text, textLength, *g_pTextFormat, 200000000, 200000000, g_pTextLayout);

然后通过文本指标获取文本宽度,

    DWRITE_TEXT_METRICS dtm;
    pTextLayout->GetMetrics(&dtm);
    float minHeight = dtm.height;
    float minWidth = dtm.widthIncludingTrailingWhitespace;

让我困惑的是,无论字体的样式是DWRITE_FONT_STYLE_OBLIQUE还是DWRITE_FONT_STYLE_NORMAL,同一字符串的宽度都是相同的值。为什么?我希望当字体样式DWRITE_FONT_STYLE_OBLIQUE时,宽度应该更大。如何获得倾斜文本的正确宽度?

谢谢。

布局指标基于字体设计指标(无论是否暗示(,而不是基于每个字形的实际墨盒。如果希望指标更接近生成的呈现位图大小,则可以使用返回的数据GetOverhangMetrics()调整返回的布局指标。但最后,知道结果布局的确切像素大小的唯一方法是渲染它。

因此,回答您的问题,返回的倾斜字体布局指标已经是正确的,它们只是意味着与您预期的略有不同的事情。

相关内容

  • 没有找到相关文章

最新更新