ScriptPlaceOpenType 函数 (usp10.h)
使用 ScriptShapeOpenType 输出中的 OpenType 信息为 Unicode 运行生成字形和可视属性。
语法
HRESULT ScriptPlaceOpenType(
[in, optional] HDC hdc,
[in, out] SCRIPT_CACHE *psc,
[in, out] SCRIPT_ANALYSIS *psa,
[in] OPENTYPE_TAG tagScript,
[in] OPENTYPE_TAG tagLangSys,
[in, optional] int *rcRangeChars,
[in, optional] TEXTRANGE_PROPERTIES **rpRangeProperties,
[in] int cRanges,
[in] const WCHAR *pwcChars,
[in] WORD *pwLogClust,
[in] SCRIPT_CHARPROP *pCharProps,
[in] int cChars,
[in] const WORD *pwGlyphs,
[in] const SCRIPT_GLYPHPROP *pGlyphProps,
[in] int cGlyphs,
[out] int *piAdvance,
[out] GOFFSET *pGoffset,
[out, optional] ABC *pABC
);
参数
[in, optional] hdc
设备上下文的句柄。 有关详细信息,请参阅 缓存。
[in, out] psc
指向标识脚本缓存 的SCRIPT_CACHE 结构的指针。
[in, out] psa
指向从先前调用 ScriptItemizeOpenType 获取的 SCRIPT_ANALYSIS 结构的指针。 此结构标识控制所生成的字形列表及其关联宽度以及 x 和 y 放置偏移量的定形引擎。
或者,应用程序可以将此参数设置为 NULL 以接收未筛选的结果。
[in] tagScript
包含 OpenType 脚本标记的 OPENTYPE_TAG 结构,供编写系统使用。
[in] tagLangSys
包含编写系统的 OpenType 语言标记 的OPENTYPE_TAG 结构。
[in, optional] rcRangeChars
每个区域中字符数的数组。 成员数在 cRanges 参数中指示。 总值应等于 cChars 的值。
[in, optional] rpRangeProperties
定义每个区域的属性 的TEXTRANGE_PROPERTIES 结构的数组。 元素数由 cRanges 参数定义。
[in] cRanges
OpenType 功能范围的数目。
[in] pwcChars
指向包含运行的 Unicode 字符数组的指针。 元素数由 cRanges 参数定义。
[in] pwLogClust
指向逻辑群集信息数组的指针。 数组中的每个元素对应于 pwcChars 定义的数组中的一个字符。 每个元素的值都是从运行中的第一个字形到包含相应字符的群集中的第一个字形的偏移量。 请注意,当 SCRIPT_ANALYSIS 结构的 fRTL 成员设置为 TRUE 时,pwLogClust 中的元素随着数组的读取而减少。
[in] pCharProps
指向 Unicode 运行中字符属性值数组的指针。
[in] cChars
Unicode 运行中的字符数。
[in] pwGlyphs
指向从先前对 ScriptShapeOpenType 函数的调用获取的字形缓冲区的指针。
[in] pGlyphProps
指向要检索的每个字形的属性数组的指针。 值数等于 cGlyphs 的值。 由于每个字形都有一个字形属性,因此此参数具有 cGlyphs 指示的元素数。
[in] cGlyphs
字形数组缓冲区中的字形计数。
[out] piAdvance
指向数组的指针,该数组长度由 cGlyphs 指示,此函数在其中检索 前进宽度 信息。
[out] pGoffset
指向 GOFFSET 结构数组的指针,此结构在其中检索组合字形的 x 和 y 偏移量。 此数组的长度必须由 cGlyphs 指示。
[out, optional] pABC
指向 ABC 结构的指针,此函数在该结构中检索整个运行的ABC 宽度。
返回值
如果成功,则返回 0。 如果函数不成功,则返回非零 HRESULT 值。 在所有错误情况下,输出值都是未定义的。 应用程序可以使用 SUCCEEDED 和 FAILED 宏测试返回值。
如果 cGlyphs 指示的输出缓冲区长度太小,函数将返回E_OUTOFMEMORY。 应用程序可以尝试使用较大的缓冲区再次调用 。
如果 psc 参数指定的脚本缓存不包含足够的信息来放置字形,并且 hdc 参数作为 NULL 传递,以便函数无法完成放置过程,则函数将返回E_PENDING。 应用程序应为运行设置正确的设备上下文,并使用 hdc 中的相应值和所有其他参数相同再次调用此函数。
注解
此函数优先于较旧的 ScriptPlace 函数。 ScriptPlaceOpenType 的一些优点包括:
- 参数直接对应于字体布局表中的 OpenType 标记。
- 参数定义应用于每个字符的特征。 输入划分为多个区域,每个区域都有与之关联的 OpenType 属性。
除非在 psa 参数指示的 SCRIPT_ANALYSIS 结构中设置了 fLogicalOrder 成员,否则所有数组均按视觉顺序排列。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | usp10.h |
Library | Usp10.lib |
DLL | Usp10.dll |
可再发行组件 | 在 Windows XP 上 Usp10.dll 版本 1.600 或更高版本 |