現在要解決的問題是,嵌入式系統中經常要使用的並非是完整的漢字型檔,往往只是需要提供數量有限的漢字供必要的顯示功能。例如,乙個微波爐的lcd上沒有必要提供顯示"電子郵件"的功能; 乙個提供漢字顯示功能的空調的lcd上不需要顯示一條"短訊息",諸如此類。但是一部手機、小靈通則通常需要包括較完整的漢字型檔。
如果包括的漢字型檔較完整,那麼,由內碼計算出漢字字模在庫中的偏移是十分簡單的:漢字型檔是按照區位的順序排列的,前乙個位元組為該漢字的區號,後乙個位元組為該字的位號。每乙個區記錄94個漢字,位號則為該字在該區中的位置。因此,漢字在漢字型檔中的具體位置計算公式為:94*(區號-1)+位號-1。 減1是因為陣列是以0為開始而區號位號是以1為開始的。只需乘上乙個漢字字模占用的位元組數即可,即:(94*(區號-1)+位號- 1)*乙個漢字字模占用位元組數,以16*16點陣字型檔為例,計算公式則為: (94*(區號-1)+(位號-1))*32。漢字型檔中從該位置起的32位元組資訊記錄了該字的字模資訊。
對於包含較完整漢字型檔的系統而言, 我們可以以上述規則計算字模的位置。
但是如果僅僅是提供少量漢字呢?譬如幾十至幾百個?最好的做法是:
定義巨集:
# define ex_font_char(value)
# define ex_font_unicode_val(value) (value),
# define ex_font_ansi_val(value) (value),
定義結構體:
typedef struct _wide_unicode_font16x16
unicode;
#define chinese_char_num … /* 漢字數量 */
字模的儲存用陣列:
unicode chinese[chinese_char_num] =
}, },
}, }
}
要顯示特定漢字的時候,只需要從陣列中查詢內碼與要求漢字內碼相同的即可獲得字模。如果前面的漢字在陣列中以內碼大小順序排列,那麼可以以二分查詢法更高效的查詢到漢字的字模。 這是一種很有效的組織小漢字型檔的方法,它可以保證程式有很好的結構。 嵌入式系統
嵌入式開發的相關領域 搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關 領域包括 a 數字影象壓縮技術 這是嵌入式最重要最熱門的應用領域之一,主要是應掌握mpeg 編譯碼演算法和技術,如 pda 高精電視 機頂盒等都涉及mpeg高速解碼問 題。b 通訊協議及程式設計技術 這...
嵌入式系統
嵌入式系統就是計算機系統的一類,就是被塞進其他裝置的計算機作業系統。我的嵌入式老師只用了三個詞語就總結了嵌入式系統的精髓 專用的可裁剪的 計算機系統。包括嵌入式軟體開發的知識體系和背景 先說背景 計算機,領域內,知識體系,按層次分,可以分為 其中 此處,暫且不討論上層的純軟體,以及底層的硬體,只是簡...
嵌入式系統
硬體結構 軟體結構 作業系統 vxworks商用嵌入式系統的代表 嵌入式linux 採用的是linux的核心,大多數採用的是linux的微核心 微核心本身只提供一些最基本的作業系統功能,如任務排程 記憶體管理 中斷處理等,而類似於檔案系統和網路協議等附加功能則執行在使用者空間中 交叉編譯 交叉編譯 ...