zoukankan      html  css  js  c++  java
  • 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

    ————————————————————————————————————————————————————————————————————————————— 无他,唯手熟尔。。。
  • 相关阅读:
    ThinkPHP中pathinfo模式与URL重写
    JS分割字符串并放入数组的函数
    js解决弹窗问题实现班级跳转DIV示例
    javascript客户端遍历控件与获取父容器对象
    Apache 虚拟目录和默认首页的设置
    linux Apache CGI 安装配置
    apache与和mysql重启命令
    带你从零学ReactNative开发跨平台App开发(三)
    带你从零学ReactNative开发跨平台App开发(一)
    C#/Net定时导出Excel并定时发送到邮箱
  • 原文地址:https://www.cnblogs.com/ZXNblog/p/4010317.html
Copyright © 2011-2022 走看看