AWTK是基于C語言開發(fā)的跨平臺(tái)GUI框架。AWTK使用經(jīng)驗(yàn)系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案。
AWTK如何裁剪字庫
在AWTK應(yīng)用開發(fā)過程中可能會(huì)遇到添加了某個(gè)字符但是顯示不出來,比如攝氏度符號(hào)“ ℃ ”,這種情況有可能是字庫文件被裁剪不完整的問題。本章節(jié)將以此為例介紹遇到這種情況的解決方法。
字庫裁剪與還原
字庫裁剪是指在一個(gè)原本完整的字庫文件可能用不到那么多字符數(shù)據(jù),于是將用不到的字符數(shù)據(jù)裁剪,保留需要的字符。在AWTK中,字庫裁剪是借用Python腳本實(shí)現(xiàn)的,AWTK不僅提供了裁剪功能,同時(shí)也提供了還原功能,可以將使用AWStudio裁剪后的字庫還原成完整的字庫。
添加保留的字符
首先打開AWStudio的“項(xiàng)目設(shè)置”-“主題設(shè)置”界面,在左側(cè)主題的字體列表選擇需要裁剪的字體后,再到右側(cè)“保留的字符”編輯框編輯需要裁剪的字符。
上面的例子由于是缺少“℃”字符,因此只需要將它添加到“保留的字符”編輯框內(nèi),前提要確保原本的字體文件有這個(gè)字符的字模。
圖?1?AWStudio項(xiàng)目設(shè)置添加裁剪字符
還原與裁剪字體
修改設(shè)置后保存并返回AWStudio主頁面,在左下角資源管理器找到上方修改的字體,并依次點(diǎn)擊“還原字體”和“裁剪字體”兩個(gè)按鈕。此時(shí)前面添加的“ ℃ ”符號(hào)便可正常顯示。
圖?2?重新還原與裁剪字體
如何在AWTK使用點(diǎn)陣字
AWTK在顯示矢量字體前需要解碼,這個(gè)過程會(huì)有性能消耗,因此在一些性能比較低的平臺(tái)中解析ttf矢量字體可能會(huì)耗時(shí)比較久,此時(shí)可以選擇使用點(diǎn)陣字的形式顯示。
點(diǎn)陣字在顯示時(shí)無需進(jìn)行解碼,加載速度相比較矢量字體更快。相應(yīng)的,由于點(diǎn)陣字需要提前解碼好,所以會(huì)占用較大空間,因此這個(gè)方案相當(dāng)于用空間換時(shí)間。本章節(jié)將介紹如何在AWTK中使用并顯示點(diǎn)陣字體。
首先,在AWStudio打開“項(xiàng)目設(shè)置”,將設(shè)置中的資源打包方式改為"文件+常量",資源的常量格式修改為帶有"位圖數(shù)據(jù)"的選項(xiàng)。
圖?3?修改資源打包方式與資源常量格式
接著再到“主題”設(shè)置頁面,將裁剪格式設(shè)置為“Bitmap”,再根據(jù)實(shí)際情況選擇字模每像素的位數(shù)、保留的字號(hào)、以及保留的字符。
圖?4?主題字體相關(guān)設(shè)置
在AWStudio點(diǎn)擊“打包”按鈕等待資源打包結(jié)束,在工程字體資源目錄(res/assets/default/inc/fonts)看到.data的文件代表打包點(diǎn)陣字體資源文件成功。
最后在編譯awtk與程序時(shí)需要進(jìn)行下面操作才能啟用點(diǎn)陣字體:
定義 WITH_BITMAP_FONT 宏;
關(guān)閉 WITH_TRUETYPE_FONT 宏。