ScriptGetFontScriptTags 函数 (usp10.h)

检索字体中可用于 OpenType 处理的脚本列表。 从提供的设备上下文中的字体或处理当前运行的字体的脚本调整引擎检索包含列表的脚本。

语法

HRESULT ScriptGetFontScriptTags(
  [in, optional] HDC             hdc,
  [in, out]      SCRIPT_CACHE    *psc,
  [in, optional] SCRIPT_ANALYSIS *psa,
  [in]           int             cMaxTags,
  [out]          OPENTYPE_TAG    *pScriptTags,
  [out]          int             *pcTags
);

参数

[in, optional] hdc

设备上下文的句柄。 有关详细信息,请参阅 缓存

[in, out] psc

指向标识脚本缓存 的SCRIPT_CACHE 结构的指针。

[in, optional] psa

指向从先前调用 ScriptItemizeOpenType 获取的SCRIPT_ANALYSIS结构的指针。 此参数标识整形引擎,以便可以检索相应的字体脚本标记。 应用程序为此参数提供非 NULL 值,以检索适合当前运行的脚本标记。

或者,应用程序可以将此参数设置为 NULL 以检索未筛选的结果。

[in] cMaxTags

由 pScriptTags 指定的数组的长度。

[out] pScriptTags

指向缓冲区的指针,此函数在其中检索 OPENTYPE_TAG 结构数组,这些结构从设备上下文或与当前运行关联的脚本引擎定义脚本标记。 如果 psa 参数中提供的 SCRIPT_ANALYSIS 结构的 eScript 成员的值具有与之关联的明确脚本标记,并且字体中存在标记,则 pScriptTags 仅包含此标记。

[out] pcTags

指向 由 pScriptTags 指示的脚本标记数组中的元素数的指针。

返回值

如果成功,则返回 0。 如果函数不成功,则返回非零 HRESULT 值。 应用程序可以使用 SUCCEEDEDFAILED 宏测试返回值。

如果匹配的标记数超过 cMaxTags 的值,则函数将失败并E_OUTOFMEMORY。 应用程序可以尝试使用较大的缓冲区再次调用。

注解

虽然正式声明为 ULONG 类型, 但 OPENTYPE_TAG 定义了一个包含 4 个 8 位 ASCII 空间值 A-Z 或 a-z 的 4 字节数组。 例如,拉丁语和阿拉伯语脚本的脚本标记分别为“latn”和“arab”。

在以下情况下,此函数从字体中检索单个标记:

  • psa 值与单个复杂脚本的文本相关联。
  • psa 参数指示 NULL,字体支持单个脚本。
如果 ScriptGetFontScriptTags 从字体检索所有标记,则标记通常用于非特定项,例如数字。 请注意,可能有多个标记适用,因为某些非特定项的文本运行不是特定于脚本的。

如果存在对应于特定脚本的标记,则整形引擎可能无法使用该字体来调整给定项,因为该引擎缺少所需的项,例如特定语言系统或特定功能。

重要从Windows 8开始:若要保持在 Windows 7 上运行的功能,使用 Uniscribe 的模块必须在其库列表中指定 gdi32.lib 之前的 Usp10.lib。
 

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 usp10.h
Library Usp10.lib
DLL Usp10.dll
可再发行组件 在 Windows XP 上 Usp10.dll 版本 1.600 或更高版本

另请参阅

缓存

OPENTYPE_TAG

SCRIPT_ANALYSIS

SCRIPT_CACHE

ScriptItemizeOpenType

Uniscribe

Uniscribe 函数