这几天一直在思考造字的问题。Unicode编码的E000-F8FF为自定义区,可以创建6400个自定义的字符。Windowsxp提供了True Type造字程序可以在自定义区创建字符。可是造字程序所造的字符在计算机之间交换使用并不是很方便,需要借助DOS命令。那么有没有其它的造字方法呢?既然E000-F8FF这个编码区域在系统中已经存在,那么是不是只要有相应的字体文件支持就可以显示出需要的字符呢?经过尝试,这个思路是可行的。
创建或者修改字体需要用专门的软件,我用的是FrontCreator。一般来说,没有必要重新创建一个字体文件,可以在已有的字体上加入新造的字符。
第一步,打开一个字体文件,如STKAITI.TTF(华文楷体)。注意:不要在c:windowsfonts下操作,因为操作可能会受限制,另外也防止破坏已经安装好的字体。把字体复制到其它目录中操作。
第二步,在当前字体文件中插入一个新字符(Insert>Glyphs),最好选after lastglyph,这样新造的字符全部集中在最后,查看起来比较方便。按OK后在预览窗后最后就会出现一个新的空白的字符。
第三步,在预览窗口点右键>Caption>WindowsMappings,这样在预览窗口就可以看到每一个字符的代码。
第四步,指定新造字符的代码。右键单击新增的字符,选properties,切换到mappings选项卡,在Value中键入代码,如e000,然后点Add(如果有弹出窗口则点yes)>OK。这时在新增的字符上就会显示代码e000。
第五步,编辑字体。双击新增的字符,进入编辑窗口。从右键菜单或Tools中选ImportImage,可以导入已有的图形文件。也可以选Paste将剪贴版中的内容粘贴进来。
这个过程可以借助造字程序。将需要的字符在造字程序中编辑好(不一定要保存,只是借助它创建字形而已),然后复制到FrontCreator正在编辑的字符中。
拖动四角调整字符大小,当鼠标指针变为十字形时可以移动字符的位置。根据我的观察,一般的汉字是在“左右”坐标(0—1000)、“上下”坐标(800—-200)这个区域。具体可以通过观察该字体其它已有字符的属性来确定。
第六步,设置字符间距。这一步我也不是很明白,一开始编辑完字体后,字符的间距很小,甚至几个字叠在一起,后来试着改了属性中的几个数字好象有效。从右键菜单中选properties,在General选项卡中设置leftside bea和advancewidth。前者通常可以设为100,后者根据我的观察可以按此方法求出:右坐标-左坐标+200,如此例中是900-71+200=1029。
第七步,关闭字体文件或整个程序,保存修改过的字体文件。然后将修改后的字体安装到系统中。如果原来有华文楷体需要先删除,如果在字体文件夹中不能删除,可以将其拖到C盘其它位置,然后安装修改后的新字体。
第八步,测试。打开MSWord,将字体设为华文楷体,输入新造字符的代码(如此例中的e000),按Alt+X,将代码转换为字符,此时新造字符已经能够显示。再输入几个字符,比较一下字符的大小、笔画粗细、间距等。此例中新造字符稍大,可以再用FrontCreator修改一下。
总结,使用制作字体的方式可以利用Unidcode自定义区的码位创制新的字符。其优点是可以避免使用造字程序带来的导入、导出造字文件的不便,只要把修改后的字体安装到任何一台电脑都可以使用新造的字符。其缺点是只能与单一字体链接,因此可能造成新造字符在改变字体时不能正常显示。解决的方案是在几种常用的字体中都新造该字符,这样也可以使新造的字符能有不同的字体,从而避免使用造字程序时只有单一字体样式的问题。再有就是制作字体的软件操作不够简单,要使造的字符美观匀称不太容易(也许是自己还没掌握要领)。