本篇内容主要讲解“嵌入式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点阵显示汉字的方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!