1、头部信息

定义一个头部信息,方便检索

typedef struct {

        uint16_t crc; //字库的crc校验结果

        uint8_t height; //当前该版本字体的高,代表所有字体同高

        uint8_t bit_mod:2; //0,代表1bit;1,代表4bit;2代表8bit

        uint8_t compress:1; //0,代表不压缩;1,代表压缩

        uint8_t mode:2; //0,字模同高不同宽;1,字模同高同宽

        uint8_t reserevd:3;// 预留

} font_head_t;

2、unicode合成

通过codepage获取到对应的字体unicode数据,用4字节表示或者8字节表示,提取unicode过程中需要注意不连续的码值,从小到大排序,方便二分法查找,最终合成:

typedef struct {

        uint32_t code; //unicode的值,如空格,0x0020

        uint32_t addr; //该unicode在字模中的地址值

} font_unicode_t;

生成unicode.bin

3、字模提取

利用提取字模的方式(上一文章)把字模依照等高不等宽或者等高等宽依次提取出来形成raw.bin

4、最终把头部和unicode.bin以及raw.bin合并形成一个字库;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐