关于《编览器》创作的语言学基础

     迄今为止,我们看得见、用得上的字库编辑程序,都是西方人编写的,如FontLAB、FontCreator、FontoGrapher、softy等,以FontLAB为代表(为论述方便,以下将“以西方拼音文字文化为基础编写的字库编辑程序”简称为“西拼字程”),自然也都以拼音语言文化为基础字符图形编辑理念、习惯和出发点。汉字作为大字符集象形文字,具有诸多西拼字程所不具有和不强调的特别之处。我们研发的程序针对中文特点。那么,我们在哪些方面解决了中文所关心的问题呢?

     西拼字程扫描生成字符矢量图像(glyph),并不关心其在em方阵中的位置。它们或者根据字符的原始图像大小,直接给入em方阵;或者将其初始为字(glyph)与字(glyph)的紧密连接。因为拼音文字来说,西拼字程更关心的是字距。拼音字母犹如中文的“部件”,只是这些“部件”横向一字排列而已,从而构成可以使用的单词。其字距宽窄与否,绝不仅仅是美观问题。更重要的是,如果字距不当,很有可能误会拼写的单词,至少会造成识别障碍,影响阅读速度。所以,几乎所有的西拼字程都有十分精细的字距控制。而对于西拼字程涉及语义方面问题的事情,对于汉字来说,几乎没有任何影响。这对汉字不啻是一致命的差异。

     汉语单字成意,结合起来也成意(这或许就是汉语双关语多,歧义也多的原因之一吧)。无论字距宽窄,都不能改变汉字和词汇的含义。甚至对字体编排的美观也产生不了多大影响。所以我们现在看到的所有汉字字库,都是同一字距宽度的。排版时,随着版面的需要,对字距进行调整,从而控制版面幅度。拼音文字一般不是调整字距,人家调整的是单词间距。

     由于汉语是大字符集,对于西拼字程来说是造字工作的不同细节,对汉字就需要分解为几个不同的工序。字体设计和字库制作对汉字而言本就不是一码事。说到在字库制作的美学要求上对汉字造成影响的,不是字距,而是字与字之间的相互呼应关系。那么,什么是“字与字之间的相互呼应关系”呢?这解释起来倒是一个颇费踌躇的书法美学问题。

     象形方块字决定了其之于拼音文字而言具有较高的独立性(文字相对独立于语言,这只汉语才有)。此亦汉字书法存在之基础。在书法里,字与字之间动态配合叫“行气”。通篇的,叫 “章法”。当一种字体的字符图像确定下来(字符图像的设计阶段完成)之后,汉字在不同语言重点(主谓宾定状补)、不同词性(名动形数量代)、不同语境、不同字重点强调和不同上下文环境中,每个字根据字形不同,其上下大小左右肥瘦,都不应是相同摸样。由于字库是固定不变的,所以处理汉字库只有两个办法,一个是把所有的字符图像都设计成呆板的“标准像”。都说宋体字是千锤百炼,说的就是宋体字经过N多种顺序的排列和修缮,日臻“怎样都好看”的地步。但是非专家做不到这一点(或不屑做到这一点),那么就需要在动态感和固定形状之间取一个“均值”,也就是综合平衡。

     凡汉字都有两个“重心”,一个是物理重心(字符图像黑色素矩形区对角连线交叉处),另一个是感觉重心。从书法角度来看,这两个重心一般不会也不应当绝对重合。随着不同行文的连续情况,每个字都需要有所微调。在手书(也就是我们所说的“率意字体”) 字稿里,由于书写人的主观注意力不可能长时间保持在同一水平上,所以,做成字库后,在自由排列状态下,字与字之间因这种“动态关系”总是有所偏差。在用这样的原稿制作字库时,不可能要求作者对于所有有偏差的重新书写(工作量太大)。实际上任何书法字库的制作都是一个道理。于是这就需要一个能够综合表现并进行调整修改的工具。

     看到这里或许有人会说:哦,这是你们“率意字体”的弊病,我们精密字库没这个。随随便便(率意)地写一下,没问题才怪。我们精密字库字稿(包括书法字稿)都不是写一遍两遍,物理重心和视觉重心是同一的,是经过了多少人多少遍的努力才完成的啊!其实,这种认识只对了一半。因为我们这里只说了动态关系,没说字体笔画的肥瘦和字形的大小。这些关系的调谐却都是在同重心情况下进行的。例如大家常用的“超粗黑”,就可以知道肥瘦大小的调谐有多重要了。

     顺便说一下拼音文字。拼音文字符近乎几何图形,又不独立使用,不存在什么“动态关系”(其传统书法里也没有相关要求)。拼音文字单词手书的特点在于字母间相互和谐搭配,根据各字母的字符图形不同,伴随着字距微调。这恰是各西拼字程精致再精致而又难以圆满达成的。一家一本难念的经,拼音文字的难处恐怕我们也难以详尽体会。可以这样说,汉字部件之间的关系是事先确定了的,不用字库程序操心。不过,如果字库设计程序深入下去,深入到使用简单方法设计全套汉字的时候,汉字程序的难度恐怕比西拼字程要难上N多倍,就像围棋程序要比国际象棋程序难上N多倍一样。

     由于字库技术(TrueType、OpenType等)天生囿于拼音文字的文化环境。想靠它达到汉字书法的要求不现实。对汉字来讲,字库技术只能做到基本字形特征的准确表达。有的字库好看,有的不行,说明除了字符图形本身的设计因素外,更重要的在于是否注重了字与字之间动态呼应关系的处理(西拼字程当然未提供相关的编辑方式)。所以,如果我们想用西拼字程做一个好字库,要么靡费大量的人力物力——打印各种文档观察、比对,进而调谐;要么就是只管字符图像本身的美观,不管其他什么相互关系之类。

     现今来看,早期较好的字库都具有字符图像原始设计为方、长方或圆形的特点。这几种形状的图像放在一起容易和谐平顺,例如美术字(方形)、个别人的书法(圆形——舒体;扁方——刘隶)。除此之外,尤其是动态感比较强烈的,例如“行楷”等,令人难以满意。不是字不好看,而是拼在一块不好看,恰是因为忽略了汉字的动态关系。

     时至今日,要想彻底摆脱拼音文字的影响,更改字库格式已不可能。唯一的方法就是在其基础上改良。综合TrueType技术特点、汉字书法艺术特点以及现代印刷技术,包括此前古老的活字印刷经验,我们完全有理由这样看待汉字字库:其实字库和“活字”性质差不多。是一种在计算机系统里带索引、使用方便的“电子活字”。汉字书法字库最重要的就是字与字之间的和谐匹配。

     从设计制作角度看问题。作为书法字库,我们怎样制作它呢?人们一般不大会一次用一张纸,写一个字,扫描一次,命名一次,制作一次。因为字库作为一种字体,需要风格一致。人们更习惯使用传统纸笔,一次性连续书写所有字符图形,完成后统一扫描制作。此即是《分割器》和《编览器》研发的初发点,也是我们为什么需要将字符图像分割后调校的道理。每个字符图像的白背景就是em方阵。书法就是字符图像。通过所需排版的文字,实际调谐字与字之间的搭配关系。所见即所得,当即修改。只是我们资金有限,还未能将其直接做在在ttf里。

     其实这个工作在字库编辑程序里也可以做。它和在字库编辑程序里做有什么区别?拼音字库做完后,随便找一篇文章打印出来,即可了解该字库所有字符及其基本相互关系。例如我们常会看到这样只有34个字母的短句:the quick brown fox jumps over a lazy dog(棕狐跳过懒狗),却已包含全部26个字母。汉字就大不一样了。在中文历史上,从未有过任何一篇文章囊括所有的字符,甚至连基本字符都不能包含进来(《三国演义》才用了3800字)。用西拼字程可以观察所有字符,但是要想把握汉字错综复杂的相互关系却是做不到的。因为它只提供一种字顺方式(unicode或加上代码页936的GBK)。

     由于拼音(一般是英文)只有26个字母,不用打印亦可知其效果。即便要印,小字符集,初始化快,瞬间进入打印界面。而这对于大字符集的汉字库来说,简直就是一场灾难。进入打印界面的初始化速度极慢不说。即便发现问题了,需要修改,字在哪里?小字符集一目了然,直接观察点击进入编辑。大字符集字忒多,几屏也找不到。怎么办?只能大费周章地在UniCode编码表中先找这个字,再找对应的Unicode编码,再翻回头在字库里找到编码位置,这才能修改。修改后想再看看效果如何——还得从头再来一遍!

     经过十几年的使用,从书法早期字库里,大家可以明显感觉到其不成熟——大小不一、胖瘦不均、高低不匀、姿态不一等等。这就是使用西拼字程的后果。后来人们学乖了,知道多打印一些文档看效果进行调整了。可不能否认的是,用西拼字程看中文效果,不仅麻烦,还靡费甚巨,不环保也不科学。汉字库编辑修改必须得有自己的、任意顺序的、可重复的观察、编辑方式,籍此方便修改汉字的呼应关系。

     集做字网多年制作字库之经验,发明了“字名即字”的命名方式和《编览器》的编辑方式。相信这种根据汉字特点设计制作字库的软件是汉字库制作的最佳选择。应当承认,大家制作字库的主要目的还是为了出版。不论出什么,只要把文本准备好,用我们提供的程序和方法就可以很实际地表现出你所需要的一切。当然,由于大字符集的关系,我们也不能把所有的汉字都囊括进来,只能说可以比较方便地把你所需要的包含进来。至于其他字符,既可以等到需要时再行调整,也可以分步使用无含义的字符全集一次性调整,更可以将来在制作成ttf之后,用西拼字程调整。

     我们做的是率意字库。率意字库的特点是书法家凭感觉而书,只要书法好,不过多考虑重心一律、四角撑方等字库所特有的美术要求。这样就很难在各种上下文关系时都合适,就需要看各种上下文的编排效果,进而调整、修改。其实,不论率意字库还是精密字库,凡汉字字库(尤其是书法字库)都需要这种调整。汉字字库制作的主要功夫就在此。常有人称自己制作的是精密字库。精密字库比率意字库做得更多才对。至少应当准备各行各业的文本,否则何言精密?看到现在某些字库排出来的东西,重心不一、粗细不匀、轻重不一,几乎不像同一字体,可见字库功夫不到,抑或调整工具和方法不对。