emwin 使用外部字库_emWin“移植全字库(GB2312或GBK编码)”

本文介绍了如何在emWin上实现GB2312或GBK编码字符的显示,通过移植全字库来支持中文汉字。涉及步骤包括复制文件夹、修改头文件、添加字体声明以及在代码中应用新字体。文章还提醒在STM32H7上需要注意的内存对齐问题。
摘要由CSDN通过智能技术生成

我总结了emWin实现中文显示的几种方案,如下表

实现方案编码方式存放媒介优点缺点适用范围建议

C格式Unicode内部Flash1、支持抗锯齿1、占用内部Flash适用于生成特定几个中文汉字

XBF格式Unicode任何存储介质1、支持抗锯齿

2、存放于任何储存介质1、采用UTF-8方式调用,需要把文件另存为UTF-8格式

2、需要将Unicode编码转化为UTF-8格式适用于非总线接口方式寻址的存储设备

SPI Flash、SD 卡、NAND Flash

SIF格式Unicode总线方式寻址的存储设备

SDRAM、SRAM、NOR Flash1、支持抗锯齿

2、比XBF方式稍快1、采用UTF-8方式调用,需要把文件另存为UTF-8格式

2、需要将Unicode编码转化为UTF-8格式适用于总线接口方式寻址的存储设备

SDRAM、SRAM、NOR Flash

矢量格式UnicodeSDRAM1、支持无损缩放1、消耗CPU和SDRAM资源巨大适用于要求字体矢量方式显示

移植全字库GB2312

GBK任何存储介质1、汉字操作方式与不用使用 GUI一样

2、对比XBF和SIF方式,不需把文件另存为UTF-8格式

3、存放于任何储存介质1、不支持抗锯齿

2、仅支持等宽字体适用于不习惯XBF和SIF操作方式

emWin 本身是不支持 GB2312 编码字符显示的,本文记录的是emWin“移植全字库(GB2312或GBK编码)”方案,即创建一种字体类型来实现GB2312 编码字符的显示,所采用的方式是早期 UCGUI3.98 时期遗留下来,但对那种方法进行了修改,以适合高版本 emWin5.xx 的使用。

1、将原emWin中文件夹【HanZi】复制到目标文件路径…\emWin\HanZi,如图1

图1

2、将原emWin中文件夹【fonts】复制到目标文件路径…\User\fonts,如图1

图2

3、在工程中建立文件夹及添加文件路径,添加完成,如图3

图3

4、修改emWin头文件【GUI_Type.h】,添加代码,如图4

图4

5、在文件【MainTask.h】中添加emWin字体的外部声明(这里使用的是宋体16),如图5

图5

6、把需要用到汉字的控件调用【&GUI_FontHZ16】,如LISTVIEW控件用到汉字显示,写成LISTVIEW_SetFont(hItem, &GUI_FontHZ16);并且屏蔽emWin自带的UTF-8界面方案,如代码1

/* 使能UTF-8解码用于汉字显示 */

//GUI_UC_SetEncodeUTF8();

代码1

注:在stm32h7上使用“移植全字库”方案一定要修改一个地方,具体见http://www.mazirong.com/?p=5308。原因是stm32h7硬件设计上的bug,不支持内存不对齐访问。

至此,编译0错误0警告,下载运行,可以在emWin上愉快的使用中文汉字了!如图6

图6

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值