zoukankan      html  css  js  c++  java
  • freeType移植总结①——使用keil编译freeType2库

      在各个技术博客搜索相关资料后,终于将freeType的源码用keil工程编译通过,这里记录一下步骤和遇到的问题。

      因为网上的资料都是旧版本freeType的工程,这里博主使用的是freeType2.9.1版本,下载地址

      下面是简单的步骤

      1、添加源文件:

      

      其中,FreeTypeInc可以不添加,主要是为了方便阅读修改源文件。

      2、添加对应的头文件路径,(在移植过程中发现:许多没有添加到工程的.C文件会通过#include  xxx.C的方式调用,因此可以参考官方源码的doc文档查看.C之间的依赖关系,来决定需要包含哪些文件夹)。这里需要包含的文件夹路径如下:

      

      到这里工程源文件添加完成,首次编译会报错,错误信息如下:

      guifreeType2.9.1srcaseftsystem.c(30): error:  #13: expected a file name

        #include FT_INTERNAL_DEBUG_H

      在新版本freeType中,有一些头文件是以宏的形式被包含的,这里的错误提示这个宏没有被定义,通过sourceInsight 找到定义的文件然后在ft2build.h中定义头文件后,还是出错。

      遇到这个问题后,重新认识了include的功能,就是将其被包含的文件全部在包含位置展开,所以头文件的包含是作为局部代码全部拷贝的。

      最终问题的解决是在stackFlow上找到灵感:

      在ft2build.h的最前面添加如下代码:

    1 #ifndef FT2_BUILD_LIBRARY
    2 #define FT2_BUILD_LIBRARY
    3 #endif

      编译通过,到此,移植工作有了部分进展,也给自己增加了些许信心,后续工作是导入TFT字库,获取设定大小的字号,并将对应范围内的汉字的位图信息以文件的格式存在,方便在系统运行时直接使用。

    使用这种方案是处于对性能的考虑,因为是嵌入式系统,字库的渲染严重影响系统的实时性,折中的办法就是提前将字体完成渲染之后预先存储在系统的flash当中,在显示字体的时候直接使用。如果大家还有什么好的方案,希望能指点一二。

      

  • 相关阅读:
    Java NIO中的缓冲区Buffer(二)创建/复制缓冲区
    Java NIO中的缓冲区Buffer(一)缓冲区基础
    Java中的反射
    Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
    Spring Data JPA例子[基于Spring Boot、Mysql]
    Spring Session
    Spring Data Redis示例
    Spring IO Platform简介及示例
    使用Spring Boot开发 “Hello World” Web应用
    2017/01/13,今天正好是开通博客园一周年,谈谈自己的一些想法
  • 原文地址:https://www.cnblogs.com/10cm/p/10374681.html
Copyright © 2011-2022 走看看