欢迎来到天天文库
浏览记录
ID:21343385
大小:52.00 KB
页数:14页
时间:2018-10-21
《freetype教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、freetype教程第一步--简易的字形装载介绍这是“FreeType2教程”的第一部分。它将教会你如何:*初始化库*通过创建一个新的face对象来打开一个字体文件*以点或者象素的形式选择一个字符大小*装载一个字形(glyph)图像,并把它转换为位图*渲染一个简单的字符串*容易地渲染一个旋转的字符串1.头文件下面的内容是编译一个使用了FreeType2库的应用程序所需要的指令。请谨慎阅读,自最近一次版本更新后我们已经更改了少许东西。1.FreeType2include目录你必须把FreeType2头文件的目录添加到编译包含(include)目录
2、中。注意,现在在Unix系统,你可以运行freetype-config脚本加上--cflags选项来获得正确的编译标记。这个脚本也可以用来检查安装在你系统中的库的版本,以及需要的库和连接标记。2.包含名为ft2build.h的文件Ft2build.h包含了接下来要#include的公共FreeType2头文件的宏声明。3.包含主要的FreeType2API头文件你要使用FT_FREETYPE_H宏来完成这个工作,就像下面这样:#include#includeFT_FREETYPE_HFT_FREETYPE_H是在fthe
3、ader.h中定义的一个特别的宏。Ftheader.h包含了一些安装所特定的宏,这些宏指名了FreeType2API的其他公共头文件。你可以阅读“FreeType2API参考”的这个部分来获得头文件的完整列表。#include语句中宏的用法是服从ANSI的。这有几个原因:*这可以避免一些令人痛苦的与FreeType1.x公共头文件的冲突。*宏名字不受限于DOS的8.3文件命名限制。象FT_MULTIPLE_MASTERS_H或FT_SFNT_NAMES_H这样的名字比真实的文件名ftmm.h和fsnames.h更具可读性并且更容易理解。*它允许
4、特别的安装技巧,我们不在这里讨论它。注意:从FreeType2.1.6开始,旧式的头文件包含模式将不会再被支持。这意味着现在如果你做了象下面那样的事情,你将得到一个错误:#include#include...2.初始化库简单地创建一个FT_Library类型的变量,例如library,然后象下面那样调用函数FT_Init_FreeType:#include#includeFT_FREETYPE_HFT_LIBRARYlibrary;...E
5、rror=FT_Init_FreeType(&library);If(error){...当初始化库时发生了一个错误...}这个函数负责下面的事情:*它创建一个FreeType2库的新实例,并且设置句柄library为它。*它装载库中FreeType所知道的每一个模块。除了别的以外,你新建的library对象可以优雅地处理TrueType,Type1,CID-keyed和OpenType/CFF字体。就像你所看到的,这个函数返回一个错误代码,如同FreeTypeAPI的大部分其他函数一样。值为0的错误代码始终意味着操作成功了,否则,返回值指示错
6、误,library设为NULL。3.装载一个字体facea.从一个字体文件装载应用程序通过调用FT_New_Face创建一个新的face对象。一个face对象描述了一个特定的字样和风格。例如,’TimesNewRomanRegular’和’TimesNewRomanItalic’对应两个不同的face。FT_Librarylibrary;/*库的句柄*/FT_Faceface;/*face对象的句柄*/error=FT_Init_FreeType(&library);if(error){...}error=FT_New_Face(library
7、,"/usr/share/fonts/truetype/arial.ttf",0,&face);if(error==FT_Err_Unknown_File_Format){...可以打开和读这个文件,但不支持它的字体格式}elseif(error){...其它的错误码意味着这个字体文件不能打开和读,或者简单的说它损坏了...}就如你所想到的,FT_NEW_Face打开一个字体文件,然后设法从中提取一个face。它的参数为:Library一个FreeType库实例的句柄,face对象从中建立Filepathname字体文件路径名(一个标准的C字符
8、串)Face_index某些字体格式允许把几个字体face嵌入到同一个文件中。这个索引指示你想装载的face。如果这个值太大,函数将会返回一个错误。I
此文档下载收益归作者所有