由于 Unicode 提供了大字符集,所以一种 Unicode 字体就能支持所有语言和平台。实际上,Unicode 形定义文件在格式和语法上与普通形定义文件相同。
主要的区别在于字体标题的语法,如下所示:
*UNIFONT,6,font-nameabove,below,modes,encoding,type,0
font-name、above、below 和 modes 参数与常规字体中的参数一样。余下的两个参数定义如下:
- encoding
字体编码。使用下列整数值之一:
0 Unicode
1 紧缩的多字节 1
2 形文件
- 类型
字体内嵌信息。指定字体是否经过授权。授权字体不能修改或交换。按位编码的值可以相加。
0 可以内嵌的字体
1 不能内嵌的字体
2 内嵌时为只读
另一个重要区别是代码 7 子形引用的处理。如果形说明包含一个代码 7 子形引用,代码 7 后的数据将被解释为双字节值。这将影响形说明标题中的数据字节 (defbytes) 总数。例如,下列形说明是在“romans.shp”文件中包含的:
*00080,4,keuroRef 7,020AC,0
标题中的第二个字段表示形说明中的字节总数。如果用户不将其和 Unicode 字体说明一起使用,则可能使用三个字节而不使用四个字节,但这将导致在编译 SHP 文件时发生错误。尽管用户引用的形编号不在双字节范围内(小于 255),但编译器仍对该值使用双字节,因此用户必须在标题中计算。
在 Unifont 形定义和普通形定义之间的另一个区别是形的编号。程序提供的 Unifont 形定义使用十六进制形编号,而不使用十进制编号。尽管不是必须使用十六进制编号,使用它可以更加方便地交叉参考具有 U+ 控制字符值的形编号。