安装完毕以后我们先做个简单的实例程序看看效果

1.首先先下载字体

链接:https://pan.baidu.com/s/1FCOh9SYcVkYCkaT6wtXWtA 
提取码:rohm 
2.编写程序

编译测试文件example.c  

/*编译命令*/ -I指定库文件所在位置-L指定动态库位置gcc  example.c  -o  example   -I /usr/local/freetype/include/freetype2    -L/usr/local/freetype/lib  -lfreetype 

example.c  程序

/* example1.c                                                      */
/*                                                                 */
/* This small program shows how to print a rotated string with the */
/* FreeType 2 library.                                             */#include <stdio.h>
#include <string.h>
#include <math.h>#include <ft2build.h>
#include FT_FREETYPE_H#define WIDTH   80
#define HEIGHT  80/* origin is the upper left corner */
unsigned char image[HEIGHT][WIDTH];/* Replace this function with something useful. */void
draw_bitmap( FT_Bitmap*  bitmap,FT_Int      x,FT_Int      y)
{FT_Int  i, j, p, q;FT_Int  x_max = x + bitmap->width;FT_Int  y_max = y + bitmap->rows;for ( i = x, p = 0; i < x_max; i++, p++ ){for ( j = y, q = 0; j < y_max; j++, q++ ){if ( i < 0      || j < 0       ||i >= WIDTH || j >= HEIGHT )continue;image[j][i] |= bitmap->buffer[q * bitmap->width + p];}}
}void
show_image( void )
{int  i, j;for ( i = 0; i < HEIGHT; i++ ){for ( j = 0; j < WIDTH; j++ )putchar( image[i][j] == 0 ? ' ': image[i][j] < 128 ? '+': '*' );putchar( '\n' );}
}int
main( int     argc,char**  argv )
{FT_Library    library;FT_Face       face;FT_GlyphSlot  slot;FT_Matrix     matrix;                 /* transformation matrix */FT_Vector     pen;                    /* untransformed origin  */FT_Error      error;char*         filename;char*         text;double        angle;int           target_height;int           n, num_chars;if ( argc != 3 ){fprintf ( stderr, "usage: %s font sample-text\n", argv[0] );exit( 1 );}filename      = argv[1];                           /* first argument     */text          = argv[2];                           /* second argument    */num_chars     = strlen( text );angle         = ( 0.0 / 360 ) * 3.14159 * 2;      /* use 25 degrees     */target_height = HEIGHT;error = FT_Init_FreeType( &library );              /* initialize library *//* error handling omitted */error = FT_New_Face( library, argv[1], 0, &face ); /* create face object *//* error handling omitted */#if 0/* use 50pt at 100dpi */error = FT_Set_Char_Size( face, 50 * 64, 0,100, 0 );                /* set character size *//* pixels = 50 /72 * 100 = 69  */
#elseFT_Set_Pixel_Sizes(face, 24, 0);
#endif/* error handling omitted */slot = face->glyph;/* set up matrix */matrix.xx = (FT_Fixed)( cos( angle ) * 0x10000L );matrix.xy = (FT_Fixed)(-sin( angle ) * 0x10000L );matrix.yx = (FT_Fixed)( sin( angle ) * 0x10000L );matrix.yy = (FT_Fixed)( cos( angle ) * 0x10000L );/* the pen position in 26.6 cartesian space coordinates; *//* start at (0,40) relative to the upper left corner  */pen.x = 0 * 64;pen.y = ( target_height - 40 ) * 64;for ( n = 0; n < num_chars; n++ ){/* set transformation */FT_Set_Transform( face, &matrix, &pen );/* load glyph image into the slot (erase previous one) */error = FT_Load_Char( face, text[n], FT_LOAD_RENDER );if ( error )continue;                 /* ignore errors *//* now, draw to our target surface (convert position) */draw_bitmap( &slot->bitmap,slot->bitmap_left,target_height - slot->bitmap_top );/* increment pen position */pen.x += slot->advance.x;pen.y += slot->advance.y;}show_image();FT_Done_Face    ( face );FT_Done_FreeType( library );return 0;
}/* EOF */

运行测试程序    ./example  ./simsun.ttc   fbg    (预先将simsun.ttc字体文件拷贝到当前目录)结果如下:

freetype的简单使用相关推荐

  1. freetype的简单使用之 生成一个字体bmp

    前言:最近项目上需要在linux上做字体的图像生成,经查找资料选择使用freetype来进行字体的生成 一:bmp的基础定义 1.bmp相关的定义 BMP_API.h 这一步我们可以先进行bmp相关基 ...

  2. 使用redis实现缓存_用下一个js实现一个简单的redis缓存

    使用redis实现缓存 For most websites, the changing pieces don't actually vary that often. That immutability ...

  3. 基于嵌入式linux的freetype矢量字体简单显示的实现

    一.freetype简介 FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,可以非常方便我们开发字体显示相关的程序功能.它支持单色位图.反 ...

  4. FreeType 简单使用

      FreeType 2 第一步 -- 简易的字形装载 介绍 这是"FreeType2 教程"的第一部分.它将教会你如何: * 初始化库  * 通过创建一个新的 face 对象来打 ...

  5. FreeType简介及在vs2010的编译使用

    FreeType库是一个开源.高质量.可扩展.可定制.可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括点阵字.TrueType.OpenType.Type1.CID.CFF.Window ...

  6. nginx + gunicorn + django的简单部署

    sudo apt-get install nginxcd /etc/nginx/sites-availablesudo vim default 原本是想安装Image包,但是百度的方法都乱七八糟的不能 ...

  7. Fabio 安装和简单使用

    Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的微服务. Fabio 由 eBay Classifieds Group 开发,用于处理 ...

  8. vs移植的.exe再编译无法更新_关于freetype的移植和其官方demos的使用总结

    # 关于freetype的移植和其官方demos的使用总结 转载时请标明出处 作者联系方式QQ:854290197 一.Windows下移植feetype到工程中 步骤如下: 1.从官网上下载最新的 ...

  9. 一个简单视频网站开发小记

    前言 视频格式转换,视频图片截取,视频存储设计,大文件上传处理以及相关配置,前端视频播放,视频播放流畅度,每一个都不简单,都需要花心思思考解决方法!基本上每个问题,都是使用相应的开源库! 需求背景 手 ...

最新文章

  1. 新手向:从不同的角度来详细分析Redis
  2. python中print用法
  3. Oracle数据库安然计谋分析(二)
  4. idea中开启Run Dashboard
  5. 使用IAM保护您的AWS基础架构
  6. spring mvc学习(27):处理数据模型--从表单到controller传输数据续
  7. java一般做什么_java开发一般做什么
  8. 从最大似然估计到最小二乘法
  9. 技术干货丨隐私保护下的迁移算法
  10. 创建构建方法android,如何快速创建并发布一个 Android 库
  11. u-boot移植随笔:解决引导内核遇到undefined instruction的错误
  12. oracle 存储 秘密,鲜为人知的Exadata存储性能秘密
  13. 树莓派4b 调整屏幕分辨率
  14. 平行四边形(几何)题解
  15. STM32串口屏应用
  16. [hadoop那些事]hadoop及其组件资源 115/百度云
  17. 第二届中国PWA开发者日
  18. Tuxera NTFS Mac2022强大的mac读写硬盘/U盘工具
  19. android socket 推送服务版本
  20. 表达母亲节快乐的c语言编程,表达母亲节快乐的祝福语锦集38句

热门文章

  1. java中缓存的原理
  2. MFC-ProgressControl(进度条)
  3. Hibernate基础之SessionFactory
  4. iOS-Core-Animation-Advanced-Techniques(六)
  5. COMSOL初级学习之一
  6. MySQL索引原理和引擎
  7. pc 微信小程序 位置
  8. SpringBoot 亚马逊Simple邮件发送
  9. VMware安装windows server2008R2x64
  10. Python 1~500 求和(循环遍历求和,高斯求和,定义函数求和)