zoukankan      html  css  js  c++  java
  • 【转】FreeType介绍

    • 简介
      • FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。
    • 特性
      • 下面是 FreeType2 提供的特性的一个不完全列表:
    1. FreeType2 为访问字体文件提供了一套统一的、独立于字体文件类型的、简单而易用的API。另外,一些特别类型的API可以用来访问字体文件里的特殊数据。
    2. 与大多数同类的字库不同,FreeType2 生来就支持类似TrueType 或者 Type1的可缩放字体类型,并且可以将字体的大纲数据(控件介绍/提示)返回给用户应用程序。
    3. FreeType2 的设计是基于模块的,这些模块可以在编译时被静态链接到库中或者在运行时根据需要加载。模块可以用来支持特殊的字体格式,或者甚至是新的符号图像类型!
    4. FreeType2 特意使用嵌入式系统编写,这意味着它不使用静态可写数据(也就是说,它可以直接从ROM中运行),这样客户程序就可以只为他们自己提供内存管理和输入/输出流的实现。
    5. 客户程序自己的输入/输出流可以使你轻易地使用相同的API读取基于ROM或被压缩的或远程的字体文件。多个流实现可以并行的被一个FreeType2 实例使用。
    6. 你可以只编译那些你的嵌入式工程或环境需要的模块,从而有效的减小FreeType2 的代码大小
    7. FreeType2 默认支持下面的字体类型:
      • TrueType 字体(集合)
      • Type1 字体
      • CID-keyed Type1 字体
      • CFF 字体
      • OpenType fonts (包括 TrueType 和 变体CFF )
      • SFNT-based bitmap 字体
      • X11 PCF 字体
      • Windows FNT 字体
      • BDF 字体 (包括反走样类型的)
      • PFR 字体
      • Type 42 字体 (有限支持)
    8. 通过一个给定的字形轮廓,FreeType2 有能力产生一个高质量的单色位图或一幅使用256阶灰度的反走样的像素图。这比Windows9x/98/NT/2000 或 FreeType1使用的5阶灰度像素图要好得多。
    9. FreeType 2 支持 TrueType 和 OpenType 规格定义的全部字符映射。同时,它也完全有能力自动合成Type1 使用的那种Unicode字符表,这种表要求必须把一个那种令人头痛的供转换编码时使用的结束符放置在标的末尾——这在Type1 使用的那种格式中是很常见的(当然,如果你需要,那种原始的编码方式也是可用的)。
    10. FreeType 2 的核心API提供了对访问字形名或调整数据中字符间距这样的高级信息的函数支持。
    11. 一个完整且有效率的TrueType字节码解释器。这个引擎可以用很小的点产生极好的输出。由于TrueType规格极其令人费解且十分含糊,这个组件想要成功完成输出是极其困难的。但无论如何,我们现在已经能使Windows的显示质量达到Mac的水平。
    12. 对于那些不需要或不希望为TrueType字体使用字节码解释器的人,我们开发了我们自己的自动提示模块。这种模块过去也曾被一些可缩放的字体使用过。
    13. FreeType2 可以产生一些相似的字体引擎无法产生的信息,例如字距调整的位距、字符名、垂直度量之类的。由于它模块化的设计,可以很方便地通过可选的API更改FreeType库来提供另外的针对特定字体类型的信息。(例如,一个可选的API用来检索TrueType 和 OpenType字体的SFNT表。
    14. 自从2.0.1版发布开始,FreeType2 开始提供它自己的超高速缓存子系统。可以利用它缓存可变实例或字形图像,使它们拥有更高的效率。

    原文:http://baike.baidu.cn/view/4579855.htm

  • 相关阅读:
    第十三章 部署Java应用程序
    分布式系列五: RMI通信
    分布式系列四: HTTP及HTTPS协议
    分布式系列三: 对象序列化
    程序中的 “负数取模” 问题
    【转】Linux C函数库参考
    【转】 Linux中记录终端输出到txt文本文件
    【转】 #define用法详解
    error: ‘to_string’ was not declared in this scope
    exit() 与 return() 的区别
  • 原文地址:https://www.cnblogs.com/dahai/p/3070425.html
Copyright © 2011-2022 走看看