基于FreeType嵌入式矢量字体引擎的研究.docVIP

基于FreeType嵌入式矢量字体引擎的研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FreeType嵌入式矢量字体引擎的研究.doc

基于FreeType嵌入式矢量字体引擎的研究 快速发展的社会经济与日益发达的科技水平,使得社会中的 多个层面开始普遍运用嵌入式系统,且人们也将关注的重点放在了嵌 入式系统中的高质量汉字字库上。文章首先对FreeType字体引擎 TrueType矢量字体的概念分别进行了阐述;其次,介绍了裁剪与优化 的方法,以供参考。 版权和著作权归原作者所存,如存不 愿意被的情况,己的信息, 关键词:FreeType;矢量字体;嵌入式 与TrueType矢量字库相比,由于嵌入式系统以阵点为主的字库不 能对字体随意进行缩大和缩小,不能满足分辨率较高的屏幕的要求, 由于分辨率较高的屏幕显示的数据量较大,所以显示的速度非常慢。 但是,如果在嵌入式系统中使用矢量字体就能够将效果很好地呈现出 来。在嵌入式系统中,为了达到渲染TrueType矢量字库的目的,通常 都会用到FreeType字体引擎,对于FreeType字体引擎只有很少的一 部分嵌入式系统能够直接支持,由于受应算能力和储存空间的限制, 有很大一部门嵌入式系统都不能直接使用FreeType字体引擎,甚至有 些还需要在移植过程中进行剪裁和优化。 1 FreeType字体引攀TrueType矢量字体 FreeType字体引擎 作为一个字体引擎,FreeType的优势众多,其不仅质量较高,且 不收取任何费用,也可进行移植,其能够对包括TrueType、OpenType, WindowsFON/FNT, Typel,CFF, X11PCF 和 CID 等在内的多种字体格式 文件进行访问,且用到的接口也是统一的。在单色位图、反走样位图 等渲染上FreeType给予了大力支持。作为一个高度模块化的程序库, FreeType库的开发虽然受益于ANSIC,但在思想上却是面向对象的, 所以,用户可以对它进行灵活的裁减。 TrueType矢量字体 作为一种新型的数字化矢量字体格式,TrueType字体格式由两家 公司联合提出,即Microsoft公司与美国Apple公司[1]。几何学中的 B样条曲线与直线通常用于描述字体的外形轮廓。正切连续性和一阶 连续性是二次B样条曲线的特点,而精确表示出抛物线则是二次B样 条曲线的优势所在。 大多数情况下,诸如TrueType字体描述信息、各种标记表格和指 令集等均可在MAC与PC平台中得到有效应用,而这些都是描述 TrueType字体的文件。“Sfnt”资源是这些文件存放于MAC平台的一 种主要存放形式,而在Windows平台中,其存放形式便发生Y变化, 即为TTF形式。一般,高位在前,低位在后的Motorola式数据结构用 得最多,而这样做的目的也是为了避免TrueType的跨平台兼容性受到 影响。GDI图形设备接门中己经包含了 Windows的TrueType解释器, 因此TrueType字体输出能在所有的Windows支持的输出设备上使用。 2裁剪与优化 因为FreeType库中的API均为封装好的组件,所以若要看到其中 的具体细节,就必须进入到源码中。利用分析源码,对删减Y—些没 存用的步骤和定义,对一些算法进行了适当的裁减和改进 首先,在初始化FreeType库的时候,要将一些复杂的对象删除掉, 如FT_Library和FT_Face等,因为FrccTypc 了面对对象的思想编程, 里面包含了多个字体驱动的抽象接口,并使用抽象类来对所有的字体 驱动初始化过程进行统一。而在这里不需要对字体驱动进行判断,只 需要用到格式TrueType矢量字体。 在对TrueType字体进行初始化的过程中,首先要在各个表项中将 TrueType字体载入进来,针对Library对象、face对象的创建与初始 化以及判断字体平台驱动进行相应的简化,使之以TrueType中各个重 要表项载入的形式呈现出来,以同初始化字体的相关参数予以对应。 相对简单一点的是字体大小的设置部分,这一部分主要是按照制定的 大小,将包括额定的高度、宽度、EM正方形的像素宽度、高度等在内 的缩放的规模以及缩放后字体的规格参数确定下来,且这一部分也不 会用到其他结构体,如face对象等。 FreeType中涉及的字体与字符轮廓种类较多,这里主要对 TrueType字符轮廓的载入方法进行介绍。首先取得字符索引方法是运 用了函数FT Get Char Index,二分查找和有线性查找是查找的主要 方法。有序数据中使用的是二分法查找字符索引,获取glyf表中的图 元信息一般都是利用local表中偏移量和字符索引。在载入图元信息 时,图元头应该第一个载入,简单图元排在第二,最后再对图元信息 进行处理。如果点阵信息为最后轮换的图元数据,则可将smooth渲染 器作用利用起来。这一渲染器优势较多,其既可生成256色位图信息, 也

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档