我有一个 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系列实际上具有压缩变体,这应该有效。