0

我有一个 LOGFONT 结构,我使用 CreateFontFromLOGFONT() 将其转换为 IDWriteFont:

IDWriteFont* dWriteFont = nullptr;
if (FAILED(dWriteGdiInterop->CreateFontFromLOGFONT(&logFont, &dWriteFont))) return;

如果 LOGFONT 描述了 Tw Cen MT Condensed字体,我希望 DirectWrite 的字体具有分配的 DWRITE_FONT_STRETCH_CONDENSED 属性。

LOGFONT 的宽度为“0”,无论我选择什么拉伸(冷凝、宽等)。似乎只能从字体名称中扣除拉伸,而DirectWrite的方法无法做到这一点。这是一个错误吗?

如何基于 LOGFONT 结构创建具有特定拉伸的 DirectWrite 字体?

4

1 回答 1

0

我不认为这一定是一个错误,例如 dwrite_3.h 对此方法有评论说只考虑了一些字段:lfFaceName、lfCharSet、lfWeight、lfItalic。这里没有lfWidth。

您仍然可以尝试通过家庭要求浓缩一份:

  • 调用GetFontFamily()从返回的字体CreateFontFromLOGFONT()
  • 在这个系列上使用GetFirstMatchingFont()你想要的参数。

从 DirectWrite 的角度来看,如果 Tw Cen MT 系列实际上具有压缩变体,那应该可以工作。

于 2017-11-25T08:24:04.450 回答