新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 軍事指揮系統中VxWorks下漢字顯示技術

        軍事指揮系統中VxWorks下漢字顯示技術

        作者: 時間:2009-08-07 來源:網絡 收藏

        2.4 點陣存儲結構
        國家標準對庫結構做了統一規定:字庫分為94個區,每個區有94個,每個漢字有確定的區和位編碼,用兩個字節表示,第一個字節表示漢字所在的區號,第二個字節表示位號,即所謂的區位碼。每個漢字在字庫中以點陣字模形式存儲,一般采用16×16點陣、24×24點陣,每個點用二進制位(0或1)表示,對應在屏幕上出來就是相應的漢字。每個漢字都有惟一的區位碼,通過區位碼計算出漢字在字庫中的位置,從而確定漢字的字模。
        點陣漢字字庫C語言文件有固定的結構,分為三個部分:點陣屬性表、點陣信息描述總表和點陣信息表。點陣屬性表用來描述點陣漢字的字符結構和字模結構參數的結構體,包含參數有像素大小、字符名稱、字符家族名稱等,特別定義了指向點陣信息總表的數組指針,字體驅動程序利用這個指針尋找點陣信息總表。點陣信息描述總表 它是一個存放指向點陣信息表指針的動態數組,其元素個數取決于漢字點陣信息表的個數。
        點陣信息表點陣信息表以數組的形式表示,主要用來存儲漢字的GB2312碼(西文是ASCII碼)和詳細點陣信息。可以是一個表也可以是若干個表。把漢字按 GB2312編碼的頁分類,構建多個漢字分表,也可以把中西文裝在混合表里做成一個大表,西文字符被擴展成雙字節存儲。

        3 點陣漢字字庫實例
        自己開發點陣存儲、點陣獲取、點陣,改造WindML的雙字節或單字節函數,使其能判斷漢字碼,一旦判斷出漢字碼,則使用自己開發的點陣獲取、點陣顯示等把漢字顯示出來。該方法對點陣的操作更加靈活,適合非標準的點陣算法,或者當開發者已有成熟的點陣操作方法時,把該方法綁接到WindML上。
        不必理會WindML雙字節編碼機制,這里需要的是一個漢字的點陣字庫,這個點陣字庫不必按照WindML的雙字節編碼機制進行編碼,里面所存儲的只是漢字的點陣信息和區位碼信息,這個字庫可以通過從Windows中導出;由于不選用WindML的雙字節編碼機制,所以對于中關于如何控制打點以及顯示點陣字體驅動,并不需要具體了解;更重要的是擁有更大的靈活性,只需把自己所寫的漢字顯示函數綁定到WindML上面即可。因此這里必須要求自己寫點陣的存儲、點陣顯示、漢字顯示函數。做起來比較簡單,只要求了解漢字編碼的基本知識,即漢字雙字節編碼中,高、低字節的最高位都是為‘1’,而西文字符編碼中最高位為‘0’,利用這點來判斷所要顯示的字符是漢字還是英文。
        在設計開發過程中,在現有的西文字庫的基礎上進行修改,添加相應的字體參數和漢字的點陣信息,形成點陣漢字字庫文件uflhz12.c,uflhz16.c,uflhz24.c,以分別存儲12,16和24號宋體的字庫信息。這個過程用Windows編程來實現。
        以下是16號宋體字庫文件中的點陣信息表:



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 若羌县| 七台河市| 清涧县| 芷江| 基隆市| 德阳市| 常熟市| 茂名市| 土默特右旗| 铁岭县| 图们市| 千阳县| 云霄县| 岚皋县| 濉溪县| 策勒县| 双流县| 越西县| 城口县| 永城市| 澄迈县| 永福县| 大冶市| 德安县| 胶州市| 辉南县| 博野县| 双柏县| 蒲江县| 军事| 加查县| 永春县| 长治市| 连平县| 兴海县| 洱源县| 洛川县| 武城县| 瑞丽市| 宝鸡市| 大方县|