GetGlyphOutline

【勇芳软件工作室】汉化HomePreviousNext

GetGlyphOutline函数检索在指定设备上下文中选择的TrueType字体中的字符的轮廓或位图。

DWORD GetGlyphOutline(

HDC 【HDC】,//设备上下文的句柄
UINT 【飞行】,//查询字符
UINT 【UFormat】,//返回的数据格式
LPGLYPHMETRICS 【lpgm】,//度量结构的地址
DWORD 【cbBuffer】,//数据缓冲区大小
LPVOID 【lpvBuffer】,//数据缓冲区的地址
CONST MAT2 【* lpmat2】//转换矩阵结构的地址
); 

参数

【HDC】

标识设备上下文。

【飞行】

指定要返回数据的字符。

【UFormat】

指定函数检索的数据格式。使用以下值之一:

含义
GGO_BITMAP该函数检索字形位图。有关内存分配的信息,请参阅以下备注部分。
GGO_NATIVE该函数以光栅化器的本机格式检索曲线数据点,并使用字体的设计单位。指定此值时,将忽略【lpMatrix】参数中指定的任何变换。
GGO_METRICS该函数仅检索【lpgm】指定的GLYPHMETRICS结构。其他缓冲区被忽略。该值会在失败时影响函数返回值的含义;请参阅以下返回值部分。
GGO_GRAY2_BITMAP该函数检索包含5级灰度的字形位图。
GGO_GRAY4_BITMAP该函数检索包含17个灰度级别的字形位图。
GGO_GRAY8_BITMAP该函数检索包含65级灰度的字形位图。

请注意,对于GGO_GRAYn_BITMAP值,该函数检索包含n ^ 2 + 1(n平方加1)灰度级别的字形位图。

【lpgm】

指向GLYPHMETRICS结构,描述字符单元格中字形的位置。

【cbBuffer】

指定函数复制关于轮廓字符的信息的缓冲区的大小。如果该值为零,则该函数返回缓冲区所需的大小。

【lpvBuffer】

指向缓冲区的功能是复制关于轮廓字符的信息。如果此值为NULL,则该函数返回缓冲区所需的大小。

【lpmat2】

指向MAT2结构,指定字符的转换矩阵。

返回值

如果指定了GGO_BITMAP,GGO_GRAY2_BITMAP,GGO_GRAY4_BITMAP,GGO_GRAY8_BITMAP或GGO_NATIVE,并且函数成功,返回值大于零;否则返回值为GDI_ERROR。en如果指定了这些标志之一,缓冲区大小或地址为零,则返回值指定所需的缓冲区大小(以字节为单位)。

如果指定了GGO_METRICS,并且函数失败,则返回值为GDI_ERROR。

备注

GetGlyphOutline函数返回的字形大纲是一个网格拟合字形。(网格拟合的字形是已修改的字形,以使其位图符合尽可能接近于原始图案的设计。)如果应用程序需要未修改的字形大纲,则可以请求字符的字形轮廓在一个字体的大小等于字体的em单位。字体的单位的值存储在OUTLINETEXTMETRIC结构的otmEMSquare成员中。

当指定GGO_BITMAP时,由GetGlyphOutline返回的字形位图是双字对齐的面向行的单色位图。当指定GGO_GRAY2_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到4。当指定GGO_GRAY4_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到16。当指定GGO_GRAY8_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到255。

应用程序可以通过在【lpMatrix】参数中指定2×2的变换矩阵来旋转以位图格式检索的字符。

也可以看看

FORM_INFO_1, GetOutlineTextMetrics, GLYPHMETRICS, MAT2, OUTLINETEXTMETRIC, POINT