TrueType字体结构研究报告

TrueType字体结构研究报告

TTF文件结构:TTF文件是用树形的表组织起来的,由3个部分组成:文件头、描述表目录和一系列的描述表。

(一) 文件头

头文件:12字节,描述了表的个数和字体的版本信息。

(二) 描述表目录

描述表目录:每个描述表为16字节。描述表目录按照tag以升序排列。TrueType的各个目录表的结构:表名称、描述表内容校验和、描述表的偏移地址、描述表字节长度。

(三) 描述表

描述表:包括字符编码的查找方法、轮廓数据的描述方法。(如cmap表:由cmap表头、cmap子表描述目录和一系列子表)。

1、 Cmap表

Cmap表头长度为4字节,内容如下:

USHORT Cmap_Version //cmap表版本号

USHORT Cmap_tables //子表的个数

接下来是cmap子表描述目录,共有Cmap_tables个目录入口,每个目录的长度为8个字节,内容如下:

USHORT Platform; //平台标识

USHORT EncodingID; //编码体系标识

ULONG TableOffset ;//子表位置偏移

2、 loca表

TrueType字体中最有用的信息是glyf表中的图元数据。有了图元索引,要找到相应的图元,需要表(loca表)索引以把图元索引转换为图元数据表内的偏移量。

位置索引表中保存了n+1个图元数据表的索引,其中n是保存在最大需求表中的图元数量。最后一个额外的偏移量并不指向一个新图元,而是指向最后一个图元的偏移量和当前图元的偏移量和当前图元的偏移量间的差值得到图元的长度。

位置索引表中的每一个索引以无符号短整数对齐的,如果使用了短整数格式,索引表实际存储的是WORD偏移量,而不是BYTE偏移量。这合得短整数格式的位置索引表能支持128KB大小的图元数据表。

字符在屏幕解析过程:TrueType解释器会根据字符Unicode编码,通过查找cmap表得到映射偏移量,再从loca表获得对应字符轮廓数据在glyf表中的存放地址,读出glyf表中的轮廓信息及指令就可以生成高质量的TrueType字形。

相关推荐