POINTFX的结构如下:
typedef struct tagPOINTFX {
FIXED x //x-component of a point on the outline of a TrueType character
FIXED y //y-component of a point on the outline of a TrueType character
} POINTFX, *LPPOINTFX
对文字轮廓的获取通过API函数GetGlyphOutline()进行获取,在进行绘制。
在TTF字体结构中描述了TTF字体数据组成,在这里通过GLYPHMETRICS来了解一下TTF字体结构。更具体详细情况参 考MSDN。
GLYPHMETRICS的结构如下:
typedef struct _GLYPHMETRICS {
UINT gmBlackBoxX //指定完全包围字体结构的最小矩阵的宽度?
UINT gmBlackBoxY //指定完全包围字体结构的最小矩阵的高度
POINT gmptGlyphOrigin //指定完全包围字体结构的最小矩阵左上角的点坐标
short gmCellIncX //指定当前的起点到下一个字符的起点的水平距离
short gmCellIncY //...垂直距离
} GLYPHMETRICS, *LPGLYPHMETRICS
结构GLYPHMETRICS的使用主要在API函数GetGlyphOutline()来保存字符单元在字形的位置。
TrueType字体中的字符轮廓由直线和二次贝塞尔曲线片段所构成。Windows系统提供了API函数GetGlyphOutline()来获取字符的轮廓。函数通过字符Code确定一个字符在TTF字库中的结构,并取出字符Code所对应的数据。下面简单说明下函数的结构
GetGlyphOutline()函数结构:
DWORD GetGlyphOutline(UINT nChar, //需要获取字符
UINT nFormat, //获取字符的格式
LPGLYPHMETRICS lpgm,//获取字符的相关信息
DWORD cbBuffer, //保存字符数据缓冲区的大小
LPVOID lpBuffer, //保存字符数据的缓冲区
const MAT2* lpmat2 //变换矩阵
)const 实现功能