一、编译makeqpf
为了能够编译一个能正常保存汉字字体的makeqpf,在编译QT库时必须定义这个宏:
QT_TRANSFORM_VFB
并且不能定义下面这两个宏:
QT_NO_QWS_TRANSFORMED、QT_NO_QWS_SAVEFONTS
如果希望使用BDF字体,需要取消 QT_NO_BDF这个宏定义。
如果希望使用TTF字体,需要取消 QT_NO_FREETYPE这个宏定义。
QT的configure已经包含了一个典型的makeqpf配置,可以使用下面命令编译:
./configure -qconfig makeqpf [extra options]
make
make -C tools/makeqf
二、准备汉字字体文件
为了生成qt字体,我们需要先将字体复制到$QTDIR/lib/fonts/目录下。大部分汉字字体都是TTF字体,按小字号显示时通常会产生一定变形,并不好看,如果需要在嵌入式系统下使用QT,最好使用点阵字体。
http://sourceforge.net/projects/wqy/这里是一个开源的CJK点阵字体,提供了9、10、11、12点阵的黑体和普通体汉字点阵,采用的格式是pcf字体格式(可直接用于X11)。QT2的makeqpf并不支持pcf字体,我们需要将pcf转为bdf格式,在 http://www.tsg.ne.jp/GANA/S/pcf2bdf/这里提供了这个转换工具。
经过转换后,我们得到了所期望的12点阵和9点阵的BDF汉字库:wenquanyi_9pt.bdf wenquanyi_12pt.bdf,并将这两个文件复制到$QTDIR/lib/fonts/下。
三、生成QT使用的QPF汉字字体
编辑$QTDIR/lib/fonts/fontdir,添加如下两行:
unifont wenquanyi_9pt.bdf BDF n 50 90 u
unifont wenquanyi_12pt.bdf BDF n 50 120 u
然后先运行qvfb,接着运行makeqpf,如果makeqpf可以正常运行,那么我们会看到列表框中列出了fontdir中的所有字体列表,找到我们刚添加的unifont字体,鼠标点击,稍等几秒后即可看到这行文本的字体已经变成这种字体,并且已经在$QTDIR/lib/fonts目录下产生unifont_90_50.qpf、unifont_120_50.qpf这两个字体文件。当这两个文件存在时,再次点击列表框中的unifont字体,makeqpf会在控制台提示Already a ROM font.