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



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

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

如果 LOGFONT 描述的是 Tw Cen MT 精简字体,我希望让 DirectWrite 的字体分配 DWRITE_FONT_STRETCH_CONDENSED 属性。

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

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

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

你仍然可以尝试要求一个通过家庭的浓缩:

  • 调用GetFontFamily()CreateFontFromLOGFONT()返回的字体;
  • 在此族上使用具有所需参数的GetFirstMatchingFont()

从DirectWrite的角度来看,如果Tw Cen MT系列实际上具有压缩变体,这应该有效。

最新更新