troff 字体文件格式
用途
指定 特罗夫 命令的描述文件。
描述
对于 特罗夫 命令支持并在系统上提供的每个摄影排字机,都有一个目录,其中包含用于描述摄影排字机及其字体的文件。 此目录名为 /usr/lib/font/devName,其中 Name 变量指定 phototypesetter 的名称。
troff 命令源目录中的 /usr/lib/font/devName 目录中的 ASCII DESC 文件描述了由 Name 变量指定的 phototypesetter 的特征。 此文件的二进制版本位于 /usr/lib/font/devName/DESC.out 文件中。 此 ASCII 文件的每一行都以标识特征的字开头,后跟相应的说明符。 以 # (井号) 开头的空白行和行将被忽略。
对于许多排版器,以一般方式支持已下载的字体。 这些字体的位图存储在 /usr/lib/font/devName/bitmaps 目录中。 每个字体大小对都存储在具有 字体名称-大小。人民报格式的名称的文件中。 例如:
B-24.pk 这些位图以 TeX 及其后处理器使用的 PK 压缩字体格式存储。 这些位图是很容易生成的现成程序,例如 METFONT ,或者很容易从其他形式转换而来。
除了位图文件外,每个字体字体还需要一个 特罗夫 字体文件 (如此处所述)。 在此文件的 unitwidth 字段中,给出了设备单元中每个字符位图的宽度。
DESC 文件的合法行如下所示:
| 项 | 描述 |
|---|---|
| 雷斯 数字 | 设备的分辨率 (以每英寸基本增量计)。 |
| 单位宽度 数字 | 点大小,字体描述文件中的所有宽度表都在其中给出。 特罗夫 命令会自动将宽度从 单位宽度 大小调整为它正在工作的磅值大小。 |
| 锡泽斯卡尔 数字 | 小数点大小的缩放。 该 数字 变量的 1 为 1。 锡泽斯卡尔 行当前未被使用。 |
| 纸张宽度 数字 | 纸张宽度 (以基本增量计)。 |
| 纸张长度 数字 | 纸张长度 (以基本增量计)。 |
| 比格斯特丰 数字 | 字体中的最大字符数。 |
| 大小 Number1 Number2... | 排字器上可用的点大小列表,以 0 结束。 |
| 字体 NumberName... | 初始字体的数量,后跟这些字体的 ASCII 名称。 例如: |
| 代码集 codesetName | 特定打印机或打字机的代码集,其中 CodesetName 是用于 iconv 命令的有效代码集名称。 指定的代码集用于在字体描述文件的字符集部分中定义字符项。 例如:troff 命令使用指定的 CodesetName 和当前语言环境所隐含的代码集来确定输入字符是否需要代码集转换。 图标 函数用于执行代码集转换 (如果需要)。 |
| 字符集 | 文件中的最后一个关键字本身在一行上。 下面是此设备的特殊字符名称的列表。 名称用空格或换行符分隔。 该列表可以根据需要进行调整。 此列表中的名称在字体描述文件中是不允许的。 |
| 霍尔 数字 | 水平运动的最小单位。 |
| 颠覆 数字 | 垂直运动的最小单位。 霍尔 和 颠覆 行描述水平方向和垂直方向上的运动之间的关系。 例如,如果设备在两个方向上以单个基本增量移动,那么 霍尔 和 颠覆 行的值 1 为 1。 如果垂直运动仅以两个基本单元的倍数发生,而水平运动仅以一个基本单元发生,那么 颠覆 为 2 , 霍尔 为 1。 |
对于 phototypesetter 支持的每种字体,还有一个 ASCII 文件,其名称与描述它的字体 (例如, R, 我, CW) 相同。 字体描述文件的格式为如下所示:
| 项 | 描述 |
|---|---|
| 名称 姓名 | 字体的名称,例如, R 或 CW。 |
| 内部名称 姓名 | 字体的内部名称。 |
| 特殊 | 设置标志以指示字体是特殊的。 |
| 连接 名称 ...0 | 设置标志以指示该字体具有连字。 连字列表如下,并以 0 (零) 结尾。 接受的连字为 飞飞飞飞飞飞。 |
| 空间宽度 数字 | 如果需要除缺省值 (一个 em 空间的 1/3) 以外的其他值,那么指定空间的宽度。 |
| 字符集 | 字符集必须出现在末尾。 字符集 字后面的每一行都描述字体中的一个字符。 每行具有以下两种格式之一:或 其中,值为Name字段是 DESC 文件中找到的列表中的单字节字符或特殊字符名称。 该Width字段为基本增量。 该Kerning如果字符在行下下降,那么字段为 1 ; 如果字符在字母上方上升,那么字段为 2`a'以及 3 (如果它同时上升和下降)。 该Code字段是发送给排版器以生成字符的数字。 对于 恩尔斯 字体,为Code字段可以是多字节序列。 对于扩展字符的输出设备的字体,Code字段可以是多字节序列,该序列以双引号开头和结尾。 在序列中,控制字符或非打印字符可以由以下转义序列表示: |
| \n | 生成一个新行。 |
| \r | 生成返回。 |
| \t | 生成选项卡。 |
| \b | 生成退格。 |
| \" | 生成一个双引号。 |
| \xdd | 生成十六进制数字,其中dd是两个十六进制数字。 |
| \ooo | 生成八进制数字,其中ooo是三个八进制数字。 第二种格式,Name ",用于显示该字符具有多个名称。 双引号表示此名称的值与前面的行相同。 该Kerning和Code字段的值时,将不使用Width字段是一个双引号。 此列表中不同字符的总数不应该大于 DESC 文件中 比格斯特丰 行的值。 |
由于在 DESC 文件上执行 makedev 程序,因此创建了 DESC.out 和 Font.out 文件。
为大字符集中字体的字体表的字符集部分提供了原型字符。 大型字符集中的大多数字符 (例如日语,中文和韩语字符集) 都具有相同的宽度。 这些原型字符指定具有不同字节长度的字符的宽度。 对于原型字符条目, kerning 和 code 字段不可用。 这些条目适用于字符集部分中未显式定义的所有字符。 假定通过原型字符处理的字符的打印机或排字器代码与通过 图标 函数转换后的字符的输入代码相同。 以下是原型字符的定义:
| 项 | 描述 | |
|---|---|---|
| X0 | 宽度 | 对于 csid (), 0 值 0 的所有字符的宽度。 |
| X1 | 宽度 | 未在其他位置定义的所有 1 字节字符的宽度。 |
| X1 | 宽度 | 对于 csid (), 1 值 1 的所有字符的宽度。 |
| X2 | 宽度 | 未在其他位置定义的所有 2 字节字符的宽度。 |
| X一 | 宽度 | 对于 csid (),返回值 一 的所有字符的宽度。 |
| X3 | 宽度 | 未在其他位置 3 的所有 3 字节字符的宽度。 |
| X4 | 宽度 | 未在其他位置定义的所有 4 字节字符的宽度。 |
例如,以下原型字符定义适用于日语字符集(包括 IBM-932 和 IBM-eucJP ):
X0 : alphanumeric characters
X1 : JIS level 1 and 2 Kanji characters in JISX0208.1990
X2 : Katakana characters
X3 : IBM selected characters文件
| 项 | 描述 |
|---|---|
| /usr/lib/font/dev名称/DESC.out 文件 | 包含 姓名 变量指定的 phototypesetter 的描述文件。 |
| /usr/lib/font/devName/bitmaps 目录 | 包含位图文件。 |
| /usr/lib/font/devName/Font.out 文件 | 包含 姓名 变量指定的 phototypesetter 的字体描述文件。 |