字体和形文件 (SHX) 从形定义文件 (SHP) 编译而成。形定义文件可用文本编辑器或能将文件存为 ASCII 格式的字处理器创建或编辑。

每个形或字符的形说明语法都不考虑形说明的最后用法(用作形或字体)。如果形定义文件被用作字体文件,则文件中的第一个条目必须描述字体本身,而不是该文件中的形;如果第一个条目描述一个形,则该文件被用作形文件。

形定义文件的每一行最多可包含 128 个字符。超过此长度的行不能编译。由于程序忽略空行和分号右侧的文字,所以可以在形定义文件中嵌入注释。

每个形说明都有一个标题行(格式如下),以及一行或多行定义字节。这些定义字节之间用逗号分隔,最后以 0 结束。

*shapenumber,defbytes,shapenamespecbyte1,specbyte2,specbyte3,...,0

下表描述了形说明的各个字段:

shapenumber

文件中唯一的一个 1 到 258(对于 Unicode 字体,最多为 32768)之间的数字,前面带有星号 (*)。对于非 Unicode 字体文件,用 256、257 和 258 分别作为符号标识符 Degree_Sign、Plus_Or_Minus_Sign 和 Diameter_Symbol 的形编号。对于 Unicode 字体,这些字形以 U+00B0、U+00B1 和 U+2205 作为形编号并且是“Latin Extended-A”子集的一部分。

字体(包含每个字符的形定义的文件)的编号要与每个字符的 ASCII 码对应;其他形可指定任意数字。

defbytes

用于说明形的数据字节 (specbytes) 的数目,包括末尾的零。每个形最多可有 2,000 个字节。

shapename

形的名称。形的名称必须大写,以便于区分。包含小写字符的名称被忽略,并且通常用作字体形定义的标签。

specbyte

形定义字节。每个定义字节都是一个代码,或者定义矢量长度和方向,或者是特殊代码的对应值之一。在形定义文件中,定义字节可以用十进制或十六进制值表示。如果形定义字节的第一个字符为 0(零),则后面的两个字符解释为十六进制值。

,