idWriteTextAnalyzer::GetGlyphs 方法 (dwrite.h)
根据字体和书写系统的呈现规则分析输入文本字符串并将其映射到字形集和关联的字形数据。
语法
HRESULT GetGlyphs(
[in] WCHAR const *textString,
UINT32 textLength,
IDWriteFontFace *fontFace,
BOOL isSideways,
BOOL isRightToLeft,
[in] DWRITE_SCRIPT_ANALYSIS const *scriptAnalysis,
[in, optional] WCHAR const *localeName,
[optional] IDWriteNumberSubstitution *numberSubstitution,
[in, optional] DWRITE_TYPOGRAPHIC_FEATURES const **features,
[in, optional] UINT32 const *featureRangeLengths,
UINT32 featureRanges,
UINT32 maxGlyphCount,
[out] UINT16 *clusterMap,
[out] DWRITE_SHAPING_TEXT_PROPERTIES *textProps,
[out] UINT16 *glyphIndices,
[out] DWRITE_SHAPING_GLYPH_PROPERTIES *glyphProps,
[out] UINT32 *actualGlyphCount
);
参数
[in] textString
类型: const WCHAR*
要转换为字形的字符数组。
textLength
类型: UINT32
textString 的长度。
fontFace
类型: IDWriteFontFace*
输出字形源的字体。
isSideways
类型: BOOL
如果文本要垂直绘制,则设置为 TRUE 的布尔标志。
isRightToLeft
类型: BOOL
从右向左的文本设置为 TRUE 的布尔标志。
[in] scriptAnalysis
类型: const DWRITE_SCRIPT_ANALYSIS*
指向 AnalyzeScript 调用的脚本分析结果的指针。
[in, optional] localeName
类型: const WCHAR*
选择字形时要使用的区域设置。 例如,对于 ja-jp 和 zh-chs,同一个字符可能映射到不同的字形。 如果此值为 NULL,则使用基于脚本的默认映射。
[optional] numberSubstitution
类型: IDWriteNumberSubstitution*
指向可选数字替换的指针,它根据 从 AnalyzeNumberSubstitution 获取的结果,为数字和相关数字字符选择适当的字形。 传递 NULL 表示不需要替换,并且数字应接收名义字形。
[in, optional] features
类型: const DWRITE_TYPOGRAPHIC_FEATURES**
指向要在每个功能范围中使用的版式特征集的指针数组。
[in, optional] featureRangeLengths
类型: const UINT32*
每个功能范围的长度(以字符为单位)。
所有长度的总和应等于 textLength。
featureRanges
类型: UINT32
特征范围的数目。
maxGlyphCount
类型: UINT32
可返回的最大字形数。
[out] clusterMap
类型: UINT16*
此方法返回时,包含从字符范围到字形范围的映射。
[out] textProps
类型: DWRITE_SHAPING_TEXT_PROPERTIES*
此方法返回时,包含指向结构数组的指针,该数组包含每个字符的整形属性。
[out] glyphIndices
类型: UINT16*
输出字形索引。
[out] glyphProps
类型: DWRITE_SHAPING_GLYPH_PROPERTIES*
此方法返回时,包含指向结构数组的指针,这些结构包含每个输出字形的整形属性。
[out] actualGlyphCount
类型: UINT32*
此方法返回时,包含调用成功时返回的实际字形数。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
请注意,从字符到字形的映射通常是多对多。 每个字形输出缓冲区的建议估计值为 (3 * textLength / 2 + 16) 。 这不能保证足够。
actualGlyphCount 参数的值仅在调用成功时有效。 如果 maxGlyphCount 不够大,将返回 HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER) 。 应用程序应分配更大的缓冲区,然后重试。
要求
最低受支持的客户端 | Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | dwrite.h |
Library | Dwrite.lib |
DLL | Dwrite.dll |