嵌入式设备,点阵字库如何压缩比较合适?

2016-08-01 16:48:38 +08:00
 Arnie97

12x12 的汉字点阵字体为例,为了满足字节对齐的要求,一般采用 12x16 的格式来记录,每个字的大小是 24 Bytes 。如果只覆盖 GB 2312 的 6763 个汉字,再加上 ASCII 字符和其他一些常用符号,按 7000 字计算,需要占用 168 KB 。

为了节省空间,考虑到有效的数据其实只有 11x11 ,不进行字节对齐了,每个字的大小是 15 Bytes ,仍然需要 106 KB ,而且读取字库的代码量肯定会增加,索引效率也会降低。维基百科说 7-zip 的 LZMA 算法非常适于嵌入式设备,不知道 LZMA 的代码本身要用多少空间?

或者,不知道有没有什么更好的方法进行压缩?又如何从压缩数据中提取出一个字的点阵呢?

2974 次点击
所在节点    问与答
10 条回复
tabris17
2016-08-01 16:57:04 +08:00
一夜回到 286 的 DOS 时代啊.

我记得当年汉卡有使用偏旁部首组合来降低内存使用的,就是拆字,不过这样要保存一个拆字表,而且合体字会很难看
tabris17
2016-08-01 16:59:55 +08:00
cnnblike
2016-08-01 17:11:45 +08:00
来用 minilzo
am241
2016-08-01 17:35:03 +08:00
做过游程编码,然而字小的时候效果并不好
dacapoday
2016-08-01 20:04:42 +08:00
最好还是在外部弄个 EEPROM 来存字库吧,按步进 24 Bytes 来读取;而且压缩也是要序列化和解序列化这都要加载整个压缩文件到内存,然后再读字,这 MCU 吃得消嘛。
dacapoday
2016-08-01 20:10:58 +08:00
话说你主控什么型号,没有片内 EEPROM ?
blanboom
2016-08-01 21:13:21 +08:00
还是装个 SPI Flash 靠谱。
GPIO
2016-08-01 21:27:01 +08:00
之前也遇到过这个问题,后来加了个 Flash 解决了。
nareix
2016-08-02 00:10:33 +08:00
你这是单片机吧,现在嵌入式都屌炸天直接上 freetype 没压力
Arnie97
2016-08-02 12:44:30 +08:00
@nareix 就算能跑 FreeType 我也不会玩 T_T 以前在 PC 上写了一段用 FreeType 渲染 TTF 字体( Simsun )的代码,小字号的效果又粗又糊,可能是没有使用内嵌点阵?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296388

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX