一个计算机文本处理系统输入击键输出图元(glyph),图元是在纸张或计算机屏幕上被组合的小图片。击键和图元一般不一致:
例如,如果系统能生成连体字(ligature),则典型的两个击键
<f><i>
将对应一个单一的图元。类似的,系统形状阿拉伯图元如果在合理的方式下(in
a reasonable manner),则多个不同的图元可以相应于一个单一击键。
通过中介的字符,从击键到图元的复杂转换规则通常被因素化为两个简单的转化。你可以把字符想象为存储的数据的基本单元,比如在你的文本编辑器的缓冲区中。而字符的定义是内在的特定于应用程序的,已经定义了许多标准化了的字符的总集(collection)。
一个编码的字符集是一个字符的集合,它与从叫做代码点(codepoint)的一个整数代码到字符的一个映射在一起。编码的字符集的例子包括 US-ASCII、ISO 8859-1、KOI8-R 和 JIS X 0208(1990)。
一个编码的字符集需要使用 8 位的整数来索引字符。许多早期的主机使用 6 位字符集,而对表意的书写系统则需要 16 位(或更多)字符集。
传统上,印刷者使用名词字型(typeface)和 fount。字型是特定的式样或设计,比如 Times Italic,而 fount 是给定大小的一个给定字型的铅铸的化身(incarnation)。
译注:fount - 英国人称一种尺寸字种包含大小写文字、数字、符号与该粗、斜等的整套字体。
数码字体存在于(come in)字体文件中。一个字体文件包含对生成给定字型的图元必须的所有信息,并且应用程序使用字体文件可以按任意次序访问图元信息。
数码字体可以由位图数据组成,在这种情况下它们被称为位图字体。它们也可以由对图元形状的数学描述组成,在着中情况下它们被称为可缩放字体。可缩放字体文件的公用格式有 Type 1 (有时错误的叫做 ATM 字体或 PostScript 字体)、Speedo 和 TrueType。
在数码字体中的图元数据需要以某种方式被索引。如何索引依赖于字体文件格式。在 Type 1 字体的情况下,图元用图元名字来标识。在 TrueType 字体的情况下,图元用对应于某个索引方案(通常是 Unicode --- 见后)的一个整数来索引。
X11 系统使用字体文件中的数据来生成字体实例,它是依据给定编码索引的给定大小的图元的总集。
X11 字体实例通常用叫做 X 逻辑字体描述(X Logical Font
Description - XLFD)的表示法来指定。XLFD 开始于一个横杠‘-’,并由用横杠分隔的十四个字段组成,例如:
有特殊意义的是最后两个字段‘-adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1
iso8859-1’,它指定字体实例的编码。
译者按:余补充的 XLFD 的更详细的描述。
X11 字体实例还可以用短名字来指定。不象 XLFD,短名字没有结构而是给字体实例的一个方便的名字。
由两个短名字有特殊的意义,它们被服务器特殊处理,并且如果它们叫这些名字的字体实例不能打开则服务器将不启动。它们是‘fixed’,它指定在要求的字体不能打开的时候使用的替代(fallback)字体,和‘cursor’,它指定用做鼠标指针的图元集合。
短名字通常实现为给 XLFD 的别名;‘fixed’和‘cursor’别名定义在
/usr/X11R6/lib/X11/font/misc/fonts.alias
Unicode (http://www.unicode.org) 是一个编码的字符集,它的目标是为所有的文稿(script),目前的和历史上的,唯一的标识所有的字符。尽管 Unicode 明显的不是被设计为一个图元编码方案,它通常被用做编码方案。
Unicode 是一个开放字符集,这意味着在任何时候都可以把代码点分配添加到 Unicode 中(但是一旦指定了一个分配则永不能变更)。故此,Unicode 字体将是稀疏的(sparse),并且只为 Unicode 的字符注册的一个子集定义了图元。
Unicode 标准与国际标准 ISO 10646 是平行定义的。在两个标准中的分配总是等同的,这个文档中使用的术语 Unicode 和 ISO 10646 是可互换的。
在用于 X11 的时候,Unicode 编码的字体应当把它的 XLFD
的最后两个字段设置为‘iso10646-1’。