汉字点阵生成器

把汉字栅格化为 8×8 至 32×32 点阵,支持横向/纵向扫描、MSB/LSB 位序、阈值与反色,输出 C 数组、十六进制、二进制或十进制字模。

免费在线工具
Loading…

使用说明

输入文字、选择点阵参数后,页面会实时生成可直接使用的字模数据。

  1. 在「输入文字」中键入一个或多个字符;多字时会出现字符按钮,点击可切换当前预览的字。
  2. 选择点阵大小(8×8、12×12、16×16、24×24、32×32)、扫描方向(横向按行或纵向按列)和位序(MSB First 或 LSB First)。
  3. 拖动二值化阈值滑块(1~254,默认 80);如果笔画与背景关系相反,可勾选「反色(笔画取反)」。
  4. 选择输出格式(C 数组、十六进制、二进制、十进制),在下方查看当前字数据与全部字符合并数据。
  5. 鼠标悬停点阵格子可查看它属于第几个字节;点击「复制当前字数据」或合并数据区的「复制」按钮复制结果。
  6. 「加载示例数据」会填入「好工具啊」、16×16、横向扫描、MSB First、阈值 80、C 数组;「清空」会清除输入。

字符由浏览器 canvas 使用本机中文字体绘制,再按块平均亮度二值化。不同电脑的字体不同,生成的字形可能有细微差异;文字不会上传。

功能介绍

  • 提供 8×8、12×12、16×16、24×24、32×32 五档点阵尺寸。
  • 横向扫描逐行输出,纵向扫描逐列输出;每行/每列占 ceil(尺寸/8) 个字节。
  • MSB First 时单元内第 1 个像素对应 bit7,LSB First 时对应 bit0。
  • 二值化阈值可调 1~254,按 RGBA 块的平均亮度(BT.601 加权)判断是否点亮,并支持整幅反色。
  • 输出 C 数组(带 Row/Col 注释和 uint8_t 声明)、十六进制、二进制和十进制四种格式。
  • 支持多字符分别取模,也可输出全部字符合并后的字模数组。
  • 预览中按字节着色,鼠标悬停可查看格子所属字节编号与当前值。
  • 栅格化与编码全部在本地完成,不需要上传文字。

使用场景

OLED 字库制作
为 0.96 寸等 OLED 屏生成 16×16 汉字点阵,按驱动库要求的扫描方向和位序导出 C 数组。
LCD 与点阵屏取模
给 12864 液晶或 LED 点阵屏生成单个汉字或多字合并字模。
单片机实验与课程设计
在 STM32、Arduino 等项目中快速获得可粘贴的字模数据,减少手动画点的时间。
学习字模编码格式
通过切换横向/纵向扫描、MSB/LSB 和输出格式,观察同一字形对应的字节变化。

常见问题

不同点阵尺寸分别产生多少字节?
每个扫描单元(行或列)占 ceil(尺寸/8) 字节,总字节数为尺寸 × 该值:8×8 为 8 字节,12×12 为 24 字节,16×16 为 32 字节,24×24 为 72 字节,32×32 为 128 字节。
12×12 为什么每行是 2 字节?
12 个像素无法整除 8,因此每行(或每列)向上取整为 2 字节,共 16 bit;超出 12 个像素的 4 个 bit 保持为 0。
横向扫描和纵向扫描有什么区别?
横向扫描按行取模,先输出第 0 行的字节,再输出第 1 行;纵向扫描按列取模,先输出第 0 列的字节,再输出第 1 列。需要与显示屏或取模软件的扫描方式一致。
MSB First 和 LSB First 应该怎么选?
取决于驱动芯片或点阵库的约定。MSB First 把单元内第 1 个像素放在 bit7(最高位),LSB First 放在 bit0(最低位)。选错会出现左右镜像或笔画错位。
阈值和反色分别有什么作用?
阈值决定灰度多少算点亮,默认 80;调高会让笔画更细,调低会让笔画更粗。反色会把点阵逐格取反,适合原本是黑底白字、但目标屏幕按亮像素显示的场合。
生成的字模能直接用到单片机上吗?
C 数组格式会生成 uint8_t 数组和 Row/Col 注释,但不同 LCD/OLED 的扫描方向、位序和页地址方式不同,仍需按屏幕数据手册核对;12×12、24×24 等尺寸的填充位也要确认控制器是否接受。