FreeType 调试

本文介绍了在使用FreeType库时遇到的一个错误,即在计算maskData时错误地使用了算术运算符的优先级,导致了2小时的调试。通过修正代码并提供FreeType字体库的初始化、释放、创建、销毁及获取字符数据的函数,展示了FreeType在字体渲染中的应用。同时,给出了一个32位HBitmap的描画函数示例。
摘要由CSDN通过智能技术生成

不良习惯害死人啊!


下面代码对吗?

unsigned char maskData = glyphData.pGlyphData[j * glyphData.pitch + k >> 3];


随手写的,却坑了自己2小时。反复看了好几次文档,也没搞明白哪错了。

正确写法:

unsigned char maskData = glyphData.pGlyphData[j * glyphData.pitch + (k >> 3)];  // + 比 >> 优先级高


附上自己封装的FreeType给大家参考:

#include <ft2build.h> 
#include FT_FREETYPE_H 
#include <windows.h>
#include <tchar.h>

typedef struct stGFX2D_Font_Impl {
GFX2D_UB8    width;
GFX2D_UB8    height;
GFX2D_UB8    weight;
GFX2D_ENUM   face;
GFX2D_ENUM   charSet;
FT_Face      pFTFace; 
PFONTCALL    fontcall;
PCHARSETOPS  charsetops;
} GFX2D_Font_Impl, *GFX2D_Font_Impl_Handle;


static FT_Library   s_pFTLib;
const char fontpath[] = "c:\\WINDOWS\\fonts\\msmincho.ttc";


GFX2D_STAT FontLib_FreeType_Init ()
{
GFX2D_STAT rtn = GFX2D_SUCCESS;
FT_Init_FreeType(&s_pFTLib);
return rtn;
}


GFX2D_STAT FontLib_FreeType_Exit ()
{
GFX2D_STAT rtn = GFX2D_SUCCESS;
FT_Done_FreeType(s_pFTLib);
s_pFTLib = NULL;
return rtn;
}


GFX2D_STAT FontLib_FreeType_Fo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值