• 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”

  • 相关阅读:
    Java编程的逻辑 (42)
    Java编程的逻辑 (41)
    Java编程的逻辑 (40)
    Java编程的逻辑 (39)
    Java编程的逻辑 (38)
    Java编程的逻辑 (37)
    Java编程的逻辑 (36)
    Java编程的逻辑 (35)
    Java编程的逻辑 (31)
    web前端学习(二)html学习笔记部分(6)--fileAPI
  • 原文地址:https://www.cnblogs.com/einstein-2014731/p/5833688.html
Copyright © 2020-2023  润新知