FreeType2 教程的第二部分FreeType2 教程的第二部分.pdf

FreeType2 教程的第二部分FreeType2 教程的第二部分.pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FreeType2 教程的第二部分FreeType2 教程的第二部分

第二步 -- 管理字形 介绍 这是“FreeType2 教程”的第二部分。它将教会你如何: * 检索字形度量 * 容易地管理字形图像 * 检索全局度量(包括字距调整) * 渲染一个简单的字符串(采用字距调整) * 渲染一个居中的字符串(采用字距调整) * 渲染一个变换的字符串(采用居中) * 在需要时以预设字体单位的格式获取度量,以及把它们缩放到设备空间 1.字形度量 从字形度量这个名字可以想到,字形度量是关联每一个字形的确定距离,以此描述如何使用 该距离来排版文本。 通常一个字形有两个度量集:用来排版水平文本排列的字形(拉丁文、西里尔文、阿拉伯文、 希伯来文等等)和用来排版垂直文本排列的字形(中文、日文、韩文等等)。 要注意的是只有很少的字体格式提供了垂直度量。你可以使用宏FT_HAS_VERTICAL 测试 某个给出的face 对象是否包含垂直度量,当结果为真时表示包含。 个别的字形度量可以先装载字形到face 的字形槽,然后通过face-glyph-metrics 结构访问, 其类型为FT_Glyph_Metrics 。我们将在下面详细讨论它,现在,我们只关注该结构包含如下 的字段: Width 这是字形图像的边框的宽度。它与排列方向无关。 Height 这是字形图像的边框的高度。它与排列方向无关。 horiBearingX 用于水平文本排列,这是从当前光标位置到字形图像最左边的边界的水平距离。 horiBearingY 用于水平文本排列,这是从当前光标位置(位于基线)到字形图像最上边的边界的水平距离。 horiAdvance 用于水平文本排列,当字形作为字符串的一部分被绘制时,这用来增加笔位置的水平距离。 vertBearingX 用于垂直文本排列,这是从当前光标位置到字形图像最左边的边框的垂直距离。 vertBearingY 用于垂直文本排列,这是从当前光标位置(位于基线)到字形图像最上边的边框的垂直距离。 vertAdvance 用于垂直文本排列,当字形作为字符串的一部分被绘制时,这用来增加笔位置的垂直距离。 注意:因为不是所有的字体都包含垂直度量,当FT_HAS_VERTICAL 为假时,vertBearingX , vertBearingY 和vertAdvance 的值是不可靠的。 下面的图形更清楚地图解了度量。第一个图解了水平度量,其基线为水平轴: 对于垂直文本排列,基线是垂直的,与垂直轴一致: Face-glyph-metrics 中的度量通常以26.6 象素格式(例如1/64 象素)表示,除非你在调用 FT_Load_Glyph 或FT_Load_Char 时使用了FT_LOAD_NO_SCALE 标志,这样的话度量会 用原始字体单位表示。 字形槽(glyph slot)对象也有一些其他有趣的字段可以减轻开发者的工作。你可以通过 face-glyph-xxx 访问它们,其中xxx 是下面字段之一: Advance 这个字段是一个FT_Vector ,保存字形的变换推进。当你通过FT_Set_Transform 使用变换时, 这是很有用的,这在第一部分的循环文本例子中已经展示过了。与那不同,这个值是默认的 (metrics.horiAdvance,0),除非你在装载字形图像时指定FT_LOAD_VERTICAL ,那么它将会 为(0,metrics.vertAdvance) 。 linearHoriAdvance 这个字段包含字形水平推进宽度的线性刻度值。实际上,字形槽返回的metrics.horiAdvance 值通常四舍五入为整数象素坐标(例如,它是64 的倍数),字体驱动器用它装载字形图像。 linearHoriAdvance 是一个16.16 固定浮点数,提供了以1/65536 象素为单位的原始字形推进 宽度的值。它可以用来完成伪设备无关文字排版。 linearVertAdvance 这与linearHoriAdvance 类似,但它用于字形的垂直推进高度。只有当字体face 包含垂直度 量时这个值才是可靠的。 2.管理字形图像 转载到字形槽得字形图像可以转换到一幅位图中,这可以在装载时使用 FT_LOAD_RENDER 标志或者调用FT_Render_Glyph 函数实现。每一次你装载一个新的字 形图像到字形槽,前面装载的将会从字形槽中抹去。 但是,你可能需要从字形槽中提取这个图像,以用来在你的应用程序中缓存它,或者进行附 加的变换,或者在转换到位图前测量它。 FreeType 2 API 有一个特殊的扩展能够以一种灵活和普通的方式处理

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档