一、工具简介

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 字体生成与字体个性化编辑相关推荐

  1. TextMeshPro中文字体生成和字体材质更换

    TextMeshPro中文字体生成和字体材质更换 中文字体生成: TextMeshPro是unity提供的相较源Text更加强大,高效的字体组件.但其有一个严重的缺点就是默认不支持中文.所以我们需要制 ...

  2. android 点阵字体生成,点阵字体 ASCII码 汉字库 自我学习 简单总结

    学习各种大小点阵字体显示,参考网上资料,简单记录一下! -----第一部分-----点阵字体数据的存放格式---- 最常见的是16*16的点阵,意思是说每1行有16个点,一共有16行.由于1个点使用1 ...

  3. 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...

    本文推荐本周值得关注的已开源论文,包含文本识别.关键点检测.人体姿势预测.Transformer.图像超分辨率等 10 篇.       01       Font Style that Fits a ...

  4. 使用阿里巴巴图标库生成iconfont字体图标

    iconfont字体图标就是用字体来代替图标.图片文件的做法,并且通过字体图标可以对图标的大小.颜色等进行控制,但是缺点就是只能实现一种颜色,不能像图片那样含有各种颜色. 通过阿里巴巴图标库制作字体图 ...

  5. figure字体 latex_Latex生成中文字体包(转)

    Mike的分享空间 Latex生成中文字体包(转) date: 2016.05.11; modification:2016.05.11 目录: (摘自: http://blog.sina.com.cn ...

  6. java 生成pdf 字体 type1、ttf、ottf、cid、woff

    java生成pdf技术选型 技术选型 java生成pdf最终选择itext7+pdfhtml+freemarker.为什么使用这个组合呢?生成pdf,通常会用html转pdf,这是因为html+css ...

  7. 【Flutter】Icons 组件 ( FlutterIcon 下载图标 | 自定义 svg 图标生成 ttf 字体文件 | 使用下载的 ttf 图标文件 )

    文章目录 一.FlutterIcon 下载图标 二.自定义 svg 图标生成 ttf 字体文件 三.使用下载的 ttf 图标文件 四.完整代码示例 五.相关资源 一.FlutterIcon 下载图标 ...

  8. 批量生成印刷字体字库

    主要目的 本文主要是为了做印刷体字体识别的前期工作做准备,后期需要大量字体样本做神经网络训练,但缺乏印刷体样本,因此特地写了个程序自动生成所需要的样本. ##主要实现过程 本文主要分为三个部分实现,主 ...

  9. python 生成文字图片_[ImageFont] 如何利用字体生成文字图片

    在OCR识别.检测的数据生成过程当中,我们经常会需要利用字体生成汉字的图片,在Python当中,这一部分的操作通常是通过Pillow 模块提供的ImageFont 模块来完成,下面我们用一个例子,介绍 ...

  10. 位图字体生成工具 BMFont汉化版

    BMFont 有时候想在游戏中绘制字体是一件很麻烦的事. 最好的方法是位图字体 用使用AngelCode的像素字型工具简单操作就能生成位图字体了 比如 骑马与砍杀的汉字库 就是用这个制作的 下载 bm ...

最新文章

  1. Java单元测试-快速上手Junit
  2. js+html5双人五子棋(源码下载)
  3. 实现canvas连线
  4. php用array_merge实现无限级分类
  5. 阿里巴巴商城源码JAVA_阿里巴巴Dubbo实现的源码分析
  6. docker 安装部署 Jenkins 2.322
  7. 工作中99%能用到的git命令
  8. 一步一步写算法(之排序二叉树删除-3)
  9. 广义典型相关分析_数学建模/机器学习:广义加性模型(GAM)及其Python实现
  10. python学习第十八天 --文件操作
  11. 【C++】 53_被遗弃的多重继承 (上)
  12. linux如何查看内存命令
  13. 西数MyBookDuo提供致臻性能、超大容量及综合数据保护
  14. 2020-10-31
  15. 平稳分布、细致平稳条件与 Gibbs 采样
  16. MybatisPlus乐观锁配置
  17. 分解质因数 C语言实现
  18. (十一)java.io.File学习进阶及separator、pathSeparator分隔符简介
  19. c语言游泳是怎么钓鱼的,钓鱼怎么找水层?看完这篇你就懂!
  20. spark ML算法之线性回归使用

热门文章

  1. 显卡dos测试软件,A+N卡测试说明_早期显卡DOS版本
  2. 2019-9-9,中兴笔试
  3. 业务数据双中台助力实现大型医药集团
  4. TimesTen In-Memory Database
  5. Docker笔记(基础篇)
  6. 《非对称风险》读书笔记(一)
  7. java httpsession 类型_JavaWeb HttpSession
  8. Ueditor编辑器 .Net 版
  9. EditPlus软件的安装与配置
  10. linux中UDP编程