首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Coding
V2EX  ›  问与答

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

  •  
  •   Arnie97 · 2016-08-01 16:48:38 +08:00 · 1845 次点击
    这是一个创建于 1229 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    10 回复  |  直到 2016-08-02 12:44:30 +08:00
        1
    tabris17   2016-08-01 16:57:04 +08:00   ♥ 1
    一夜回到 286 的 DOS 时代啊.

    我记得当年汉卡有使用偏旁部首组合来降低内存使用的,就是拆字,不过这样要保存一个拆字表,而且合体字会很难看
        2
    tabris17   2016-08-01 16:59:55 +08:00
        3
    cnnblike   2016-08-01 17:11:45 +08:00 via iPhone   ♥ 1
    来用 minilzo
        4
    am241   2016-08-01 17:35:03 +08:00 via Android
    做过游程编码,然而字小的时候效果并不好
        5
    dacapoday   2016-08-01 20:04:42 +08:00
    最好还是在外部弄个 EEPROM 来存字库吧,按步进 24 Bytes 来读取;而且压缩也是要序列化和解序列化这都要加载整个压缩文件到内存,然后再读字,这 MCU 吃得消嘛。
        6
    dacapoday   2016-08-01 20:10:58 +08:00
    话说你主控什么型号,没有片内 EEPROM ?
        7
    blanboom   2016-08-01 21:13:21 +08:00 via iPhone
    还是装个 SPI Flash 靠谱。
        8
    GPIO   2016-08-01 21:27:01 +08:00
    之前也遇到过这个问题,后来加了个 Flash 解决了。
        9
    nareix   2016-08-02 00:10:33 +08:00
    你这是单片机吧,现在嵌入式都屌炸天直接上 freetype 没压力
        10
    Arnie97   2016-08-02 12:44:30 +08:00 via Android
    @nareix 就算能跑 FreeType 我也不会玩 T_T 以前在 PC 上写了一段用 FreeType 渲染 TTF 字体( Simsun )的代码,小字号的效果又粗又糊,可能是没有使用内嵌点阵?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2370 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 13:00 · PVG 21:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.