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

时间:2017-11-13 11:16:17

标签: gdi directwrite

我有一个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字体?

1 个答案:

答案 0 :(得分:0)

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

你仍然可以尝试通过家庭要求缩写:

  • GetFontFamily();
  • 返回的字体上调用CreateFontFromLOGFONT()
  • 使用您想要的参数在此系列上使用GetFirstMatchingFont()

从DirectWrite的角度来看,如果Tw Cen MT系列实际上已经缩减了变体,那么这应该可行。