freetype使用总结

  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

————————————————————————————————————————————————————————————————————————————— 无他,唯手熟尔。。。
原文地址:https://www.cnblogs.com/ZXNblog/p/4010317.html