前文介绍了字库名称的重要性,如何真正命名字库,还需要字库开发者在制作字库时仔细按照OpenType specification的说明设置name table,每个参数设置的正确与否直接关系到字库是否能正确工作于各个平台。概括来说,name table主要包含的信息有:用于不同平台不同语言的字体家族名称、字体风格、PostScript 名字、字体版本、版权信息以及自定义的样本文字等等,可以说在该表中定义了字库的“身份”信息,是非常重要的一个表。
name table的结构并不复杂, 它由五个基本元素组成:platform ID, character encoding ID, language ID ,name ID和string。platform ID是指支持的操作系统,它共有五种设置,其中Macintosh(platform ID =1)和Windows(platform ID =3)是必须支持的两个平台。character encoding ID 是指所支持的字符编码,它的设置这决定了string字符串的编码形式。language ID 是指平台语言,它决定了用什么样的语言表述string字符串,总体来说无论是哪种语言的字库,英文信息是必须的,除此以外,还需要根据字库语言的不同增设本地化的信息。name ID是指string字符串的含义,不同的ID代表不同的含义,比如name ID=0,表示string字符串设置的是版权(Copyright)信息;name ID=1,表示string字符串设置的是家族字体名称信息。最后的string字符串就是实际的设置了,它的用途和编码取决于前面四个元素的设置。
name table 中的各个元素互相关联,本身结构并不复杂,但是容易出错,为此 Ken Lunde 专门撰写了Tech Note #5149 OTF Name Tutorial 以帮助字库开发者更好地设置name table。
文中提到以下几块内容:
一、OTF CFF字库中PostScript Name的设置
二、Platform,Script & Language IDs的设置
三、Copyright 版权标志“©”的设置
四、Microsoft/Unicode 菜单中字体名称的设置
五、Microsoft/Unicode PostScript Name的设置
六、Macintosh 菜单中的字体名称的设置
七、Macintosh PostScript Name的设置
八、UniquelID 字符串的设置
九、Version 版本信息的设置
十、其它字符串的设置
最后还提到如何用AFDKO包装字库时,正确设置name table的参数。想信该技术文档对字体开发者会有所帮助。