FreeType字体引擎介绍

 

在图像处理领域,有时候我们需要在图片上进行打印字体的任务。例如,打印一个logo到图片上。在这种情况下,我们需要调用字体库,并将其“雕刻”到图片上,而常用的TrueType,OpenType等字体库存在接口不统一,彼此不兼容等缺点,如果能有一个统一的接口可以兼容种种常见的字体库,那岂不解决问题了?FreeType字体引擎的功能正是如此。

 FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。

目前,FreeType有FreeType1和FreeType2两种字体引擎。其中,FreeType1仅支持TrueType字体的渲染操作。而FreeType2则支持很多常见字体的渲染,所以,下面的论述都是针对FreeType2而言。   

FreeType 2的发行遵循两个开源许可:BSD样式的FreeType License和GPL(通用公共许可证)。它可以被用在任何程序中,无论是专有与否。

FreeType 2主要具有以下一些特性:

(1)为访问字体文件提供了一套统一的、独立于字体文件类型的、简单而易用的API。另外,一些特别类型的API可以用来访问字体文件里的特殊数据。

(2) 与大多数同类的字库不同,FreeType 2 生来就支持类似TrueType 或者 Type 1的可缩放字体类型,并且可以将字体的大纲数据(控件介绍/提示)返回给各户应用程序。

(3)特意使用嵌入式系统编写,这意味着它不使用静态可写数据(也就是说,它可以直接从ROM中运行),这样客户程序就可以只为他们自己提供内存管理和输入/输出流的实现;

(4) 客户程序自己的输入/输出流可以使你轻易地使用相同的API读取基于ROM或被压缩的或远程的字体文件。多个流实现可以并行的被一个FreeType 2 实例使用;

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

(6) FreeType 2 支持 TrueType 和 OpenType 规格定义的全部字符映射。同时,它也完全有能力自动合成Type 1 使用的那种Unicode字符表,这种表要求必须把一个那种令人头痛的供转换编码时使用的结束符放置在标的末尾——这在Type 1 使用的那种格式中是很常见的(当然,如果你需要,那种原始的编码方式也是可用的);

(7) FreeType 2 的核心API提供了对访问字形名或调整数据中字符间距这样的高级信息的函数支持;

(8) FreeType 2 可以产生一些相似的字体引擎无法产生的信息,例如字距调整的位距、字符名、垂直度量之类的。由于它模块化的设计,可以很方便地通过可选的API更改FreeType库来提供另外的针对特定字体类型的信息。(例如,一个可选的API用来检索TrueType 和 OpenType 字体的SFNT表;

(9)自从2.0.1版发布开始,FreeType 2开始提供它自己的超高速缓存子系统。可以利用它缓存可变实例或字形图像,使它们拥有更高的效率;

(10)FreeType2默认支持以下字体格式:

· TrueType fonts (and collections)

· Type 1 fonts

· CID-keyed Type 1 fonts

· CFF fonts

· OpenType fonts (both TrueType and CFF variants)

· SFNT-based bitmap fonts

· X11 PCF fonts

· Windows FNT fonts

· BDF fonts (including anti-aliased ones)

· PFR fonts

· Type 42 fonts (limited support)

你可能感兴趣的:(api,嵌入式,任务,引擎,图像处理,fonts)