欢迎来到天天文库
浏览记录
ID:55507297
大小:73.00 KB
页数:14页
时间:2020-05-15
《ttf文件结构解析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.ttf文件结构解析TrueType字体通常包含在单个TrueType字体文件中,其文件后缀为.TTF。OpenType字体是以类似 于TrueType字体的格式编码的POSTSCRIPT字体。OPENTYPE字体使用.OTF文件后缀。OPENTYPE还允许把多个OPENTYPE字体组合在一个文件中以利于数据共享。这些字体被称为TrueType字体集(TrueType collection),其文件后缀为.TTC。 TrueType字体用machintosh的轮廓字体资源的格式编码,有一个唯一的标记名"sfnt"。windows没有macintosh的位图字体资源格式,
2、字体目录 包含了字体格式的版本号和几个表,每个表都有一个tableentry结构项,tableentry结构包含了资源标记、校验和、偏移量和每个表的大小。下面是TrueType字体目录的c语言定义:typedef sturct{char tag[4];ULONG checkSum;ULONG offset;ULONG length;}TableEntry;typedef struct{Fixed sfntversion; //0x10000 for version 1.0USHORT numTables;USHORT searchRange;USHOR
3、T entrySelector;USHORT rangeShift;TableEntry entries[1];//variable number of TableEntry}TableDirectory; TrueType 字体中的所有数据都使用big-endian编码,最高位字节在最前面(因为TrueType字体最初是由apple公司定义的,而apple公司的os运行在motorola的cpu上)。如果一人TrueType字体以00 01 00 00 ,00 17开头,我们就可以知道它的格式是轮廓字体资源("sfnt")版本1.0的格式,有2
4、3个表。 TableDirectory结构的最后一个字段是可变长度的tableentry结构的数组,安体中的每个表对应其中一项。TrueType字体中的每个表都保存了不同的逻辑信息-----如图元中数据、字符到图元的映射、字距调整信息等等。有表是必须的,有些是可选的。下表列出了TrueType字体中常见的表。 head 字体头 字体的全局信息cmap 字符代码到图元的映射 把字符代码映射为图元索引glyf 图元数据
5、 图元轮廓定义以及网格调整指令maxp 最大需求表 字体中所需存分配情况的汇总数据mmtx 水平规格 图元水平规格loca 位置表索引 把元索引转换为图元的位置name 命名表 说明、字体名、字体族名、风格名等等hmtx 水平布局 .. 字体水平布局星系:上高、下
6、高、行间距、最大前进宽度、最小左支撑、最小右支撑kerm 字距调整表 字距调整对的数组post PostScript信息 所有图元的PostScript FontInfo目录项和PostScript名PCLT PCL 5数据 HP PCL 5Printer Language 的字体信息:字体数、宽度、x高度、风格、记号集等等OS/2 OS/2和Windows特有的规格 TrueT
7、ype字体所需的规格集 在TableDirectory结构中,所有的TableEntry结构都必须根据它们的标记名排序。比如,cmap必须出现在head前,而head必须在glyf前。但是实际的表可以出现在TrueType字体文件中的任意位置。 Win32API 提供了一个应用程序可用于查询原始TrueType字体信息的函数:DWORD GetFontData(HDC hDC,DWORD dwTable ,DWORD dwOffset, LPVO
此文档下载收益归作者所有