freetype显示矢量字体 -- 在PC上测试初步使用

解压freetype-2.4.10.tar.bz2,

重命名为freetype-2.4.10_pc放入01th_pc目录下。

进入目录配置:./configure

编译:make

安装:sudo make install

编译应用程序:example.c
gcc -o example1 example1.c -I /usr/local/include/freetype2 -lfreetype -lm
gcc编译参数设置           -I     +头文件目录             库文件    使用数学函数

找一个字体文件:
simsun.ttc字体文件放入01th_pc目录下。

运行:
./example1 ./simsun.ttc zhu

太大了,看不到结果。
修改以下显示的宽度和高度:
#define WIDTH   80
#define HEIGHT  80

/* start at (0,40) relative to the upper left corner  */
  pen.x = 0 * 64;
  pen.y = ( target_height - 40 ) * 64;

编译应用程序:example.c

运行:
./example1 ./simsun.ttc zhu

出结果了:
              +*                                                                
             ***                                                                
             +**                                                                
              **                                                                
              **                                                                
              **         ++*   ++*                                              
  ********    **++***+   ***   ***                                              
  *++ +**+    ***+++**   +**   +**                                              
  *   ***+    **+  +**    **    **                                              
     +**+     **   +**    **    **                                              
     ***      **    **    **    **                                              
    +**+      **    **    **    **                                              
   +***       **    **    **    **                                              
   +**+   *   **    **    **+  +**                                              
  +***   +*   **    **    **+  +**+                                             
  +**+ ++**  +**+  +**+   ***+++***                                             
  ********+  ****  ****   +****+*++

显示“朱滔zhu”
修改example1.c在002th_chinese目录下,执行结果

++                                                                   
      +    **+             ++              ++                                   
     +**+  **               **+        ++****+                                  
     +**+  **               +**+ ++++******+++                +*                
     +*+   **     +++        +*+ ++++++     ++               ***                
     **++++**+++++***+       +*++++   ++    **+              +**                
    +*+++++**+++++++++         +++*+  +*+  +*+                **                
   +*+     **            +*+   ++ +*+  ** +*+                 **                
   ++      **             +*+  *+ +*+  ++ *+                  **                
   ++      **       ++     **++*   + ++  ++ +     ********    **++***+          
 ++++++++++**++++++***+    +*+++ ++++**+++++*+    *++ +**+    ***+++**          
 +++++++++****+++++++++     + *+ ****+++++++**+   *   ***+    **+  +**          
         ****++              +*  **         *+       +**+     **   +**          
        +****+*+             ++  **         *+       ***      **    **          
       +**+** +*+           +*+  **  ++     *+      +**+      **    **          
      +**+ ** +**+       +++**   **+***++*++*+     +***       **    **          
     +**+  **  +**+      ++***   **     ++  *+     +**+   *   **    **          
    +**+   **   +**++      +*+   **         *+    +***   +*   **    **          
   +**+    **    +****+    +*+   **         *+    +**+ ++**  +**+  +**+         
  +*+      **     ++*++    +*+   **         *+    ********+  ****  ****         
 +++       **       +      +*+   **+++++++++*+                                  
 +         **              +*+   **         *+                                  
           ++                    ++         ++                                  
                                                                                
                                                                                
宽字符显示:
gcc -finput-charset=GBK -fexec-charset=UTF-8 -o example1 example1.c -I /usr/local/include/freetype2 -lfreetype -lm

运行结果:
           ++                                                                   
      +    **+             ++              ++                                   
     +**+  **               **+        ++****+                                  
     +**+  **               +**+ ++++******+++                +*                
     +*+   **     +++        +*+ ++++++     ++               ***                
     **++++**+++++***+       +*++++   ++    **+              +**                
    +*+++++**+++++++++         +++*+  +*+  +*+                **                
   +*+     **            +*+   ++ +*+  ** +*+                 **                
   ++      **             +*+  *+ +*+  ++ *+                  **         ++*   +
   ++      **       ++     **++*   + ++  ++ +     ********    **++***+   ***   *
 ++++++++++**++++++***+    +*+++ ++++**+++++*+    *++ +**+    ***+++**   +**   +
 +++++++++****+++++++++     + *+ ****+++++++**+   *   ***+    **+  +**    **    
         ****++              +*  **         *+       +**+     **   +**    **    
        +****+*+             ++  **         *+       ***      **    **    **    
       +**+** +*+           +*+  **  ++     *+      +**+      **    **    **    
      +**+ ** +**+       +++**   **+***++*++*+     +***       **    **    **    
     +**+  **  +**+      ++***   **     ++  *+     +**+   *   **    **    **+  +
    +**+   **   +**++      +*+   **         *+    +***   +*   **    **    **+  +
   +**+    **    +****+    +*+   **         *+    +**+ ++**  +**+  +**+   ***+++
  +*+      **     ++*++    +*+   **         *+    ********+  ****  ****   +****+
 +++       **       +      +*+   **+++++++++*+                                  
 +         **              +*+   **         *+                                  
           ++                    ++         ++

添加打印信息,分析结果:
    printf("Unicode2: 0x%x\n",chinese_str[n]);
    
    printf("origin.x/64 = %d,origin.y/64 = %d\n",pen.x/64,pen.y/64);

printf("xMin = %d,xMax = %d,yMin = %d,yMax = %d\n",bbox.xMin,bbox.xMax,bbox.yMin,bbox.yMax);                            
    
    printf("slot->advance.x/64 = %d,slot->advance.y/64 = %d\n",slot->advance.x/64,slot->advance.y/64);

Unicode:
0x6731 0x6ed4 0x7a 0x68 0x75
Unicode2: 0x6731  朱
origin.x/64        = 0,origin.y/64        = 40
xMin = 1,xMax     = 23,yMin               = 37,yMax = 60
slot->advance.x/64 = 24,slot->advance.y/64 = 0
Unicode2: 0x6ed4  滔
origin.x/64        = 24,origin.y/64        = 40
xMin = 25,xMax     = 47,yMin               = 37,yMax = 59
slot->advance.x/64 = 24,slot->advance.y/64 = 0
Unicode2: 0x7a    z
origin.x/64        = 48,origin.y/64        = 40
xMin = 50,xMax     = 59,yMin               = 40,yMax = 51
slot->advance.x/64 = 12,slot->advance.y/64 = 0
Unicode2: 0x68      h
origin.x/64        = 60,origin.y/64        = 40
xMin = 61,xMax     = 71,yMin               = 40,yMax = 57
slot->advance.x/64 = 12,slot->advance.y/64 = 0
Unicode2: 0x75      u
origin.x/64        = 72,origin.y/64        = 40
xMin = 73,xMax     = 83,yMin               = 40,yMax = 52
slot->advance.x/64 = 12,slot->advance.y/64 = 0

时间: 2024-10-11 01:34:45

freetype显示矢量字体 -- 在PC上测试初步使用的相关文章

freetype显示矢量字体 -- 在LCD上测试

配置交叉编译工具连我的环境变量:/home/usr/local/arm/4.3.2/bin 解压freetype-2.4.10.tar.bz2 进入配置交叉编译工具:./configure --host=arm-linux编译  make 暂时安装到当前目录下tmp目录make DESTDIR=$PWD/tmp install 拷贝库文件到交叉编译器里:把tmp/usr/local/lib/*  复制到 /home/usr/local/arm/4.3.2/arm-none-linux-gnuea

在PC上测试移动端网站和模拟手机浏览器的5大方

查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择"复制",复制一个图标副本到桌面.右击该副本,选择"属性",

在PC上测试移动端网站和模拟手机浏览器的5大方法

查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择"复制",复制一个图标副本到桌面.右击该副本,选择"属性",

PC上测试移动端网站和模拟手机浏览器

一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加以下语句:“–user-agent=”Android””,如下图: 注意user前面是两个“-”,并且“chrome.exe”与“–user”

【转】在PC上测试移动端网站和模拟手机浏览器的5大方法

查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面上的Chrome浏览器图标,在弹出的右键菜单中选择“复制”,复制一个图标副本到桌面.右击该副本,选择“属性”,打开相应的对话框,在“目标”文

在开发板上实现矢量字体显示

对于开发板实现显示矢量字体,同样PC机一样,我需要字体文件,这里选择simsun.ttc(新宋体). 1)初始化库  FT_Init_FreeType( &library ); /* initialize library */ 2)create face object  FT_New_Face( library, argv[1], 0, &face ); 3)设置字体大小 FT_Set_Pixel_Sizes(face, 24, 0); 4)设置坐标 pen.x = 0 * 64; pen

FreeType 矢量字体 测试移植(1)

之前有做过 ascii 和汉字库的字体点阵在lcd上显示的例子,都是按照指定大小的字库的点阵来显示的,所以一但选定了字体文件后,就固定了大小,不可变化,当然也可以存放各种 大小的字体文件,但这样的话就需要很多的空间,这种方法显然不好使,所以就引入了失量字体,关于字体的特点就不啰嗦了.可以去网上搜到很多说明.下面我们一步一步的来做实验测试了解失量字体的用法,先在PC机上测试,然后再移植到开发板上用lcd显示. 一.首先我们要去获得失量字体的源码和一些文档,https://www.freetype.

在PC上运行安卓(Android)应用程序的几个方法

我有一部荣耀3C,一般放在宿舍(我随身携带的是一部诺基亚E63,小巧.稳定.待机时间长),在宿舍我就会用它在微信上看公众号里的文章,最近要考驾照也在上面用驾考宝典.最近想在实验室用这两个软件,但又懒得带手机,而微信没有PC版,驾考宝典的PC版暂时没法同步数据,于是就想在PC上运行这两个软件,搜索了一阵子,找到三种方法: 1.在PC安装一个安卓模拟器,在模拟器里面运行apk: 2.虚拟机安装 Android x86 然后在此系统里运行: 3.利用谷歌chrome浏览器运行(这是一个新颖.有前途.激

C#+OpenGL+FreeType显示3D文字(1) - 从TTF文件导出字形贴图

C#+OpenGL+FreeType显示3D文字(1) - 从TTF文件导出字形贴图 +BIT祝威+悄悄在此留下版了个权的信息说: 最近需要用OpenGL绘制文字,这是个很费时费力的事.一般的思路就是解析TTF文件从而得到字形的贴图,然后通过OpenGL绘制贴图的方式显示文字. 本篇记录了解析TTF文件并把所有字形安排到一张大贴图上的过程. 使用FreeType 想从零开始解析TTF文件是一个比较大的工程,所以目前就借助FreeType.FreeType是一个开源的跨平台的TTF文件解析器.当然