minigui bin字库制作
bin字库的格式,bin字库如何生成,bin字库如何解析?
为何选择.bin字库?
芯片处理性能不是很好时,为了降低cpu处理数据量,才选择使用.bin字库;矢量字库虽然美观,但解析耗时故未采用。minigui 自带的bin字库格式是怎样的?
1.font目录下有8x16-iso8859-1.bin ,song-16-gb2312.bin
翻阅资料,其实就是把数组以二进制的形式保存写入到文件中;
eg:
unsigned char GBK_font[]={
0x00,0x00,0x00,0x00,0x04,0x20,0x19,0x20,0x17,0xF0,0x19,0x70,0x11,0xA8,0x1F,0x28,
0x1F,0xC8,0x1F,0xF8,0x15,0xC8,0x0A,0xC8,0x0F,0xC8,0x0A,0xF8,0x12,0x00,0x13,0xF0,/* “?”, 7614*/};
fwrite(GBK_font, sizeof(GBK_font), 1, fd);
生成的文件就是.bin文件;网上的C转bin工具其实就是实现这个功能,只不过包了一层壳而已;
完整函数:
int wfoo()
{FILE *fd;char *fName="gbk.bin";fd=fopen(fName, "w+");if(fd==NULL){perror("fopen fail\n");return -1;}fwrite(GBK_font, sizeof(GBK_font), 1, fd);fclose(fd);return 1;
}
如何解析.bin文件?
我的想法是全部读出来,按字节打印出来;int rfoo(const char name)
{
int i=0;
FILE fd;
long offset=0;
unsigned char GBK_font[1676142]={0};if(access(name, F_OK)!=0){fprintf(stderr, "%s not exist", name);return 0;}fd=fopen(name, "r");if(fd==NULL){perror("fopen fail\n");return -1;}#if 0fseek(fd, 0, SEEK_END);offset = ftell(fd);printf("offset:%d\n", offset);#elsefread(GBK_font, sizeof(GBK_font), 1, fd);for(i=0; i<sizeof(GBK_font); i++){if(i!=0 && i%16==0)printf("\n");printf("0x%02x,", GBK_font[i]);}printf("\n");#endiffclose(fd);return 1;
}
做过黑白屏显示的都知道,生成的1616的中文字库,其实一般都是分上下两部分,即上面8个字节,下面8个字节,主要是和白屏是按页写的原因,姑且这样设计的吧!
其实刚不知道要多大的数组,计算了一下文件的大小,再由每个字符所占空间,计算出一共有多少个字符;
1616的中文gb字库的每个字符点阵字节数是32【宽16个字节,上下两部分】,
ls -l 该字库大小为 243648
故该字库包含了 7614个字符;
(写一个扫描解析函数,每次解析32个字节,按位解析,即可画出这个字符;为此,写了一个脚本,实现的两种方式,用数字0,1分别代表解析的每一位,把结果写入文件,打开该文件就可以看到字符点阵样子,还可以使用shell终端按颜色打印,把0,1解析为对应的颜色值,这样显示的字符更加直观)。
其实,当看到7614个字符时,头都大了,那种编码的字库有7614个字符?找了半天资料也没有答案;
原始方法:一个一个字符画出来,有了上面自制的工具,把解析出来的数组,一个一个打印出来,慢慢的找到了规律;
对比GB2312简体中文编码表:
http://www.knowsky.com/resource/gb2312tbl.htm
逐渐得到一个规律,并不是都乱掉了,
其实是这个字库做了裁剪,去掉了一些无用的字符;
花了一天半,把每个其实字符打印出来,总算去除多余的字符;得到完整的字符库;
至此,有完整的字库,在PCto2002w完美版工具下,导入该文件在选择字体,即可生成想要的自制字库文件。
其实,在生成的字库时还遇到一些问题:
生成的文件后面的注释字符乱码?
刚开始还以为是生成的字符有问题,取几个特殊易辨别的字符验证一下发现是没问题的;所以需要处理一下。我的做法是函数打开两个文件,按行读文件,把乱码字符用字符文件中的字符替换;期间遇到的问题是需要转码,不然无论怎么替换都是乱码数据;
其实,如果只为实现替换,这个注释是不会写入到.bin文件的,直接替换到数组里面,再把数组写入文件,后缀为.bin,其实就完成了功能;如何测试字库是否正确?
自制字库完成后,上传字库替换minigui自带的字库即可;
增加,需要修改MiniGUI.cfg配置,新增配置项即可;
对应工具上传到github路径:
https://github.com/first-aid/minigui-bin-font/commits/master
欢迎大家指正完善。
minigui bin字库制作相关推荐
- 二 unicode字库制作(智源GM813X多国语言OSD开发)
字库的制作关键是需要软件,文章最后会提供一种字库制作软件,此文将详细介绍怎么提取字库方法. 一 制作字库格式. (该图就是字库软件主页面,ENCODE 编码选择UNICODE ,size 可以选择小一 ...
- linux bin文件制作
linux bin文件制作 一 Linux安装文件 Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类, 第一:打包或压缩文件tar,zip,gz等,一般解压 ...
- 字王x2ttf字库制作软件发布:“全民造字时代来临,会涂鸦,就会truetype”
"全民造字时代来临,会涂鸦,就会truetype" x2ttf,涂鸦造字,又名bmp2ttf,是一款功能强大.操作简单的"傻瓜式".批量化truetype字库制 ...
- 【杰理AC696X】外挂FLASH音乐播放及Bin文件制作
外挂FLASH音乐播放及Bin文件制作 测试SDK版本:<ac696n_soundbox_sdk_v1.6.0> 文章目录 外挂FLASH音乐播放及Bin文件制作 前言 一.板级配置 1. ...
- linux bin文件制作,linux 将脚本制作成二进制bin文件
本教程,实现将shell脚本和需要安装的软件包制作成二进制bin文件 1.编写shell脚本 这里有个安装jenkins的shell脚本,脚本内容如下: #!/bin/bash sed -n -e ' ...
- 通过矢量字库制作点阵字库
1.字库导出步骤 涉及软件:FontEditor 1.3.3 FontEditor 为一款功能强大的字体编辑和字体格式转换工具,支持制作 32*32 的全字库.能将 TTF,OTF 矢量字库转换为 B ...
- Tesseract-OCR字库制作
安装:url:https://tesseract-ocr.github.io/tessdoc/Home.html 下载网址:V5.00--->WIN32,WIN64 依赖:JDK --> ...
- STM32CubeIDE 制作中英字库 显示屏显示中英文
随言: 目标制作宽度 x 高度 为16 x 16大小的中文字库 和 8 x 16大小英文字库,且在LCD显示. 第一个值小于127的解析为英文字符,否则取连续两个值解析为GB2313. 中文编码格式 ...
- LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库
LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库 前言: 阅读前,请确保你至少拥有以下条件: 已实现显示API(教程一已实现, 链接:LittleVGL (LVGL)入门教程一之 ...
最新文章
- 【教程】怎么同时同时ping1000个IP地址?
- PMCAFF微课堂已结束 | 前YY产品总监深度揭秘P2P运营推广精髓
- 动手使用ABAP Channel开发一些小工具,提升日常工作效率 1
- java如何解压rar文件怎么打开,java解压rar文件
- Android手机mm开头的大文件,[2018年最新整理]2Android源代码编译命令m和mm和mmm以及make分析.doc...
- bootstrap 导航菜单 折叠位置_教大家如何编写一个网页导航条
- node.js fs.open 和 fs.write 读取文件和改写文件
- 2018(上)C高级第0次作业
- FreeSSL.cn 创建免费 https 证书
- Multithreading and Synchronization
- clickhouse建表语句行数太多导致报错 Unmatched parentheses: (
- 【对可转债和期权的初步认识】
- 逐帧动画和补间动画的区别于各自的优缺点
- iframe中的方法
- 大数据时代的信息茧房问题
- 深圳中学因招聘上热搜:名校博士挤破头想进,教学成绩也确实不服不行!
- 厦门有哪些靠谱的互联网公司
- 风味地图:驴友至爱的众包美食应用
- (二)GL 简单绘制
- 【管理研习社】给CEO们推荐一些书
热门文章
- 怎样用计算机命令提高网速,怎样提高网速,详细教您电脑怎样提高网速
- 智邦国际ERP系统帮助企业控制成本
- 裕太微在科创板上市:市值约186亿元,哈勃科技和小米基金为股东
- 《Kotlin 极简教程 》第4章 基本数据类型与类型系统
- mavros连接px4
- Hibernate中的注解说明
- 爬虫scrapy之四(20)
- 竞赛无人机搭积木式编程(三)---用户自定义航点自动飞行功能(全局定位,指哪打哪)
- 手机短信中特殊字符导致链接失效的问题修复
- org.hibernate.PropertyNotFoundException: Could not find a setter for id in XXX