logo资料库

中文取模教程(Chinese_Font_Create_for_e-Paper).pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
e-Paper 中字符显示 e-Paper 显示中文字符 微雪电子微雪电子墨水屏自推出以来经常有客户问到如何显示中文,今天特意写一个教 程展示如果显示中文。字符显示显示实际上也是图片的显示,一个字符就是一张很小的图片, 字符串显示,就是有一个个字符的图片拼接在一起显示一个字符。 英文字符显示原理 废话少说,在显示中文之前让我们来了解一下 ASCII 码是如何显示的。下面以 2.13inch e-Paper HAT 的 STM32 程序为例讲解。 要显示字符首先要有字体,示例程序中 Fonts 目录下的文件就是对应不同的字体,打 开文件可以到看一堆数据。 每种字体都有一个结构体分别存储字体的信息。结构体包括数组指针,字体宽度,字体 高度。 1 / 15
e-Paper 中字符显示 以上字体是在 stm32 官方的示例程序复制过来的。是 ASCII 的字体,下来我们来讲解 一下我们怎么制作字体。下面图片是 Font8 字体"A"字符的字模,我们可以用字模软件来得 到 A 字符的数据。 字体数据就是用字模提取软件,将字模按照横向取模或者纵向取模,将逐个像素点用数 组表示。要显示“A”字符就找到“A”字符的数据然后将字模逐点显示出来就行了 2 / 15
e-Paper 中字符显示 这里需要注意一点就是红框这里,字体数组是按照 ASCII 的顺序存储的,第一个字符就 是空格 " ",而每个字符的数据大小是相同的。所以将 A 的 ASCII 码减去空格键的 ASCII 码,这样就可以找到字符"A"的数据开始位置。 字符串显示就是将一个个字符显示出来。 字符集 好了,我们已经大概知道怎么显示英文字符了。在显示中文之前还需要了解字符集。 什么是字符集呢?字符集就是所有字符的集合,ASCII 码就是一个字符集,ASCII 只有 0~127 个字符。用一个字节表示。只能显示英文,不能显示中文。 3 / 15
e-Paper 中字符显示 所以要显示中文就必须使用中文的字符集。中文比较常用的字符集是 GB2312 ,GBK。 GB2312 是对 ASCII 的中文扩展。兼容 ASCII。而 GBK 是 GB2312 的扩展,兼容 GB2312, 能显示更多的中文。有兴趣的同学可以网上一下这两个字符集的定义,如果要显示中文我们 只需要知道。ASCII 码用一个字节表示,中文用两个字节表示。第一个字节小于 127 的字符 就是 ASCII 码,占一个字节。第一个字节大于 127 的字符就是中文,由两个字节连在一起 表示一个汉字。由于中文需要两个字节,首先要将 keil 设置为 GB2312 编码方式.点击 Edit ->Configuration 打开配置窗口,选择 GB2312 编码。 4 / 15
e-Paper 中字符显示 制作中文字符 要显示中文字符,我们首先要制作中文字体。打开字体取模软件,在“参数设置”中点 击“字体输入区字体选择”选择对应的字体和大小。 5 / 15
e-Paper 中字符显示 其他选项可以设置取模方式。 在文字输入区输入要取模的汉字,按 Ctrl + Enter 结束输入 在“取模方式”中选择 “C51 格式” 就可以得到字模数据。 6 / 15
e-Paper 中字符显示 要将中文字库添加到程序中,首先要用一个结构体存储字体信息。 和 ASCII 码 sFONT 结构体类似,中文的结构体为 cFONT,包含有字摸数据指针,字 符个数,字体宽度,字体高度,还有一个 ASCII 字体宽度。而中文数据是 CH_CN 结构体数 组构成,每个字符包含“汉字内码索引”和“点阵码数据”。索引是为了找到这个字符的数 据,点阵码数据就是要显示的数据,这个是字模提取软件得到的。 7 / 15
e-Paper 中字符显示 下 面 就 是 微 软 雅 黑 12 号 字 体 的 结 构 体 变 量 , 包 含 这 个 字 体 的 信 息 。 其 中 Font12N_Table 为数据指针,字符个数为 sizeof(Font12CN_Table)/sizeof(CH_CN),ASCII 字符宽度为 11,汉字宽度为 16,字体高度为 21. 由于微软雅黑字体中,ASCII 字符的宽度会比汉字小一点,所以为了显示好看,设置两 种宽度。 显示中文字符 字体已经制作好了,那么接下来显示了。在程序中添加一个中文字符函数函数。 8 / 15
分享到:
收藏