STROBJ_bEnumPositionsOnly 函数 (winddi.h)
STROBJ_bEnumPositionsOnly 函数枚举指定文本字符串的字形标识和位置,但不创建缓存的字形位图。
语法
ENGAPI BOOL STROBJ_bEnumPositionsOnly(
STROBJ *pstro,
ULONG *pc,
PGLYPHPOS *ppgpos
);
参数
pstro
调用方提供的指向描述文本字符串的 STROBJ 结构的指针。 这通常是驱动程序的 DrvTextOut 函数接收的 STROBJ 结构。
pc
调用方提供的地址,用于接收 由 ppgpos 中的指针指向的 GDI 提供的 GLYPHPOS 结构数。
ppgpos
调用方提供的地址,接收指向 GLYPHPOS 结构数组的 GDI 提供的指针。 (请参阅以下 备注 部分。)
返回值
如果仍要枚举更多字形,则返回值为 TRUE ;如果枚举完成,则返回值为 FALSE 。 如果无法枚举字形并记录错误代码,则返回值DDI_ERROR。
注解
STROBJ_bEnumPositionsOnly函数通常从驱动程序的 DrvTextOut 函数中调用。 它执行与 STROBJ_bEnum 相同的操作,但有一个重要异常 • GDI 不会创建字形的缓存位图。 STROBJ_bEnum 函数假定驱动程序最终需要这些位图。 但是,许多较新的打印机都包含内部光栅器,因此不需要 GDI 来呈现字形。 对于此类打印机,消除服务器内存中字形位图的自动呈现和缓存,可大大节省处理时间和内存分配。
对于支持内部字形光栅化的打印机,应遵循以下规则:
- 驱动程序应在其 DEVINFO 结构中设置GCAPS_FONT_RASTERIZER标志。
- 驱动程序的 DrvTextOut 函数应调用 STROBJ_bEnumPositionsOnly 而不是 STROBJ_bEnum。
- 如果打印作业包含设备无法在内部光栅化的字体,则驱动程序应调用 FONTOBJ_cGetGlyphs 以获取字形位图。
- 如果驱动程序需要在文本字符串打印后确定可能打印机的位置,但不需要字体字形,则可以调用 STROBJ_bGetAdvanceWidths。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 适用于 Windows 2000 及更高版本的 Windows 操作系统。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |