【问题标题】:Enumerate Stylistic Sets of an OpenType Font枚举 OpenType 字体的风格集
【发布时间】:2022-01-24 14:51:12
【问题描述】:

在 DirectWrite 中有一个 IDWriteTypography,它有一个“AddFontFeature”成员。此功能允许基于this list 设置风格风格。由 MSDN here 演示。

例如,将 DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 添加到“Gabriola”字体的结果如下:

到这里:

问题是,我如何知道开放式字体支持哪些标签,以便让用户从菜单中进行选择?目前,我的用户只能输入可能对文本有影响或没有影响的标签。

最好的,

【问题讨论】:

标签: winapi direct2d directwrite


【解决方案1】:

如果您愿意混合使用 Uniscribe,可以使用 ScriptGetFontLanguageTags / ScriptGetFontScriptTags /ScriptGetFontFeatureTags。如果不是,我相信您将无法自己解析 GSUB 和 GPOS OpenType 表,请使用 IDWriteFontFace::TryGetFontTable 获取它们并使用 IDWriteFontFace::ReleaseFontTable 发布。

Uniscribe 路线可能要容易得多,使用 IDWriteGdiInterop::ConvertFontFaceToLOGFONT 或 IDWriteGdiInterop::ConvertFontToLOGFONT 然后使用带有 CreateFontIndirect 的 LOGFONT 来获得 HFONT。这里棘手的部分可能是获得 HDC,但是一旦您选择了 HFONT,然后只需使用命名的 Uniscribe 函数。

【讨论】:

猜你喜欢
  • 2012-02-03
  • 2016-06-17
  • 2017-08-16
  • 2018-09-20
  • 1970-01-01
  • 2013-07-26
  • 2019-06-10
  • 2015-09-23
  • 1970-01-01
相关资源
最近更新 更多