第三阶段应用层——1.4 数码相册—FreeType介绍

本文介绍了FreeType字体引擎的基本概念,包括其特点、模块化设计以及如何在嵌入式Linux环境下进行字形装载和渲染。文章详细解释了FreeType的库初始化、字体加载、设置字体大小、字形图像加载及文本渲染等步骤。

数码相册——FreeType介绍


一、FreeType简要介绍

FreeType是一个软件字体引擎,被设计成小、高效、可定制和可移植,同时能够产生高质量的输出(字形图像)。它可以用于图形库、显示服务器、字体转换工具、文本图像生成工具以及许多其他产品。

支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。

在嵌入式环境中,可以只编译那些你的嵌入式工程或环境需要的模块,从而有效的减小FreeType 2 的代码大小

废话少说,下面结合FreeType的官方教程来进行代码介绍与编程步骤总结。

二、简单的字形装载过程的描述

1.头文件

根据官方文档介绍到

  • 在使用时候,需要包含下列头文件
    在FreeType中有许多头文件的宏定义,需要添加ft2build.h文件才可以使用这些宏定义。
#include <ft2build.h>
#include FT_FREETYPE_H

2.库初始化

这调用的函数为FT_Init_FreeType()

  • 原型
  FT_Init_FreeType( FT_Library  *alibrary );
  • 参数解析
    ·FT_Library * alibrary:A handle to a new library object.(一个新库对象的句柄
  • 返回值
    成功执行:0,错误执行:FreeType error code(错误码)
  • 调用案例
FT_Library  library;
...
error = FT_Init_FreeType( &library );
if ( error )
{
   
   
  ... an error occurred during library initialization ...
}

3.加载字体

  • 函数原型
FT_New_Face( FT_Library   library,
               const char*  filepathname,
               FT_Long      face_index,
               FT_Face     *aface );
  • 参数
  • FT_Library library — A handle to the library resource(库资源的句柄).
  • const char * filepathname — A path to the font file(字体文件的路径).
  • FT_Long face_index — The index of the face within the font. The first face has index 0(字体中face的索引。第一个face的索引为0).
  • FT_Face * aface — A handle to a new face object. If ‘face_index’ is greater than or equal to zero, it must be non-NULL. See FT_Open_Face for more details(一个新face对象的句柄。如果FACE_INDEX大于或等于零,则必须为非NULL).
  • 返回值
    成功执行:0,错误执行:FreeType error code(错误码)
  • 调用案例
	FT_Library  library;   /* handle to library     */
	FT_Face     face;      /* handle to face object */
	
	error = FT_Init_FreeType( &library );
	if ( error ) {
   
    ... }
	
	error = FT_New_Face( library,
	                     "/usr/share/fonts/truetype/arial.ttf",
	                     0,
	                     &face );
	if ( error == FT_Err_Unknown_File_Format )
	{
   
   
	  ... the font file could be opened and read, but it appears
	  ... that its font format is unsupported
	}
	else if ( error )
	{
   
   
	  ... another error code means that the font file could not
	  ... be opened or read, or that it is broken...
	}

4.访问face数据

可以通过face句柄进行访问

  • 原型
typedef struct  FT_FaceRec_
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值