嵌入式 轻量级字库合成方法,全量字库(续一)
/0,代表1bit;利用提取字模的方式(上一文章)把字模依照等高不等宽或者等高等宽依次提取出来形成raw.bin。//unicode的值,如空格,0x0020。//当前该版本字体的高,代表所有字体同高。//0,代表不压缩;//0,字模同高不同宽;//该unicode在字模中的地址值。4、最终把头部和unicode.bin以及raw.bin合并形成一个字库;
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合并形成一个字库;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)