scriptTextOut 函数 (usp10.h)

显示指定脚本形状的文本和位置信息。

语法

HRESULT ScriptTextOut(
  [in]           const HDC             hdc,
  [in, out]      SCRIPT_CACHE          *psc,
  [in]           int                   x,
  [in]           int                   y,
  [in]           UINT                  fuOptions,
  [in, optional] const RECT            *lprc,
  [in]           const SCRIPT_ANALYSIS *psa,
  [in]           const WCHAR           *pwcReserved,
  [in]           int                   iReserved,
  [in]           const WORD            *pwGlyphs,
  [in]           int                   cGlyphs,
  [in]           const int             *piAdvance,
  [in, optional] const int             *piJustify,
  [in]           const GOFFSET         *pGoffset
);

参数

[in] hdc

设备上下文的句柄。 有关详细信息,请参阅 缓存。 请注意,与其他一些相关的 Uniscribe 函数不同,此函数将句柄定义为必需。

[in, out] psc

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

[in] x

第一个字形的 x 坐标的值。

[in] y

第一个字形的 y 坐标的值。

[in] fuOptions

等效于 ExtTextOutfuOptions 参数的选项。 此参数可以设置为 ETO_CLIPPED 或 ETO_OPAQUE、两个值或两个值都不能。

[in, optional] lprc

指向 RECT 结构的指针,该结构包含用于剪辑显示器的矩形。 应用程序可以将此参数设置为 NULL

[in] psa

指向 SCRIPT_ANALYSIS结构的指针 ,该结构从先前调用 ScriptItemize 中获取。

[in] pwcReserved

保留;必须设置为 NULL

[in] iReserved

保留;必须为 0。

[in] pwGlyphs

指向从上一次调用 ScriptShape 获取的字形数组的指针。

[in] cGlyphs

pwGlyphs 指示的数组中的字形计数。 字形的最大数目为 65,536。

[in] piAdvance

指向前一次调用 ScriptPlace 中获取的前进宽度数组的指针。

[in, optional] piJustify

指向对齐的前进宽度数组的指针 (单元格宽度) 。 应用程序可以将此参数设置为 NULL

[in] pGoffset

指向包含组合字形的 x 和 y 偏移量的 GOFFSET 结构的指针。

返回值

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

注解

此函数调用操作系统 ExtTextOut 函数进行文本显示。 有关详细信息,请参阅 使用 Uniscribe 显示文本

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

对于从右到左呈现且通过强制 fLogicalOrder 成员SCRIPT_ANALYSIS的逻辑顺序生成的任何 运行,应用程序必须调用 SetTextAlign (hdc,TA_RIGHT) 并在调用 ScriptTextOut 之前提供右侧坐标。

piJustify 指示的数组为每个字形提供单元格宽度。 当字形的宽度不同于 piAdvance 指定的不合理的宽度时,会在标志符号单元格的尾部边缘添加或删除空格。 字形始终与其单元格的前缘对齐。 此规则甚至可以按视觉顺序应用。

扩展字形单元格时,通常通过添加空格来弥补额外的空间。 但是,对于阿拉伯语脚本,额外空间由一个或多个 kashida 字形组成,除非该额外空间不足以用于字体中最短的 kashida 字形。 最短 kashida 的宽度可通过调用 ScriptGetFontProperties 获得。

仅当字符串必须由 ScriptTextOut 对齐时,应用程序才应传递 piJustify 的值。 通常,应用程序应传递 NULL

应用程序不应使用 ScriptTextOut 写入图元文件,除非在没有任何字体替换的情况下播放图元文件,例如,立即在同一系统上进行可缩放的页面预览。 ScriptTextOut 在图元文件中记录字形数字。 由于字形数字因字体而异,因此替换不同的字体时,文件不太可能正确播放。 例如,当以不同比例播放图元文件时,记录在图元文件中的 CreateFont 请求可以解析为位图而不是 TrueType 字体。 同样,如果在其他计算机上播放图元文件,则可能未安装请求的字体。 若要以与字体无关的方式在图元文件中编写复杂脚本,应用程序应使用 ExtTextOut 直接编写逻辑字符,以便在播放文本之前不会生成字形和放置。

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

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 usp10.h
Library Usp10.lib
DLL Usp10.dll
可再发行组件 Windows Me/98/95 上的 Internet Explorer 5 或更高版本

另请参阅

使用 Uniscribe 显示文本

GOFFSET

SCRIPT_ANALYSIS

SCRIPT_CACHE

ScriptGetFontProperties

ScriptItemize

ScriptPlace

ScriptShape

Uniscribe

Uniscribe 函数