勇芳软件工作室.汉化:  Fonts and Text > Fonts and Text Functions >

GetGlyphOutline

Previous pageReturn to chapter overviewNext page

描述

 

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

 

C++ 语法

 

DWORD GetGlyphOutline(

__in  HDC hdc,

__in  UINT uChar,

__in  UINT uFormat,

__out LPGLYPHMETRICS lpgm,

__in  DWORD cbBuffer,

__out LPVOID lpvBuffer,

__in  const MAT2 *lpmat2

);

 

PowerBASIC 语法

 

FUNCTION GetGlyphOutlineA ( _

BYVAL hdc AS DWORD, _

BYVAL uChar AS DWORD, _

BYVAL uFormat AS DWORD, _

BYREF lpgm AS GLYPHMETRICS, _

BYVAL cbBuffer AS DWPOD, _

BYREF lpvBuffer AS ANY, _

BYREF lpmat2 AS MAT2 _

) AS DWORD

 

Unicode版本:

 

FUNCTION GetGlyphOutlineW ( _

BYVAL hdc AS DWORD, _

BYVAL uChar AS DWORD, _

BYVAL uFormat AS DWORD, _

BYREF lpgm AS GLYPHMETRICS, _

BYVAL cbBuffer AS DWPOD, _

BYREF lpvBuffer AS ANY, _

BYREF lpmat2 AS MAT2 _

) AS DWORD

 

参数

 

hdc

 

[in]处理设备上下文。

 

uChar

 

[in]指定要返回哪些数据的字符。

 

uFormat

 

[in]指定函数检索的数据格式。此参数可以是以下值之一。

 

含义

GGO_BEZIER

Windows 2000 / XP / Vista / Windows 7: The function retrieves the curve data as a cubice B閦ier spline (not in quadratic spline format).

GGO_BITMAP

该函数检索字形位图。有关内存分配的信息,请参阅以下备注部分。

GGO_GLYPH_INDEX

Windows 95/98 / Me,Windows NT 4.0及更高版本:表示uChar参数是TrueType Glyph索引,而不是字符代码。有关字形索引的其他注释,请参阅ExtTextOut函数。

GGO_GRAY2_BITMAP

Windows 95/98 / Me,Windows NT 4.0及更高版本:该函数检索包含五个灰度级别的字形位图。

GGO_GRAY4_BITMAP

Windows 95/98 / Me,Windows NT 4.0及更高版本:该函数检索包含17级灰度的字形位图。

GGO_GRAY8_BITMAP

Windows 95/98 / Me,Windows NT 4.0及更高版本:该函数检索包含65级灰度的字形位图。

GGO_METRICS

该函数仅检索由lpgm指定的GLYPHMETRICS结构。其他缓冲区被忽略。该值会在失败时影响函数返回值的含义;请参阅返回值部分。

GGO_NATIVE

该函数以光栅化器的本机格式检索曲线数据点,并使用字体的设计单位。

GGO_UNHINTED

Windows 2000 / XP / Vista / Windows 7:该函数仅返回不一致的轮廓。此标志只与GGO_BEZIER和GGO_NATIVE结合。nl

 

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

 

lpgm

 

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

 

cbBuffer

 

[in]指定函数复制关于轮廓字符的信息的缓冲区大小(以字节为单位)(lpvBuffer)。如果该值为零,则该函数返回缓冲区所需的大小。

 

lpvBuffer

 

[out]指向接收有关轮廓字符信息的缓冲区的指针。如果此值为NULL,则该函数返回缓冲区所需的大小。

 

lpmat2

 

[in]指向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返回的字形位图是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结构的环丙沙星成员中。缓冲区中每个轮廓的大小(以字节为单位)存储在TTPOLYGONHEADER结构的cb成员中。额外的曲线定义被打包到缓冲区中,遵循前面的曲线,并且附加的轮廓被填充到先前轮廓之后的缓冲器中。缓冲区在GetGlyphOutline返回的缓冲区中包含与fit一样多的轮廓。

 

GLYPHMETRICS结构指定字符单元格的宽度和字符单元格中字形的位置。字符单元格的起点位于单元格左侧的字体基线处。字形原点的位置是相对于字符单元格。由OUTLINETEXTMETRIC结构给出字符单元格的高度,基线以及全局到字体的其他度量。

 

应用程序可以通过在lpMatrix参数中指定2×2的变换矩阵来改变以位图或本机格式检索的字符。例如,可以通过剪切,旋转,缩放或三个使用矩阵乘法的任何组合来修改字形。

 

关于字形轮廓的附加信息位于TrueType和OpenType技术规范中。

 

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)