汉字字形的定义和西文没有特别的差异, 除了文件头部分有些区别, 这个在 ACAD 帮助的用户自定义部分的字形定义里面有详细的说明的. 在编译后的 shx 文件的格式上是有不同的. 现在的 ACAD 系统采用的西文 shx 字体文件格式为 UniFont, 在通用的文件标志字符串之后, 就是连续的字符定义数据. 而汉字的 shx 属于 BigFont 类型, 在文件标志字符串之后是该 shx 文件中所有定义的字符的一个索引区块, 一个字符定义对应于一个记录, 每个记录占用 8 个字节, 包括了该字符的编码 (word), 定义数据的长度 (word), 定义数据在文件中的地址 (dword). 这个索引区之后才是真正的字符定义数据区. 之所以给 BigFont 创建一个索引区, 是由于 BigFont 相对于一般的西文字形定义, 被定义的字符数要大很多, 早期内存是比较紧张的, 一般不会将整个的 BigFont 字形定义文件读入内存, 只是读入索引区, 然后是使用到哪里才读入哪里的数据定义. 而西文字符就少很多了, 而且, 每个字符的笔画也比汉字少很多, 所以, 即使整个地读入文件, 内存消耗也少得多, 因此, 没有为其创建索引区. |