t3486784401 发表于 2021-2-20 06:16:10

【初折腾】给开源墨水屏换字体,并自制预览工具

本帖最后由 t3486784401 于 2021-2-20 06:13 编辑

首先感谢版主的精美作品,开源墨水屏有了比较科幻的功能和设定。
按照之前折腾盖革计的流程,这里先拿时钟字体开刀。

v2.09 发布版的时钟字体为扁平样式,直接看起来有些浪费屏幕空间。
再说作为一介电工,怎能没有数码管字体,于是准备折腾。


【原理】
ESP32 的下载工具支持 FLASH 局部烧写,因而更换字体不需要重新编译主固件(况且我 Arduino 环境还没装好)。
版主比较给力的讲明了 fontnum48.bin 烧录位置为 0x790000,因而替换该文件并烧录即可。

至于字体文件编码格式,大致都能自行猜出来:
每个24x48字符占用空间:24*48/8 = 144 Bytes
整体 fontnum48.bin 文件尺寸:1584 Bytes = 11 *144 Bytes

也就是 fontnum48.bin 文件包含了共11个字符( 0~9、冒号 ),结合帖子中取模的描述,可以很容易分析出编码格式。


【更换字体】
既然 24*48 点阵并不算很大,直接画图板来重画一套数码管字体。画好 8 字符,其他都是复制粘贴所得:



按照之前分析的取模方式,生成全新的字体文件;使用烧录软件写入 0x790000 位置,直接就有了替换的效果。

烧录配置(仅更新字体):



运行效果 Before vs After:




附上现有的两种字体文件(原版+数码管版,0x790000位置):




【预览工具】
至此已经更换了时钟字体,但依旧不够完美。

由于字体文件属于编译好的字模数据,无法直观查看效果,故顺手用 VS 搭了一个预览工具。
在 Windows 系统下,直接加载 1584 Byte 的字体文件,可以直接预览字体样式。

具体原理无非是读取文件,按照字模数据在 Windows 窗口上绘制明暗像素点,我加了 2x 放大。

版主 v2.09 原版字体、新做的数码管字体对比如下:




按照惯例上传预览工具App以及VS源码:



----------------------------------------------------------------------------------------

以上,给开源墨水屏换了一套数码管字体,并自制了字体预览工具,一并分享来供大家参考。

最后祝大家折腾愉快!

qtechzdh 发表于 2021-2-20 06:55:04

我也提供一个字体网站,内容很全。
https://www.dafont.com/theme.php?cat=302&page=1&text=0123456789

取模工具

binaimei2007 发表于 2021-2-20 08:37:13

赞,谢谢楼主~

Dragontan 发表于 2021-2-20 10:52:14

感谢各位大佬的分享

fengyunyu 发表于 2021-2-20 10:53:52

LZ出品必定精品

armok. 发表于 2021-2-20 11:11:52

精华,打赏!

liang_work 发表于 2021-2-20 17:11:34

不错,支持,顶一下....

t3486784401 发表于 2021-2-20 18:41:07

感谢版主 2L 提供的字体资源链接,托这个的福我做一个立体数码管的效果。

原版字体名称:FakeHope,使用 40号字体,微调了宽度,并做了简单二值化(源字体是 TTF,不是点阵的)。
断点全靠手绘,结果还是时间仓促,有狗啃的豁子。改天好好整理下,也惠及一下盖革计。

字体文件(0x790000位置烧写):

运行效果:




qtechzdh 发表于 2021-2-20 21:59:59



汉字字库也可以更改。

网络孤客 发表于 2021-2-20 22:57:09

t3486784401 发表于 2021-2-20 18:41
感谢版主 2L 提供的字体资源链接,托这个的福我做一个立体数码管的效果。

原版字体名称:FakeHope,使用 4 ...

喜欢这字体。

网络孤客 发表于 2021-2-23 11:23:02

t3486784401 发表于 2021-2-20 18:41
感谢版主 2L 提供的字体资源链接,托这个的福我做一个立体数码管的效果。

原版字体名称:FakeHope,使用 4 ...

右下角的图是用什么软件显示的?

t3486784401 发表于 2021-2-23 14:08:30

armok. 发表于 2021-2-20 11:11
精华,打赏!

感谢站长!

t3486784401 发表于 2021-2-23 14:09:21

网络孤客 发表于 2021-2-23 11:23
右下角的图是用什么软件显示的?

1L 自制的预览工具啊

t3486784401 发表于 2021-2-23 14:10:20

感谢大家的支持!

mcu005 发表于 2021-2-27 09:37:23

汉字字体也可以折腾不,如果不同大小的字体,是不是都要做不同的字库

网络孤客 发表于 2021-2-27 10:45:00

mcu005 发表于 2021-2-27 09:37
汉字字体也可以折腾不,如果不同大小的字体,是不是都要做不同的字库

是的,不同大小字体要做成不同字库。

下图就换成楷体,但16点阵的效果不理想。
https://www.amobbs.com/forum.php?mod=attachment&aid=NTQ1NDE2fDE3NTliZWE4fDE2MTQzOTM4MTh8MTM2OTU5NHw1NzQ2Njcw&noupdate=yes

t3486784401 发表于 2021-2-27 12:36:02

mcu005 发表于 2021-2-27 09:37
汉字字体也可以折腾不,如果不同大小的字体,是不是都要做不同的字库

字体分点阵体和矢量体,墨水屏用的是前者,涉及的每种字号都要做一套字库

涵潇舒雅 发表于 2021-8-5 14:21:29

t3486784401 发表于 2021-2-20 18:41
感谢版主 2L 提供的字体资源链接,托这个的福我做一个立体数码管的效果。

原版字体名称:FakeHope,使用 4 ...

楼主,从TTF文件提取想要的数字,只能通过手动画点吗?{:cry:}

t3486784401 发表于 2021-8-5 14:25:58

涵潇舒雅 发表于 2021-8-5 14:21
楼主,从TTF文件提取想要的数字,只能通过手动画点吗?

看样子你找到这个字体的帖子了。

有些工具可以部分替代手动画点,大多数是液晶取模类的软件。但效果很一般,就是强制二值化后的结果,轮廓狗啃一样。

因为是二值图,想要好看,基本需要手工画

涵潇舒雅 发表于 2021-8-5 14:28:42

t3486784401 发表于 2021-8-5 14:25
看样子你找到这个字体的帖子了。

有些工具可以部分替代手动画点,大多数是液晶取模类的软件。但效果很一 ...

恰巧看到您分享的这个字库bin文件了,打算先用下看看效果,实在不行就只能在您这个基础上手绘了

涵潇舒雅 发表于 2021-8-5 16:10:53

t3486784401 发表于 2021-8-5 14:25
看样子你找到这个字体的帖子了。

有些工具可以部分替代手动画点,大多数是液晶取模类的软件。但效果很一 ...

楼主,您手里有没有这个字体的bmp文件,刚试了下字体有点大,想在您的基础上缩放下{:lol:} 这样就不用一个点一个点的画了

t3486784401 发表于 2021-8-5 16:18:22

涵潇舒雅 发表于 2021-8-5 16:10
楼主,您手里有没有这个字体的bmp文件,刚试了下字体有点大,想在您的基础上缩放下 这样就不用一 ...

你要缩放二值图,确定不是闹着玩的?

二值图缩放以后必然是引入灰度,或者狗啃锯齿,缩放下基本就是要重画的节奏。

t3486784401 发表于 2021-8-5 16:23:13

涵潇舒雅 发表于 2021-8-5 16:10
楼主,您手里有没有这个字体的bmp文件,刚试了下字体有点大,想在您的基础上缩放下 这样就不用一 ...

图给你,这是取模前最后一步的 1bpp 二值图,缩不缩得好就看你功力了:

涵潇舒雅 发表于 2021-8-5 17:25:35

本帖最后由 涵潇舒雅 于 2021-8-5 17:28 编辑

t3486784401 发表于 2021-8-5 16:23
图给你,这是取模前最后一步的 1bpp 二值图,缩不缩得好就看你功力了:

非常感谢,缩放成20*40 感觉还可以{:lol:}

t3486784401 发表于 2021-8-5 17:33:04

涵潇舒雅 发表于 2021-8-5 17:25
非常感谢,缩放成20*40 感觉还可以

看样子还行,偶尔有毛刺

涵潇舒雅 发表于 2021-8-5 17:36:11

t3486784401 发表于 2021-8-5 17:33
看样子还行,偶尔有毛刺

嗯嗯,大体能接受,个别有问题再简单修一修就可以,再次感谢
页: [1]
查看完整版本: 【初折腾】给开源墨水屏换字体,并自制预览工具