查看“TrueType Fonts”的源代码
←
TrueType Fonts
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Stub}} [[Category:Graphical UI]] == 描述 == TrueType是一种将字体信息编码为文件的方法。 它是由苹果公司在20世纪80年代创建的,并在今天被广泛使用。 TrueType通过使用一系列直线和二次Bézier贝塞尔曲线来定义每个字形 (字符形状)。 这种方法意味着每个字符都是矢量图像,可以根据需要轻松地按比例放大。 TrueType文件格式具有很高的空间效率,但易于阅读,并使用两个简单的原语来绘制单个字符字形。 文件格式是big endian大端的。 == File Format == TypeType字体文件包含许多表,其中最重要的是: * 'cmap',它将单个字符代码映射到字形索引, * 'loca',将字形索引映射到偏移到主字形表中,以及 * 'glyf',它存储实际的字形矢量数据本身。 == 显示字符 == 显示字符的一般操作顺序如下: * 找到合适的字符映射是文件的 “cmap” 部分,用于编码您拥有的字符代码。 * 使用字符映射将字符代码映射到字形索引。 * 在 “本地” 表中查找字形索引,以找到该字形开始的字形表中偏移量。 * 在 “loca” 表中查找字形索引1以查找以下字形的偏移量,这使我们能够计算字形数据长度。 * 找到字形数据并绘制出来。 == Glyph字形数据深入== 字形数据本身描述了一组坐标点,这些坐标点定义了直线或Bézier曲线以绘制实际的字形图像。 它由文件 “glyf” 部分中的数据块描述。 glyph字形数据包含: * 轮廓的计数, * 字符数据的边界框, * 基于1的点索引的数组,指示每个轮廓的最后一个点, * 零个或多个 “网格拟合” 提示, * 标记定义点的属性, * X坐标数据,以及 * Y坐标数据。 === Contours轮廓 === 轮廓是形成闭环的后续点的集合。 有些字符只有一个轮廓来绘制它们,其他字符则更多。 以下是一些示例: * '-' (hyphen连字符) 只有一个轮廓,围绕条外侧的路径 * '1' (数字1) 也只有一个轮廓,围绕形状的外部 * 'O' (大写字母O) 有两个轮廓,一个围绕形状的外部,一个围绕内部 * '=' (等号) 有两个轮廓,每个条形周围的路径 * '%' (%百分比符号) 有五个轮廓,围绕条形的路径以及每个圆圈内外的路径 字形数据存储字形的轮廓计数以及每个轮廓的最后一点的数组。 通过读取最后一个轮廓的点索引,您可以确定组成此字形的总共点的数量。 请注意,该文件确实显式关闭了轮廓。 例如,一个正方形将由四个点定义,并且由绘图代码通过从第四点绘制回第一点来绘制正方形的第四边。 === “网格拟合” 提示 === 字形可以选择包含 “网格拟合” 提示。 这些是字体设计器提供的用于指定像素级别详细信息的说明,当字体呈现为位图 (栅格化) 时,应包括这些像素级别详细信息。 本文不涉及这些内容。 === 点数据 === 字形数据的其余部分形成三个字节数组,即标志,X坐标和Y坐标。 文件的点由字形数据中的一系列标志字节定义,每个标志代表字形中的一个或多个点,因此必须对标志进行解析,直到找到正确数量的点为止。 这是确定文件中存在多少个字节的标志数据的唯一方法。 每个标志字节表示有关它所代表的一个或多个点的详细信息: * 点是否在偏离曲线的曲线上, * X坐标是否有零,一或两个字节的数据, * Y坐标是否有零,一个或两个字节的数据,以及 * 此标志代表多少分。 === 画点 === On Curve / Off Curve标志用于识别特定点是否位于字符的轮廓上,还是b é zier曲线的控制点。 通过分析标志的开/关曲线位,可以确定所需的线类型: * OnCurve point到OnCurve point: 这是一条直线段。 * 曲线上,曲线上,曲线上: 这是一个二次b é zier。 * OnCurve,OffCurve,OffCurve,OnCurve: 这是两个二次b é ziers。 最后一种排列是文件格式的细微差别。 虽然文件以 “上曲线,下曲线,下曲线,上曲线” 的形式对四个点进行编码,但实际上它以 “上曲线,下曲线,上曲线,下曲线,上曲线” 的形式表示五个点。添加额外的曲线点以形成两个二次b é ziers。 (虽然我找不到任何明确的信息,但我认为上曲线点应该位于两个下曲线点之间的一半。) == 外部链接 == *苹果规格说明 http://developer.apple.com/fonts/TTRefMan/RM06/Chap6.html *优秀的参考 http://j2eedocument.appspot.com/2009/10/144-truetype-fonts.html *PD (stub) FreeType的实现 http://forum.osdev.org/viewtopic.php?f=11&t=24754
本页使用的模板:
模板:Stub
(
查看源代码
)
返回至“
TrueType Fonts
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息