STemWin显示汉字 — SD卡外挂XBF字库

转载注明出处  方法来自安福莱教程

 

1: 使用emWin自带小工具生成字库

 

(1)启动软件 选择4位抗锯齿

(2)根据需求选择字体类型和字体大小

(3)另存为XBF格式

 

2: 创建XBF字体

#include "DIALOG.h"
#include "font_cn.h"

FATFS fatfs;
GUI_FONT XBF_Font; 
FIL Fontfile;
FRESULT  result;
unsigned int bw; 
GUI_XBF_DATA XBF_Data; 


static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
  FIL *FontFile;
 
  FontFile = (FIL *)pVoid;
  
  result =f_lseek(FontFile, Off);
  if (result != FR_OK) 
  { 
    return 1; 
  }
  
  result = f_read(FontFile, pBuffer, NumBytes, &bw);
  if (result != FR_OK) 
  { 
    return 1; 
  } 
  return 0;
}


static void _ShowXBF(u8 * pname)
{
  result=f_mount(&fatfs,(const TCHAR*)pname,0);
  result = f_open(&Fontfile,(const TCHAR*)pname,FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);
  if(result != FR_OK) 
  { return; }
  
  GUI_XBF_CreateFont(&XBF_Font,                 // Pointer to GUI_FONT structure in RAM
                     &XBF_Data,                 // Pointer to GUI_XBF_DATA structure in RAM
                     GUI_XBF_TYPE_PROP_AA4_EXT, // Font type to be created
                     _cbGetData,                // Pointer to callback function
                     &Fontfile                  // Pointer to be passed to GetData function
                     );
}  

void Font_Init(u8 * pname)
{
   _ShowXBF(pname);
   GUI_UC_SetEncodeUTF8();
}

 

 

3: 使用文字小工具创建 TEXT

Font_Init("0:/FONT/KoPu.xbf");
  
  hItem=TEXT_CreateEx( 37, 160,ICON_TEXT_SIZE_X,ICON_TEXT_SIZE_Y,0,WM_CF_SHOW,TEXT_CF_HCENTER,GUI_ID_TEXT0, "IO输出");
  TEXT_SetTextColor(hItem, GUI_DARKBLUE);
  TEXT_SetFont(hItem,&XBF_Font);

 

这里特别注意的是 文件的编码格式选择UTF-8编码 要不显示会乱码

 

 

IAR环境下设置文件编码的方法:

 

第一种方法:菜单Toos->Options->Editor

第二种方法:在编辑器的编辑区点右键”Character Encoding“选项, 选择“Convert to UTF-8”

转载于:https://www.cnblogs.com/einstein-2014731/p/5833688.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值