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 值。 在所有错误情况下,输出值都是未定义的。 应用程序可以使用 SUCCEEDEDFAILED 宏测试返回值。

如果 cGlyphs 指示的输出缓冲区长度太小,函数将返回E_OUTOFMEMORY。 应用程序可以尝试使用较大的缓冲区再次调用 。

如果 psc 参数指定的脚本缓存不包含足够的信息来放置字形,并且 hdc 参数作为 NULL 传递,以便函数无法完成放置过程,则函数将返回E_PENDING。 应用程序应为运行设置正确的设备上下文,并使用 hdc 中的相应值和所有其他参数相同再次调用此函数。

注解

此函数优先于较旧的 ScriptPlace 函数。 ScriptPlaceOpenType 的一些优点包括:

  • 参数直接对应于字体布局表中的 OpenType 标记。
  • 参数定义应用于每个字符的特征。 输入划分为多个区域,每个区域都有与之关联的 OpenType 属性。
整个项的复合 ABC 宽度标识字形 悬停 在起始位置左侧和前进宽度之和所隐含的长度右侧的量。 线条的总前进宽度正好是 abcA+abcB+abcC。 abcA 和 abcC 值保留为单元格高度的比例(以 8 位表示),因此大致为 +/-1%。 检索到的总宽度(由 piAdvance 指示的 abcA+abcB+abcC 值的总和)精确到 TrueType 整形引擎的分辨率。

除非在 psa 参数指示的 SCRIPT_ANALYSIS 结构中设置了 fLogicalOrder 成员,否则所有数组均按视觉顺序排列。

重要 从 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 或更高版本

另请参阅

使用 Uniscribe 显示文本

GOFFSET

OPENTYPE_TAG

SCRIPT_ANALYSIS

SCRIPT_CACHE

SCRIPT_CHARPROP

SCRIPT_GLYPHPROP

ScriptItemizeOpenType

ScriptPlace

ScriptShapeOpenType

TEXTRANGE_PROPERTIES

Uniscribe 函数