Freetype的使用相对比较简单:
1. 包含freetype的头文件。
#include <ft2build.h> #include FT_FREETYPE_H
|
2. 初始化freetype
FT_Library library; error = FT_Init_FreeType( &library );
|
3. 加载字体
error = FT_New_Face( library, "/usr/share/fonts/truetype/arial.ttf", 0, &face );
|
或者
error = FT_New_Memory_Face( library, buffer, /* first byte in memory */ size, /* size in bytes */ 0, /* face_index */ &face );
|
4. 设置字体的大小
error = FT_Set_Char_Size( face, /* handle to face object */ 0, /* char_width in 1/64th of points */ 16*64, /* char_height in 1/64th of points */ 300, /* horizontal device resolution */ 300 ); /* vertical device resolution */ error = FT_Set_Pixel_Sizes( face, /* handle to face object */ 0, /* pixel_width */ 16 ); /* pixel_height */
|
5. 加载字符的glyph
glyph_index = FT_Get_Char_Index( face, charcode ); error = FT_Load_Glyph( face, /* handle to face object */ glyph_index, /* glyph index */ load_flags ); /* load flags, see below */ error = FT_Render_Glyph( face->glyph, /* glyph slot */ render_mode ); /* render mode */
|
6. 字体变换(旋转和缩放)
error = FT_Set_Transform( face, /* target face object */ &matrix, /* pointer to 2x2 matrix */ &delta ); /* pointer to 2d vector */
|
7. 把字符显示出来(与具体实现有关)
draw_bitmap( &slot->bitmap, pen_x + slot->bitmap_left, pen_y - slot->bitmap_top );
|