引言
最近在做QT项目发现中文没法显示,于是百度QT嵌入式显示中文,基本上提示的都是把ttf字库转换为QPF(QT专门支持二进制的),发现这个qpf本身制作就很麻烦,按照网上的做法实实在在来了一边,发现编译一个qvfb都好麻烦了,还有makeqpf程序。qvfb属于x86用于给QT提供程序提供fb环境的。makeqpf不能直接在系统上面跑,必须依赖于系统fb才能运行。发现编译qvfb有两个问题:一个libpng需要安装,一个是配置成X86的。makeqpf和qvfb是两种不应的格式,及:
makeqpf是带-embedded x86选项的配置
qvfb是正常没有-embedded选项的配置
编译好后发现使用makeqpf的file加载fft有问题,没法加载。后面就不弄了。而且弄个出来的qpf文件只是固定大小的,不能缩放。不同字体大小还得定制多个qpf字库。后面想着qt应该可以加载ttf,搜索网络发现没有相关的介绍,于是就自己摸索了。于是有点心得,便记录一下过程。
freetype简介
freetype是完全免费,不用担心版权的问题,freetype支持ttf字库的加载,以及文字的提取。支持多种字体格式。为什想到freetype呢?原因是查看qt的配置选项里面有个-qt-freetype,加上之前自己利用freetype成功提取了中文字的点阵。于是就想到qt应该也支持的。于是就把该选项编译进去。
QT配置支持ttf字库选项:
配置好后,make,make install 就可以生成QT库,
事例代码:
修改一个demo尝试使用的是macmainwindow,这个简单,makefile要去掉苹果库的链接。
代码如下:
编译后,生成macmainwindow。
设置好QT运行环境变量,运行macmainwindow -qws即可出来显示中文的界面。
可以删除fonts下的很多字体,仅留下SourceHanSansCN-Regular.ttf这个字体,节省空间。
注意:
有可能这样子仍显示乱码,这个是由于你的C文件编码格式有关系,可以使用Notepad++修改C文件编码格式,使用UFT-8无BOM模式。保存后编译没有问题。