目录

一、概述

1.1 案例介绍

1.2 适用对象

1.3 案例时间

1.4 案例流程

1.5 资源总览

二、环境和资源准备

2.1 准备开发环境

2.2 安装依赖

2.3 下载工具源码

2.4 华为云码道配置SKILL

三、chinese-font-ssd1306工具的介绍

3,1 工具简介

3.2 工具结构说明

3.3 基本使用方法

命令行参数

基本示例

3.4 多字体支持

3.5 生成的 C 代码结构

3.6 支持的字体列表

3.6.1 中文字体

3.6.2 英文字体

四、在WS63开发板上显示中文字体

五、常见问题

5.1 字体显示方向错误

5.2 如何减少数据量


本文首发于华为云论坛:https://bbs.huaweicloud.com/forum/thread-0212721077018358303-1-1.htmlhttps://bbs.huaweicloud.com/forum/thread-0212721077018358303-1-1.html

一、概述

1.1 案例介绍

本案例将基于AI IDE华为云码道(CodeArts)代码智能体构建在星闪开发板上显示中文字体的助手。本案例所介绍 chinese-font-ssd1306 skill工具将系统字体转换为 SSD1306 OLED 显示屏所需的点阵数据 C 语言代码。该工具支持中英文混合显示,可自定义字体名称、大小和风格,特别适合嵌入式 OLED 显示项目开发。通过本案例,开发者可以快速为自己的嵌入式项目生成美观的中文字体显示数据。理论上,该工具不仅能够用于星闪WS63开发板,也可以用于其他MCU。

1.2 适用对象

  • 企业开发者
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计30分钟。

1.4 案例流程

说明:

  1. PC本地下载安装AI IDE,完成Windows版AI IDE华为云码道(CodeArts)代码智能体安装部署。
  2. 在AI IDE华为云码道的项目级SKILLs配置chinses-font-ssd1306 ,构建中文字体转换助手;
  3. 与华为云码道对话,调用chinses-font-ssd1306,完成中文字体的显示。

1.5 资源总览

本案例使用的资源均为免费资源。

资源名称 规格 单价(元)
华为云码道(CodeArts)代码智能体 通用体验版 免费
chinese-font-ssd1306 工具 开源工具 免费

二、环境和资源准备

2.1 准备开发环境

参考案例《AI IDE华为云码道(CodeArts)代码智能体安装部署》完成华为云码道(CodeArts)代码智能体Windows版AI IDE安装部署。

参考文档HiSpark Studio插件版本环境搭建构建星闪WS63开发板的开发环境。

2.2 安装依赖

chinese-font-ssd1306 工具依赖 Python 3.x 和 Pillow 库,执行以下命令安装:

pip install Pillow

2.3 下载工具源码

通过 git 下载源码到本地,代码仓地址:https://gitcode.com/zealsoft/chinese-font-ssd1306.git

git clone https://gitcode.com/zealsoft/chinese-font-ssd1306.git
cd chinese-font-ssd1306

2.4 华为云码道配置SKILL

  1. 在码道右上角打开设置,进入设置界面后选择技能与规则,在项目级板块下技能的右侧点“+ 新建”。编辑技能名称(样例:chinese-font-ssd1306),然后点确定。

  2. 点确定后,系统自动在当前目录下创建.codeartsdoer/skills/chinese-font-ssd1306目录,并在该目录下新建了一个SKILL.md文件。

  3. 将“2.3 下载工具源码”中下载文件替换/拷贝到.codeartsdoer/skills/chinese-font-ssd1306目录下,系统将自动加载至项目级SKILL。

三、chinese-font-ssd1306工具的介绍

3,1 工具简介

在 SSD1306 OLED 开发中使用汉字点阵转换工具,核心目的是解决嵌入式设备的显示资源限制,实现高效、精准的图形 / 文字渲染,具体原因可分为以下 4 个核心维度:

嵌入式系统(如 WS63、STM32、ESP32、Arduino)的 Flash 和 RAM 资源通常十分有限(KB 级或 MB 级):

  • 一个 16x16 的汉字,转换为点阵后仅占用 32 字节(16×16÷8),而如果保存整个字库可能需要数M字节;
  • 点阵数据为纯静态数组,可直接存入 Flash 中,运行时无需动态分配内存,避免内存溢出风险。

SSD1306 屏幕分辨率低(常见 128×64),点阵工具可自定义取模规则(如列行式、水平扫描),确保生成的数据与驱动库完全兼容,避免文字 “错位”“颠倒”。• 点阵工具支持批量转换,可一次性生成多个汉字的点阵数据,直接复制到代码中使用;生成的 C 语言数组可跨平台复用(如从 WS63 移植到 STM32),无需因硬件平台更换而重新调整显示逻辑。

点阵转换工具本质是 “通用字体→嵌入式专用点阵” 的桥梁,其核心价值是在嵌入式系统的资源限制与显示需求之间找到平衡,既保证了运行效率,又简化了开发流程,是 SSD1306 等点阵式 OLED 开发的必备工具。

3.2 工具结构说明

项目结构如下:

chinese-font-ssd1306/
├── README.md                   # 说明文档
├── SKILL.md                    # Skill 主文档
├── scripts/
│   └── font_converter.py       # 字体转换脚本
└── references/
    └── ssd1306_guide.md        # SSD1306 技术参考

3.3 基本使用方法

命令行参数

参数 说明 默认值
-t, --text 要转换的文本 -
-i, --input 输入文本文件路径 -
-o, --output 输出 C 代码文件路径 font_data.c
-f, --font 字体名称 宋体
-s, --size 字体大小(16-64) 16
--bold 使用粗体 False
--italic 使用斜体 False
--prefix 数组名前缀 font_data

基本示例

# 转换文本,使用默认宋体 16x16
python scripts/font_converter.py -t "你好世界" -o font_data.c

# 使用微软雅黑,32x32 大小
python scripts/font_converter.py -t "你好世界" -f "微软雅黑" -s 32 -o font_data.c

# 使用粗体
python scripts/font_converter.py -t "你好世界" --bold -o font_data.c

3.4 多字体支持

当需要在同一项目中使用多种字体时,使用 --prefix 参数为每种字体指定不同的前缀:

# 生成宋体字体数据
python scripts/font_converter.py -t "春暖花开" -f "宋体" -s 32 --prefix "songti" -o font_songti.c

# 生成仿宋字体数据
python scripts/font_converter.py -t "安康顺遂" -f "仿宋" -s 32 --prefix "fangsong" -o font_fangsong.c

3.5 生成的 C 代码结构

生成的 C 代码包含以下部分:

  1. 字符信息结构体:包含 Unicode 编码、宽度、高度和数据指针
  2. 字符数据数组:每个字符的点阵数据
  3. 字符索引表:所有字符的查找表
  4. 查找函数:根据 Unicode 编码查找字符数据

示例代码结构:

// 字符信息结构体
#ifndef CHARINFO_DEFINED
#define CHARINFO_DEFINED
typedef struct {
    uint16_t char_code;    // Unicode编码
    uint8_t width;         // 字符宽度
    uint8_t height;        // 字符高度
    const uint8_t *data;   // 点阵数据指针
} CharInfo;
#endif

// 字符数据数组
const unsigned char songti_char_0000[128] = { ... };

// 字符索引表
const CharInfo songti_chars[4] = {
    { 0x6625, 32, 32, songti_char_0000 },
    ...
};

// 查找函数
const CharInfo* songti_find_char(uint16_t code) { ... }

3.6 支持的字体列表

3.6.1 中文字体

字体名称 文件名 说明
宋体 simsun.ttc 默认字体,适合一般显示
黑体 simhei.ttf 粗体风格,适合标题
微软雅黑 msyh.ttc 现代风格,显示清晰
楷体 simkai.ttf 手写风格
仿宋 simfang.ttf 传统风格

3.6.2 英文字体

字体名称 文件名 说明
Arial arial.ttf 无衬线字体
Times New Roman times.ttf 衬线字体

四、在WS63开发板上显示中文字体

  1. 返回华为云码道对话界面,输入如下问题:“复制application\samples\peripheral\helloworld_oled到application\samples\peripheral\qingming,将qingming工程加入到系统的配置文件,使用chinese-font-ssd1306工具将显示内容改为宋体的“春暖花开”和仿宋体“安康顺遂”,均为32*32。”

  2. 等待码道自动生成。

  3. 进入HiSpark的系统配置页面,选中Qingming例程,并保存。

  4. 使用HiSpark的“编译”工具编译工程

  5. 使用HiSpark的“烧录”工具下载程序

  6. 程序烧录成功后,开发板会显示中文字体。

五、常见问题

5.1 字体显示方向错误

本工具生成**水平字节排列(Row-major)**格式的点阵数据。如果显示方向错误,请检查您的 SSD1306 驱动是否支持此格式。也可以让华为云码道修复显示代码以适应开发板驱动程序

5.2 如何减少数据量

解决方案:

  1. 只包含实际需要的字符
  2. 使用较小的字体大小
  3. 分多个文件按需加载

【案例共创】【第10期】华为云码道(CodeArts)代码智能体 + SKILL完成应用开发/调试实践https://bbs.huaweicloud.com/forum/thread-0212720921179660512-1-1.html

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐