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