您好,登錄后才能下訂單哦!
本篇內容主要講解“嵌入式Linux_Framebuffer_04點陣顯示漢字的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“嵌入式Linux_Framebuffer_04點陣顯示漢字的方法”吧!
中文的顯示與ASCII字符的顯示過程是一樣的
確定要顯示的漢字
在字庫中找到對應漢字的點陣數據
使用描點函數繪制漢字點陣數據 但是與ASCII字符顯示不同的是,漢字需要注意漢字的編碼方式。C代碼源文件的編碼方式和編譯出來的程序中的漢字所使用的編碼方式也是有差別的。 注意: 一般采用ANSI或者UTF-8編碼,而不采用UTF-16編碼,因為UTF-16編碼ASCII字符也是2個字節,此時其中一個字節就是0,在C語言中0表示字符串的結束容易引起誤會。
在編寫C程序的時,不論源碼使用的ANSI還是UTF8編碼,在編譯的時候可以使用 -finput-charset=GB2312 選項來告知編譯器源碼所使用的編碼方式,如果未使用此選項,GCC會默認源碼的編碼方式是UTF-8;另外可以使用 -fexec-charset=GB2312 來設置編譯出的可執行程序中的字符是UTF8編碼。如果源碼的實際編碼方式與-finput-charset所指定的不同,后者編譯出的可執行程序的編碼方式與-fexec-charset所指定的編碼不同,編譯器會進行編碼格式轉換的。
常用漢字的點陣字庫是HZK16。HZK16里每個漢字使用32個字節來描述,如下圖所示:
與ASCII點陣字庫一樣,32字節中每一位代表一個像素,值為1表示點亮,為0表示熄滅。
HZK16 中是以 GB2312 編碼值來查找點陣的,以中字為例,它的編碼值是0xd6d0。
0xd6表示區碼,表示在:0xd6-0xa1區 [每一個區中有94個漢字]
0xd0表示位碼,表示它是這個區里的第0xd0-0xa1個字符
區位碼從0xa1開始并不是從0開始是為了兼容ASCII碼。所以要顯示的"中"字,它是HZK16庫里第 (0xd6-0xa1)*94+(0xd0-0xa1) 個字符。 示例源碼
到此,相信大家對“嵌入式Linux_Framebuffer_04點陣顯示漢字的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。