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 值。 例如,拉丁文和阿拉伯语脚本的脚本标记分别为“latn”和“arab”。

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

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

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

重要从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 函数