当前位置: 技术问答>linux和unix
如何让freetype输出正常字体
来源: 互联网 发布时间:2016-05-28
本文导语: 我最近想用freetype生成字体使用,现在的问题是我照一个example1.c的例程做生成的字全是加号和星号。不知有没有高手知道怎么才能让freetype显示的字体和我们平时看到的这样,或者是我用的查看字体的接口软件不对(...
我最近想用freetype生成字体使用,现在的问题是我照一个example1.c的例程做生成的字全是加号和星号。不知有没有高手知道怎么才能让freetype显示的字体和我们平时看到的这样,或者是我用的查看字体的接口软件不对(我是直接用gedit打开的)?请指点下
下面是我程序的框架
主要是draw_bitmap和show_image部分,不知道该怎么写,希望能得到些启发,有哪些比较好的资料推荐下也可以,谢谢
#include
#include FT_FREETYPE_H
int main(int argc, char** argv)
{
//初始化库
FT_Library library;
FT_Face face;
FT_Vector pen;
FT_Error error = FT_Init_FreeType(&library);
if(error)
continue;
//加载相应字体文件
error = FT_New_Face(library, "/usr/share/fonts/truetype/simsun.ttc",0,&face);
//设置字体的大小
error = FT_Set_Char_Size(face, 0, 16*64, 300, 300 );
error = FT_Set_Pixel_Sizes(face,0,16);
//加载字符的字形(glyph)
glyph_index = FT_Get_Char_Index(face, FT_ULong charcode);
error = FT_Load_Glyph(face, glyph_index,FT_LOAD_DEFAULT);
error = FT_Render_Glyph(face->glyph, render_mode);
//字体变换(旋转和缩放)
error = FT_Set_Transform( face, &matrix, &pen );
//把字符显示出来
draw_bitmap( &slot->bitmap, pen_x + slot->bitmap_left, pen_y - slot->bitmap_top );
}
//draw_bitmap函数和show_image函数该怎么写呢?
例程是这样写的
void
draw_bitmap( FT_Bitmap* bitmap,
FT_Int x,
FT_Int y)
{
FT_Int i, j, p, q;
FT_Int x_max = x + bitmap->width;
FT_Int y_max = y + bitmap->rows;
for ( i = x, p = 0; i width + p];//这句是什么意思?image[i][j]和buffer数组好像都没赋初值,怎么计算的呢
}
}
}
void
show_image( void )
{
int i, j;
for ( i = 0; i
下面是我程序的框架
主要是draw_bitmap和show_image部分,不知道该怎么写,希望能得到些启发,有哪些比较好的资料推荐下也可以,谢谢
#include
#include FT_FREETYPE_H
int main(int argc, char** argv)
{
//初始化库
FT_Library library;
FT_Face face;
FT_Vector pen;
FT_Error error = FT_Init_FreeType(&library);
if(error)
continue;
//加载相应字体文件
error = FT_New_Face(library, "/usr/share/fonts/truetype/simsun.ttc",0,&face);
//设置字体的大小
error = FT_Set_Char_Size(face, 0, 16*64, 300, 300 );
error = FT_Set_Pixel_Sizes(face,0,16);
//加载字符的字形(glyph)
glyph_index = FT_Get_Char_Index(face, FT_ULong charcode);
error = FT_Load_Glyph(face, glyph_index,FT_LOAD_DEFAULT);
error = FT_Render_Glyph(face->glyph, render_mode);
//字体变换(旋转和缩放)
error = FT_Set_Transform( face, &matrix, &pen );
//把字符显示出来
draw_bitmap( &slot->bitmap, pen_x + slot->bitmap_left, pen_y - slot->bitmap_top );
}
//draw_bitmap函数和show_image函数该怎么写呢?
例程是这样写的
void
draw_bitmap( FT_Bitmap* bitmap,
FT_Int x,
FT_Int y)
{
FT_Int i, j, p, q;
FT_Int x_max = x + bitmap->width;
FT_Int y_max = y + bitmap->rows;
for ( i = x, p = 0; i width + p];//这句是什么意思?image[i][j]和buffer数组好像都没赋初值,怎么计算的呢
}
}
}
void
show_image( void )
{
int i, j;
for ( i = 0; i