引言
最近在做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模式。保存后編譯沒有問題。
實驗結果:

