ucgui 字体生成与字体个性化编辑
一、工具简介
ucgui(emwin ) 提供了字体转换工具,可以将系统的字体转换成 GUI库所能理解的编码格式,供GUI 的API 调用。
二、ucgui 字体转换工具
ucgui 提供的字体转换是: uC-GUI-FontConvert-Demo.exe , 在网上下载的ucgui 包里能找到。
我目前遇到的情况是,用ucgui 自带的字体转换工具,转换出来的字体编码与实际不符,调用ucgui 的api 显示对应的字符,也异常。
2.1 对于普通非抗锯齿字符“1”,在工具上的显示是这样的:
2.2 转换出来的编码如下:
GUI_CONST_STORAGE unsigned char acFont____Light13_0031[ 13] = { /* code 0031 */X__XXX_X,X__X___X,_XX_____,_X_XX_XX,X__XXX__,XXX__X_X,_XXXXXX_,__X__XXX,XXXX_XX_,__XX_XX_,X___X_XX,_XX_XXXX,_XXX_X__};
2.3 正确的编码应该是这样的:
/* DIGIT ONE */
GUI_CONST_STORAGE unsigned char acGUI_FontLight13_emwin_0031[ 13] = { /* code 0031 */________,___X____,__XX____,_X_X____,___X____,___X____,___X____,___X____,___X____,___X____,___X____,___X____,________};
2.4 不再深究异常原因
这套ucgui 是在网上下载的,不知道中途那个过程缺失了,才导致工具转换出错。我找到替代方案了,新方案更优,所以不再深究这个异常。
三、使用Emwin 自带的Font Convert 工具
由于我之前有使用emwin 的经历,也了解ucgui 和emwin 的关系,尝试着用emwin font convert 转换字体,在ucgui 上面使用,果然能兼容,显示正常。
下面记录一下工具的使用过程。
3.1 打开软件,选择字体生成选项
选择生成的字体类型
Standard
只用一个位表示一个像素点
Antialiased,2bpp
抗锯齿字体,用2bits 表示一个像素点
Antialiased,4bpp
抗锯齿字体,用4bits 表示一个像素点
选择编码方式(Encoding)
编码方式根据自己显示内容选择,对我来说,只需要常规的英文字符,所以选择最后一个8/16 Bit SHIFT_JIS ,可以节省很多空间。
点击OK,进入下一步。选择字体参数
3.2 选择字体参数
点击确定,进入下一步。
3.3 字体编辑
到达这一步,如果不需要对字体做进一步编辑或压缩,可以直接另存在.c 文件,gui api 库就能直接使用这个字体文件。
四、基于Emwin 自带的Font Convert 工具,对字符进行编辑
4.1 剔除不需要的字符
由于单片机资源紧张,我们可以只转换需要的字符。例如,我们只需要字符0-9。我通常的做法如下:
4.1.1 Disable all characters
Views → Disable all characters 。除能所有的字符,字符列表栏所有字符变灰。
4.1.2 挑选我们需要的字符
单个字符选择
在字符列表栏,右键点击我们要选择的字符,选择Toggle character ,表示当前字符被选中。
选择一整行
在字符列表栏,右键点击我们要选择的字符那一行,选择Enable Block,表示当前行字符被选中。
按照范围选择
点击Edit → Enable Range of characters… ,输入我们要使能字符的开始,结束序号,表示当前范围的字符使能。
最左边的数字是当前行字符的起始序号。
4.2 删除字符中的空行
为了进一步压缩单片机的资源,可以把字符中的空白行删除掉,例如下图红色框的行。注意查看自己选择的字符,是否全部可以删掉前面4行,后面3行。
参照下图图标所示,选择从上面或下面删除对应的行数
4.3 对字符进行像素级修改
如上图所示,我们可以右键当前字符任意一个像素点,选择增加或减少当前像素点的颜色值,我们前面选择4bits 的深度,所以我们当前字符一个点有16组值。
既可以在原有像素点修改颜色深浅值,也可以在空白处增加像素点,重绘这个字符。
ucgui 字体生成与字体个性化编辑相关推荐
- TextMeshPro中文字体生成和字体材质更换
TextMeshPro中文字体生成和字体材质更换 中文字体生成: TextMeshPro是unity提供的相较源Text更加强大,高效的字体组件.但其有一个严重的缺点就是默认不支持中文.所以我们需要制 ...
- android 点阵字体生成,点阵字体 ASCII码 汉字库 自我学习 简单总结
学习各种大小点阵字体显示,参考网上资料,简单记录一下! -----第一部分-----点阵字体数据的存放格式---- 最常见的是16*16的点阵,意思是说每1行有16个点,一共有16行.由于1个点使用1 ...
- 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...
本文推荐本周值得关注的已开源论文,包含文本识别.关键点检测.人体姿势预测.Transformer.图像超分辨率等 10 篇. 01 Font Style that Fits a ...
- 使用阿里巴巴图标库生成iconfont字体图标
iconfont字体图标就是用字体来代替图标.图片文件的做法,并且通过字体图标可以对图标的大小.颜色等进行控制,但是缺点就是只能实现一种颜色,不能像图片那样含有各种颜色. 通过阿里巴巴图标库制作字体图 ...
- figure字体 latex_Latex生成中文字体包(转)
Mike的分享空间 Latex生成中文字体包(转) date: 2016.05.11; modification:2016.05.11 目录: (摘自: http://blog.sina.com.cn ...
- java 生成pdf 字体 type1、ttf、ottf、cid、woff
java生成pdf技术选型 技术选型 java生成pdf最终选择itext7+pdfhtml+freemarker.为什么使用这个组合呢?生成pdf,通常会用html转pdf,这是因为html+css ...
- 【Flutter】Icons 组件 ( FlutterIcon 下载图标 | 自定义 svg 图标生成 ttf 字体文件 | 使用下载的 ttf 图标文件 )
文章目录 一.FlutterIcon 下载图标 二.自定义 svg 图标生成 ttf 字体文件 三.使用下载的 ttf 图标文件 四.完整代码示例 五.相关资源 一.FlutterIcon 下载图标 ...
- 批量生成印刷字体字库
主要目的 本文主要是为了做印刷体字体识别的前期工作做准备,后期需要大量字体样本做神经网络训练,但缺乏印刷体样本,因此特地写了个程序自动生成所需要的样本. ##主要实现过程 本文主要分为三个部分实现,主 ...
- python 生成文字图片_[ImageFont] 如何利用字体生成文字图片
在OCR识别.检测的数据生成过程当中,我们经常会需要利用字体生成汉字的图片,在Python当中,这一部分的操作通常是通过Pillow 模块提供的ImageFont 模块来完成,下面我们用一个例子,介绍 ...
- 位图字体生成工具 BMFont汉化版
BMFont 有时候想在游戏中绘制字体是一件很麻烦的事. 最好的方法是位图字体 用使用AngelCode的像素字型工具简单操作就能生成位图字体了 比如 骑马与砍杀的汉字库 就是用这个制作的 下载 bm ...
最新文章
- Java单元测试-快速上手Junit
- js+html5双人五子棋(源码下载)
- 实现canvas连线
- php用array_merge实现无限级分类
- 阿里巴巴商城源码JAVA_阿里巴巴Dubbo实现的源码分析
- docker 安装部署 Jenkins 2.322
- 工作中99%能用到的git命令
- 一步一步写算法(之排序二叉树删除-3)
- 广义典型相关分析_数学建模/机器学习:广义加性模型(GAM)及其Python实现
- python学习第十八天 --文件操作
- 【C++】 53_被遗弃的多重继承 (上)
- linux如何查看内存命令
- 西数MyBookDuo提供致臻性能、超大容量及综合数据保护
- 2020-10-31
- 平稳分布、细致平稳条件与 Gibbs 采样
- MybatisPlus乐观锁配置
- 分解质因数 C语言实现
- (十一)java.io.File学习进阶及separator、pathSeparator分隔符简介
- c语言游泳是怎么钓鱼的,钓鱼怎么找水层?看完这篇你就懂!
- spark ML算法之线性回归使用