ScriptPlace 函数 (usp10.h)

ScriptShape 的输出生成字形高级宽度和二维偏移信息。

语法

HRESULT ScriptPlace(
  [in]      HDC                  hdc,
  [in, out] SCRIPT_CACHE         *psc,
  [in]      const WORD           *pwGlyphs,
  [in]      int                  cGlyphs,
  [in]      const SCRIPT_VISATTR *psva,
  [in, out] SCRIPT_ANALYSIS      *psa,
  [out]     int                  *piAdvance,
  [out]     GOFFSET              *pGoffset,
  [out]     ABC                  *pABC
);

参数

[in] hdc

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

[in, out] psc

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

[in] pwGlyphs

指向从先前对 ScriptShape 函数的调用获取的字形缓冲区的指针。

[in] cGlyphs

字形缓冲区中的字形计数。

[in] psva

指向指示可视属性的 SCRIPT_VISATTR 结构的数组的指针。

[in, out] psa

指向 SCRIPT_ANALYSIS 结构的指针。 输入时,此结构是从之前对 ScriptItemize 的调用中获取的。 在输出时,此结构包含 ScriptPlace 检索的值。

[out] piAdvance

指向数组的指针,此函数在其中检索高级宽度信息。

[out] pGoffset

可选。 指向 GOFFSET 结构的数组的指针,此函数在其中检索组合字形的 x 和 y 偏移量。 此数组的长度必须由 cGlyphs 指示。

[out] pABC

指向 ABC 结构的指针,此函数在其中检索整个运行的ABC 宽度

返回值

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

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

注解

有关通常调用此函数的上下文的讨论,请参阅 使用 Uniscribe 显示文本

整个项的复合 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 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 usp10.h
Library Usp10.lib
DLL Usp10.dll

另请参阅

使用 Uniscribe 显示文本

GOFFSET

SCRIPT_ANALYSIS

SCRIPT_CACHE

SCRIPT_VISATTR

ScriptItemize

ScriptPlaceOpenType

ScriptShape

Uniscribe

Uniscribe 函数