• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > VxWorks5.5 平臺下矢量字體顯示的實現

    VxWorks5.5 平臺下矢量字體顯示的實現

    作者: 時間:2012-09-07 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/148448.htm

      WindML 分雙字節和單字節兩種方式,雙字節顯示是兩個字節作為編碼對字庫進行查詢,找到字符位圖并顯示;單字節顯示是單個字節作為編碼對字庫進行查詢,找到字符位圖并顯示。當英文字符顯示時,可以使用單字節顯示或雙字節顯示,當中文字符顯示或中英文混合字符顯示時必須使用雙字節顯示。

      VxWorks 下字體采用GB2312 編碼,中文字符編碼的每個字節都大于0x80,英文字符編碼都小于0x80,在進行雙字節顯示時,需要將單字節字符轉換成雙字節字符。在字符轉換時,先獲取整個字符串長度,再判斷每個字節是否大于0x80,如果小于0x80,則將單字節擴展成雙字節;如果大于0x80,則將這個字節與后個字節組合成一個雙字節;計算雙字節數并返回,如上圖2 所示。

    圖2 單字節字符轉換成雙字節字符。

    圖2 單字節字符轉換成雙字節字符。

      3.3 字體編碼轉換

       下漢字采用GB2312 編碼, 而FreeType 在處理漢字時只能識別UNICode 編碼,在處理漢字前需要將GB2312 編碼先轉換成Unicode 編碼,GB2312 與Unicode 的編碼轉換表采用二維數組保存數據,共有7000 多組對應項,如果采用遍歷數組的方式來進行編碼轉換,那么平均每個漢字編碼轉換需要做3000 多次的編碼比較,這非常影響漢字的處理速度。

      為了提高編碼轉換的處理速度,編碼轉換時采用折半查找方式來,使用折半查找需要先將GB2312編碼從小到大排列,每個GB2312 編碼對應一個Unicode 編碼。在使用折半查找時,先取first=0 end=數組長度,然后(first+end)/2 得到一個中間編號,再通過中間編號獲取相應的GB2312 編碼和顯示漢字編碼比較大小,如果中間值大,則將first=0 end=中間編碼組合再進行折半查找;如果中間值小,則將first=中間編碼 end=數組長度 組合再進行折半查找;如果相等,則將GB2312 編碼對應的Unicode 編碼提交程序處理。

      使用折半查找一個漢字最多只需查找13 次,大大提高了漢字Unicode 編碼的查找速度,加速了漢字顯示。

    矢量控制相關文章:矢量控制原理

    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 偏关县| 昌江| 琼中| 楚雄市| 酉阳| 九江县| 江西省| 定日县| 吴江市| 屏边| 阿巴嘎旗| 漯河市| 乐至县| 礼泉县| 平阳县| 沭阳县| 丹江口市| 长沙市| 泗阳县| 南安市| 洛浦县| 兴义市| 武乡县| 廉江市| 彰化市| 邵武市| 汶川县| SHOW| 平远县| 昭觉县| 遂川县| 驻马店市| 余庆县| 渝北区| 汤阴县| 苍南县| 邯郸县| 上高县| 宁河县| 大化| 康保县|