制作 qpf 字体,必须要qvfb与makeqpf,二者都运行在pc机上. qt4本身自带的makeqpf很好编译,但是它生成的是qpf2字体,qtopia2/3用不了,本文是记录使用qtopia3.3.8版本的编译qvfb和makeqpf工具。
一、编译qvfb
下载qt-x11-free-3.3.8.tar.bz2 ;
tar -xvf qt-x11-free-3.3.8.tar.bz2
cd qt-x11-free-3.3.8
由于qt-x11-free-3.3.8.tar.bz2有BUG。直接编译会报 ‘ptrdiff_t’不是一个类型名"的编译错误,需进行修改:
cd include
vi qmap.h添加
#include “stddef.h”
#include <cstddef>
保存退出
再在同样的路径下vi qvaluelist.h添加
#include “stddef.h”
#include <cstddef>
主要用strrchr函数时,从类型‘constchar*’到类型‘char*’的转换无效,新版本g++不支持报错了。
如果提示LSM,LICE错误,请安装相应的库文件 :sudo apt-get install libsm-dev:i386
如果编译时报 usr/include/jpeglib.h:26:62: 致命错误: jconfig.h:没有那个文件或目录,需要安装库文件sudo apt-get install libjpeg-turbo8-dev:i386
安装:
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
. /configure #低版本的直接make会有freetype2的一些头找不到的错误.
make
make -C tools/qvfb
二、编译makeqpf
tar -xvf qt-embedded-free-3.3.8.tar.bz2
cd qt-embedded-free-3.3.8
如果直接编译会报 ‘ptrdiff_t’不是一个类型名"的编译错误,需进行修改:
cd include
vi qmap.h添加
#include “stddef.h”
#include <cstddef>
保存退出
再在同样的路径下vi qvaluelist.h添加
#include “stddef.h”
#include <cstddef>
安装:
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -qt-gfx-qvfb -depths 4,8,16,24,32 #注意这里一定要加-qt-gfx-qvfb
make
make -C tools/makeqpf/
生成makeqpf
三、制作字库
拷贝simsun.ttc到qt-embedded-free-3.3.8的安装目录 tools/makeqpf/lib/fonts/下
编辑lib/fonts/fontdir, 添加
simsun simsun.ttc FT n 50 0 su 100,120,140,160,180,200,240
../qt-x11-free-3.3.8b/tools/qvfb/qvfb &
./tools/makeqpf/makeqpf
在出现的窗口中, 点击simsum所在的行,它就会生成对应的simsum的qpf字体
ls lib/fonts/simsun*
lib/fonts/simsun_100_50.qpf lib/fonts/simsun_140_50.qpf lib/fonts/simsun_180_50.qpf lib/fonts/simsun_240_50.qpf
lib/fonts/simsun_120_50.qpf lib/fonts/simsun_160_50.qpf lib/fonts/simsun_200_50.qpf