FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件,
包括点阵字、TrueType、OpenType、Type1等等乱七八糟的
说到freetype的使用方法,自带的文档已经介绍的很清楚了,这里稍微总结下:
首先要理解矢量文字的实现过程:
1)给定一个文字,无论是神马编码方式(ASCII、GBK、unicode、BIG5),都可以确定他的编码值
2)根据编码值从字体文件中找到“glyph”
3)设置字体大小
4)用某些函数把glyph里的点缩放为设置的字体大小
5)转换为位图点阵
6)在LCD上显示出来
差不多这样吧,根据这些步骤,再参考文档,就可以确定代码的书写步骤了 // 注:代码摘自文档自带的例子
1)初始化
error = FT_Init_FreeType( &library ); /* initialize library */
2)加载字体face /* 字体这里神马个意思不好说,哪位大神有好的翻译了真心求教 */
error = FT_New_Face( library, argv[1], 0, &face ); /* create face object */
3)设置字体大小
error = FT_Set_Char_Size( face, 50 * 64, 0,100, 0 ); /* set character size */
FT_Set_Pixel_Sizes(face,24,0);
4)变换(移动\旋转)
FT_Set_Transform( face, &matrix, &pen );
5)根据编码值加载glyph /* 这个过程满复杂的,不过freetype代码写的好,一个函数统统搞定 */
error = FT_Load_Char( face, text[n], FT_LOAD_RENDER );
6)转换为位图
draw_bitmap( &slot->bitmap,slot->bitmap_left,target_height - slot->bitmap_top );
7)print
show_image();
一气呵成,nice