Yidao Cai Home Page
Contact me

浅谈“汉字点阵字库(HBF)描述文件”格式标准


26/6-93
浅谈“汉字点阵字库(HBF)描述文件”格式标准

蔡依道

许多使用中文软件的朋友可能都有过这样的体验,几乎所有的软件都带有一套字库。尽管这些字库大多是相互衍生出来的,最初出处可能相同,但一般却不能相互替换,比如大家熟悉的ZWDOS和南极星(NJSTAR)都采用cclib.16,但由于两个cclib.16间的细微差别,二者不能互换使用。这种状况给中文软件的写作,存储和使用都带来不便。软件作者要选择字库,FTP处要存放多套相互重复的字库,更苦的还是用户:当想试用某一新的软件时,必须同时装入一套新的字库,而自己有限的磁盘空间常常导致这种愿望不能满足。

正是由于以上问题的困扰,在ifcss.org FTP处帮助整理软件的王笑飞,英国的吕宇朝,以及作者本人经过几番争论之后,都认为有必要采用某种统一的格式。王笑飞又与其他软件作者联系,以期共同探讨这一问题。结果发现,李枫峰,庞民治,杨波,杨振富和张永光等也注意到这一问题,并于去年十月进行了富有成效的讨论。看来大家真是不谋而合。于是新的一轮讨论又展开了。这样,由香港科技大学的庞民治执笔起草,大家竞相献计献策,经过无数争论与探讨,历时数月,五易其稿,最终形成了今天的“汉字点阵字库描述文件”格式标准(Hanzi Bitmap Font File Format),或称HBF标准(参与HBF标准成文过程的软件作者名单请见HBF标准第一版*)。

根据HBF标准,每个HBF字库(即符合HBF标准的字库),都包含一个HBF描述文件(HBF File, 或称HBF文件),比如cclib_24.hbf,以及一个或多个点阵字库文件(Bitmap Font Files),比如cclib.24。由于HBF字库中的点阵字库文件就是现有的字库,这里没有必要多作解释。关键在于HBF文件。HBF文件主要是用来描述该字库的名称,所用编码方式,字体,点阵大小,点阵字库文件名称等。以cclib_24.hbf为例,它描述一个24x24的宋体字库,采用国标(GB)编码,点阵字库文件为cclib.24等等。然而HBF文件最重要的功能之一是告诉应用程序某一字所对应的点阵信息(也就是用于打印或显示该字的图像信息)在哪个字库文件中以及具体在什么地方。这些具体内容涉及到中文打印及显示中较深层次的问题,超出本文讨论范围,有兴趣的读者可以参阅HBF标准第一版。

那么HBF究竟是如何解决前面提到的问题的呢?额外的HBF文件是否值得?下面以大家最常用的国标编码的宋体24x24字库为例作一说明。目前FTP上至少有两个版本:一个是cclib.24,另一个是cclib.j24。两个版本来源相同,所包含的信息完全一样,唯一差别是cclib.j24去掉了一些没有被编码的空间,因而少占用约40K磁盘空间。然而这一小小差异却导致使用cclib.24的软件不能使用cclib.j24,反之也一样。如果我们编写一个HBF文件,比如song24.hbf,告诉应用程序使用哪一个点阵字库文件以及每个字所对应的点阵信息在该点阵字库文件中的具体位置,当需要使用国标编码的宋体24x24字库时,应用程序就可以根据song24.hbf提供的信息,准确无误地得到每个字所对应的点阵信息,而不必管这些信息是从cclib.j24处或者cclib.24处得到。

这样,有了HBF,我们就能够以一个小小的HBF文件为代价,让各种应用程序(软件)使用任何符合HBF标准的字库。在使用多套软件时,就不用保存多套字库了,从而节省磁盘空间。也不用修改软件去适应现成字库,省去许多麻烦。

然而HBF的好处远不止以上所述。

许多计算机,比如Mac和PC,都已装有中文系统和中文软件。当使用其它软件时,再装入一套字库无疑会浪费宝贵的磁盘空间。有了HBF,其它软件只要通过一个小小的HBF文件(对于某些通用的字库,其HBF文件将来可以从FTP处获得),就可以利用原有的字库了。

假设某一字库文件中某些字的字形不令人满意,或者缺少某些字(特别是符号区字符),而另一字库文件中的对应字正是所需,这时只要对HBF文件略作修改,将含有这些字的区段“指向”另一字库文件,就能解决问题。HBF也给用户自行造字带来方便,用户可将自造字存放于另一字库文件中,而不必对原字库文件作任何修改。另外,尚若编码方案略有变化,支持HBF的软件不经修改即可用于新的编码方案。

对于软件作者来说,也有好处。由于有标准的应用程序接口(API),软件作者甚至不必考虑点阵信息如何取得,直接调用现成的子程序,从而简化软件设计。

值得指出的是,所有点阵字库文件都是二进制文件,因此要采用二进制方式(BINARY)来传输。而HBF文件本身是一个文本文件(text file),需采用ASCII方式传输。HBF文件可以用一般的文本文件编辑软件来编写或修改。

目前,已有许多软件作者表示他们将来推出或更新换代的软件将支持HBF。尽管HBF标准形成才不久,支持HBF的软件已经出现,本文作者的CNPRINT就是其中之一。相信今后会有越来越多的软件支持HBF。到那时,我们就不用再为不同的软件需要不同的字库而发愁了。

【承蒙王笑飞,庞民治提出宝贵修改意见,特此致谢】

* 有关HBF的全部讨论内容存放于ifcss.org:/software/fonts/d; HBF Standard V1.0及一些HBF文件存放于/software/fonts/HBF。 cai@neurophys.wisc.edu



This page was created on Feb. 24, 1995. Last modified on November 22, 2005.
(C) Copyright Yidao Cai 1995-2005