|
|
最近在做界面,使用freetype的时候发现一个问题,当字体大小为12的时候,使用simsong.ttc和其他几个字库时都有问题。以下是测试源码
if(FT_Load_Char(face,this-> reLocatedChar,FT_LOAD_DEFAULT))
{
return ERROR_CODE_8;
}
FT_Glyph glyph;
if(FT_Get_Glyph(face->glyph,&glyph))
{
return ERROR_CODE_9;
}
FT_Error error = FT_Glyph_To_Bitmap( &glyph, ft_render_mode_normal, 0, 1 );
FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph)glyph;
FT_Bitmap& bitmap=bitmap_glyph->bitmap;
假设输入的是"靠",该代码没有任何问题,但是如果是"临"那么最后的到的bitmap的buffer要小于bitmap的rows * width.直接造成out of bound.换句话说bitmap.buffer[bitmap->width * bitmap->rows - 1] 直接导致程序崩溃。这个情况只在字体大小为12时出现,其他大小都没有问题。这个究竟是freetype的bug还是我创建文字bitmap时的问题呢?还请各位高手帮忙看看。 |
|