您好,登录后才能下订单哦!
本篇内容主要讲解“嵌入式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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。