1. 工具简介与获取

FontCvt.exe 是一款非常实用的字体转换工具,主要用于嵌入式GUI开发(如emWin、ucGUI)中,将电脑上安装的TrueType等字体转换为可在嵌入式设备上使用的像素字体文件(通常是C语言源文件格式)。下面我为你整理了它的主要功能和使用方法。

  • 获取途径:如果您使用 STM32 等 ST 产品,通常可以在 STemWin 软件包中找到 FontCvtST.exe(路径例如:STemWin_Library_V1.2.0\Libraries\STemWinLibrary532\Software\FontCvtST.exe)

  • 授权说明:未经授权的版本生成的字体可能在字符周围有黑色边框。建议通过官方渠道获取或使用已获授权的版本。

2. 核心功能特点

FontCvt 支持多种字体生成格式和编码,满足不同场景需求。

  • 字体生成格式

    选项 说明
    Standard: 标准比例字体(如16x16),字符等高,宽度可能不同,像素信息为1bpp。
    Antialiased,2bpp/4bpp: 2位或4位抗锯齿,使字符边缘更平滑。
    Extended: 扩展字体,字符宽度和高度都可能不同,且不包含上下空行。
    Extended,framed: 带边框的扩展字体,在透明背景下也能清晰显示。
  • 编码格式

    选项 说明
    16 Bit UNICODE: (推荐) 支持中文等 Unicode 字符。
    8 Bit ASCII + ISO 8859: 适用于西欧字符。
    8/16 Bit SHIFT_JIS: 适用于日文字符。

3. 基本使用步骤(GUI界面)

以下是通过图形界面生成字库的典型步骤,以生成一个支持中文的16点阵宋体为例:

  1. 🛠️ 准备字体文件:确保系统已安装所需字体(如宋体)。可通过系统字体设置安装,或使用字体管理软件安装。
  2. 🚀 启动FontCvt:双击运行 FontCvt.exe 或 FontCvtST.exe。
  3. ⚙️ 设置字体类型与编码:
    • 在弹出窗口中,选择生成的字体类型(如 “Standard”)。
    • 编码务必选择 “16 Bit UNICODE” 以支持中文。
    • 点击 OK。
  4. 🔡 选择具体字体:
    • 在 “Font” 下拉框中选择目标字体(如 “宋体”)。
    • 在 “Size” 中输入字体大小(如 “16”,表示16点阵)。
    • 点击 确定。
  5. 🔤 选择所需字符(生成小字库关键):为了节省存储空间,可以只选择项目中需要用到的字符:
    • 点击菜单 Edit -> Disable all characters 禁用所有字符。
    • 有两种方式启用特定字符:
      • 方式一(手动选择):在字符表中拖动鼠标选择需要的字符块,或点击 Edit -> Enable range of characters 并输入Unicode范围(如基本数字字母范围 0000-007F)。
      • 方式二(推荐,通过文件导入):
        • 创建一个文本文件(.txt),在里面输入您需要的所有字符(例如:“安富莱电子123”)。
        • 将该文本文件另存为 “Unicode 编码”(或 UTF-16 LE 等)格式。
        • 在 FontCvt 中点击 Edit -> Read pattern file,选择刚才保存的.txt文件。软件会自动启用文件中包含的字符。
  6. 💾 保存字库文件:
    • 点击菜单 File -> Save As。
    • 选择保存类型为 “C File (*.c)”。
    • 文件名请使用英文命名(如 Song16.c),避免使用中文。

4. 在项目中使用生成的字库

  1. 添加文件:将生成的 .c 字体文件添加到您的嵌入式项目工程中。
  2. 声明字体:在需要使用的源文件中,使用 extern 声明字体变量(变量名通常在生成的.c文件头部可以找到):
    extern GUI_CONST_STORAGE GUI_FONT GUI_FontSong16; /* 假设生成的字体变量名为GUI_FontSong16 */
    
  3. 设置编码:在应用程序初始化时,启用UTF-8编码(因为FontCvt生成的Unicode字体在emWin中通常以UTF-8格式使用):
    GUI_UC_SetEncodeUTF8();
    
  4. 设置字体:在需要显示的地方设置该字体:
    GUI_SetFont(&GUI_FontSong16); /* 注意:这里需要对字体变量取地址 */
    GUI_DispString("安富莱电子"); /* 显示汉字 */
    

5. 注意事项与常见问题

  • 💡 字体编码:生成中文字库时,务必选择 16 Bit UNICODE 编码。
  • 💡 文本文件编码:通过 Read pattern file 功能读取的文本文件(.txt)必须是 Unicode 编码(如 UCS-2 Little Endian 或 UTF-16 LE),否则可能无法正确加载或报错。
  • 💡 文件名:保存生成的C文件时,文件名不要使用中文,以免出现意想不到的问题。
  • 💡 字符缺失:如果生成的字体在显示时某些字符显示为空白方块,检查该字符是否在生成字库时已被启用(即在字符选择范围内或模式文件中包含)。
  • 💡 命令行字体找不到:使用命令行时,如果提示 “Font does not exist”,请确保字体名称拼写完整准确,且该字体已为所有用户安装。

6. 总结

FontCvt.exe 是嵌入式GUI开发中生成定制字库的得力工具,特别适合需要显示外文或特殊字符(尤其是中文)的场景。通过有选择地生成仅包含所需字符的小字库,可以有效优化嵌入式设备的存储空间使用。

希望这份指南能帮助您顺利使用 FontCvt.exe!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐