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