通过定义扩展大字体文件,可以减小复合 Kanji 字符的大小。扩展大字体使用子形编码,后面紧跟一个 0。
扩展大字体文件的第一行与普通的大字体文件一样。文件中其他行的格式如下所示:
*0,5,font-name character-height, 0, modes, character-width,0 . . . *shape-number,defbytes,shape-name . code,0,primitive#,basepoint-x,basepoint-y,width,height, . . code,0,primitive#,basepoint-x,basepoint-y,width,height, . terminator
下表介绍大字体定义文件中的字段:
与字符宽度共同指明定义字体字符的单位数。
与字符高度共同指明定义字体字符的单位数。character-height 和 character-width 值用于规定字体原型。在此上下文中,字体原型为点、直线、多边形或二维空间中几何方向字体的字符串。Kanji 字符由多个字体原型以不同的缩放比例和组合方式重复组成。
modes 字节对水平方向的字体为 0,对双向(水平或垂直)字体为 2。特殊命令代码 00E (14) 只有在 modes 被设定为 2 时有效。
字符代码。
字节数。通常包括两个字节,由十六进制代码(或十进制和十六进制代码组合)构成。
字符名称。
形说明特殊代码。通常为 7,因此可以使用子形功能。
子形引用编号,始终为 2 个字节。
字体原型的 X 原点。
字体原型的 Y 原点。
字体原型宽度的缩放比例。
字体原型高度的缩放比例。
形定义文件结束标识符,始终为 0。
为达到一定的比例因子,程序将字体原型缩放为某个平方单位,然后将其乘以宽度和高度得到字符的形。大字体形定义文件中字符代码(形编号)的值最大可到 65535。下表描述了扩展大字体文件中的字段。
扩展大字体文件的字段 |
|||
---|---|---|---|
变量 |
值 |
字节数 |
说明 |
形编号 |
xxxx |
2 字节 |
字符代码 |
代码 |
7,0 |
2 字节 |
扩展字体定义 |
primitive# |
xxxx |
2 字节 |
引用子形编号 |
基点 x |
1 字节 |
字体原型的 X 原点 |
|
基点 y |
1 字节 |
字体原型的 Y 原点 |
|
宽度 |
1 字节 |
字体原型宽度的缩放比例 |
|
高度 |
1 字节 |
字体原型高度的缩放比例 |
|
终结符 |
0 |
1 字节 |
形定义结束 |
下图是一个 16 x 16 点阵的样例,可用于设计扩展大字体(例如 Kanji 字符)。在此样例中,点之间的距离为一个单位。标注指向正方形单位。
Kanji 字符的方形矩阵
下图是 Kanji 字符的样例。每个字符占据一个 M×N 矩阵(矩阵不必为方阵),与上图所示矩阵类似。每个图例上的编号是相关联的形编号。
Kanji 字符的样例
下图展示了 Kanji 字体原型。
Kanji 原形样例
*BIGFONT 50,1,080,09e *0,5,Extended Font 15,0,2,15,0 *08D91,31,unspecified 2,0e,8,-7,-15, 7,0,08cfb,0,0,16,16,7,0,08bca,2,3,12,9, 2,8,18,0,2,0e,8,-11,-3,0 *08CD8,31,unspecified 2,0e,8,-7,-15, 7,0,08be0,0,0,8,16,7,0,08cc3,8,0,8,16, 2,8,18,0,2,0e,8,-11,-3,0 *08ADF,31,unspecified 2,0e,8,-7,-15, 7,0,089a4,0,0,8,16,7,0,08cb3,8,0,8,16, 2,8,18,0,2,0e,8,-11,-3,0 *08CE8,39,unspecified 2,0e,8,-7,-15, 7,0,089a4,0,1,5,14,7,0,08cc3,5,2,5,14,7,0,08c8e,9,0,7, 16,2,8,18,0,2,0e,8,-11,-3,0 *089A4,39,primitive 2,0e,8,-7,-15,2,8,1,14,1,0c0, 2,8,-11,-6,1,0a0,2,8,-12,-7,1, 0e0,2,8,-7,13,1,0dc,2,8,11,-1, 2,0e,8,-11,-3,0 *08BCA,41,primitive 2,0e,8,-7,-15,2,8,1,14,1,0c0, 2,8,-11,-6,1,0a0,2,8,-12,-8,1, 0e0,2,0e5,1,0ec,2,063,1,8, 2,-3,2,06f,2,0e,8,-11,-3,0 *08BE0,81,primitive 2,0e,8,-7,-15,2,8,3,9,1,080, 2,8,-10,-4,1,0c0,2,8,-13,-5,1, 0e0,2,8,-7,9,1,09c,2,8,-1,14, 1,8,-6,-5,2,8,8,5,1,8,6,-5, 2,8,-11,-6,1,8,1,-3,2,8,7,3, 1,8,-1,-3,2,8,-3,15,1,01a,2, 012,1,01e,2,8,10,-14,2,0e,8, -11,-3,0 *08C8E,44,primitive 2,0e,8,-7,-15,2,8,3,15,1,090,0fc,038, 2,8,-6,11,1,090,2,8,-9,-5,1, 090,2,096,1,0ac,8,-1,-3,01a,01a,2,8, 18,0,2,0e,8,-11,-3,0 *08CB3,61,primitive 2,0e,8,-7,-15,2,042,1,02b,02a,018,2, 0d0,1,012,034,2,069,1,01e,040,2,8, -8,6,1,02b,2,8,4,5,1,08c,2,8, -3,8,1,03c,2,8,-5,3,1,0e0,2,8, -12,5,1,0a0,2,8,6,-14,2,0e,8, -11,-3,0 *08CC3,34,primitive 2,0e,8,-7,-15,2,0c1,1,06c,0a8,064,0a0,2,8, -5,9,1,09c,2,8,-7,5,1,0e0,2,8, 4,-11,2,0e,8,-11,-3,0 *08CFB,22,primitive 2,0e,8,-7,-15,2,0d2,1,0cc,0c8,0c4,0c0,2,8, 5,-13,2,0e,8,-11,-3,0