getGlyphOutlineW 函数 (wingdi.h)
GetGlyphOutline 函数检索选定到指定设备上下文中的 TrueType 字体字符的轮廓或位图。
语法
DWORD GetGlyphOutlineW(
[in] HDC hdc,
[in] UINT uChar,
[in] UINT fuFormat,
[out] LPGLYPHMETRICS lpgm,
[in] DWORD cjBuffer,
[out] LPVOID pvBuffer,
[in] const MAT2 *lpmat2
);
参数
[in] hdc
设备上下文的句柄。
[in] uChar
要为其返回数据的字符。
[in] fuFormat
函数检索的数据的格式。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
函数检索曲线数据作为三次方贝塞尔样条, (不采用二次样条格式) 。 |
|
函数检索字形位图。 有关内存分配的信息,请参阅以下“备注”部分。 |
|
指示 uChar 参数是 TrueType 字形索引而不是字符代码。 有关字形索引的其他备注,请参阅 ExtTextOut 函数。 |
|
函数检索包含五级灰色的字形位图。 |
|
函数检索包含 17 级灰色的字形位图。 |
|
函数检索包含 65 级灰色的字形位图。 |
|
函数仅检索由 lpgm 指定的 GLYPHMETRICS 结构。 忽略 lpvBuffer。 此值在失败时影响函数返回值的含义;请参阅返回值部分。 |
|
函数检索光栅器本机格式的曲线数据点,并使用字体的设计单位。 |
|
该函数仅返回未受限制的轮廓。 此标志仅与 GGO_BEZIER 和 GGO_NATIVE 结合使用。 |
请注意,对于GGO_GRAYn_BITMAP值,函数检索包含 n^2+1 (n 平方加上一) 灰色级别的字形位图。
[out] lpgm
指向描述字符单元格中字形位置的 GLYPHMETRICS 结构的指针。
[in] cjBuffer
缓冲区的大小(以字节为单位) (*lpvBuffer) 函数复制有关大纲字符的信息。 如果此值为零,则函数返回缓冲区的所需大小。
[out] pvBuffer
指向接收有关大纲字符信息的缓冲区的指针。 如果此值为 NULL,则该函数将返回缓冲区的所需大小。
[in] lpmat2
指向 MAT2 结构的指针,该结构指定字符的转换矩阵。
返回值
如果指定了GGO_BITMAP、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP或GGO_NATIVE,并且函数成功,则返回值大于零;否则,返回值GDI_ERROR。 如果指定了其中一个标志,并且缓冲区大小或地址为零,则返回值将指定所需的缓冲区大小(以字节为单位)。
如果指定了GGO_METRICS并且函数失败,则返回值GDI_ERROR。
注解
GetGlyphOutline 函数返回的字形轮廓适用于网格拟合字形。 (网格拟合字形是经过修改的字形,使其位图图像尽可能符合字形的原始设计。) 如果应用程序需要未修改的字形轮廓,它可以请求字体中大小等于字体 em 单位的字符的字形轮廓。 字体的 em 单位的值存储在 OUTLINETEXTMETRIC 结构的 otmEMSquare 成员中。
指定GGO_BITMAP时 GetGlyphOutline 返回的字形位图是 DWORD 对齐的、面向行的单色位图。 指定GGO_GRAY2_BITMAP时,返回的位图是一个 DWORD 对齐的、面向行的字节数组,其值范围为 0 到 4。 指定GGO_GRAY4_BITMAP时,返回的位图是一个 DWORD 对齐、面向行的字节数组,其值范围为 0 到 16。 指定GGO_GRAY8_BITMAP时,返回的位图是一个 DWORD 对齐的、面向行的字节数组,其值范围为 0 到 64。
指定GGO_NATIVE时 GetGlyphOutline 返回的本机缓冲区是字形轮廓。 字形轮廓返回为一系列由 TTPOLYGONHEADER 结构定义的一个或多个轮廓线,后跟一条或多条曲线。 轮廓中的每个曲线由 TTPOLYCURVE 结构定义,后跟多个 POINTFX 数据点。 POINTFX 点是绝对位置,而不是相对移动。 轮廓的起点由 TTPOLYGONHEADER 结构的 pfxStart 成员提供。 每个曲线的起点是上一条曲线的最后一个点或轮廓线的起点。 曲线中的数据点计数存储在 TTPOLYCURVE 结构的 cpfx 成员中。 缓冲区中每个轮廓的大小(以字节为单位)存储在 TTPOLYGONHEADER 结构的 cb 成员中。 其他曲线定义在前面的曲线之后打包到缓冲区中,其他轮廓将打包到前面曲线之后的缓冲区中。 缓冲区包含 与 GetGlyphOutline 返回的缓冲区中适合的轮廓线数量一样多。
GLYPHMETRICS 结构指定字符单元格的宽度和字形在字符单元格中的位置。 字符单元格的原点位于单元格左侧的字体基线处。 字形原点的位置相对于字符单元格原点。 字符单元格的高度、基线以及字体全局的其他指标由 OUTLINETEXTMETRIC 结构提供。
应用程序可以通过在 lpMatrix 参数中指定 2×2 转换矩阵来更改以位图或本机格式检索的字符。 例如,可以通过剪切、旋转、缩放或使用矩阵乘法三者的任何组合来修改字形。
有关字形轮廓的其他信息位于 TrueType 和 OpenType 技术规范中。
注意
wingdi.h 标头将 GetGlyphOutline 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |