前面我们已经学会了如何驱动OLED显示屏,以及如何使用.NET nanoFramework来控制ESP32。在这篇文章中,我们将学习如何使用 IotByteFont 工具制作点阵字体,以及如何在ESP32中使用这些字体。工具开源地址:https://github.com/sangyuxiaowu/IotByteFont?wt.mc_id=DT-MVP-5005195
在物联网项目中,特别是使用 ESP32 这样的微控制器的项目中,点阵字体的使用非常普遍。这与我们最先的在 Jetson 设备中的示例不同,因为资源有限,我们不可能将整个字体文件放进去。针对大多数的项目,我们使用的特殊字符一般也没有那么多。
在 .NET nanoFramework 的项目中,也是使用的点阵字体,官方也提供了一些预置字库和图片转点阵的方法,但是没有直接使用自定义字体库的工具。为了解决这些问题,我创建了一个名为 IotByteFont 的 .NET 点阵字体制作工具。本文将详细介绍这个工具的功能和使用方法。
点阵字体是由像素点组成的字体,它们通常用于计算机屏幕或其他电子设备。每个字符都由一组点阵组成,这些点阵可以被编码成代码文件,然后由设备读取并显示。在 ESP32 中,我们通常使用 C 语言来编写这些代码文件,这些文件包含了定义每个字符点阵的数据。我们使用的 .NET nanoFramework 开发环境使用的是 C# 语言,这些点阵数据也是被编码为了 C# 代码文件。
点阵数据来源非常简单,我们只需要生成一个黑底白字的位图,然后将位图转换为点阵数据即可。中间经过的转换也非常简单,只需要先将位图进行二值化,然后将每个像素点转换为一个二进制位即可。然后,我们将这些二进制位组合成字节,最后将字节转换为十六进制编码即可。这样,我们就可以将字体数据编码为 C# 代码文件,然后在 .NET nanoFramework 项目中使用这些字体数据。如下图所示即是一个8x8的点阵字体的转换过程:
然而,使用 IFont 这样的字库时,我们常常会遇到一些限制。例如,IFont 只能处理 8x8 或 16x16 的点阵字体。这意味着,如果你需要使用其他尺寸的字体,你就需要找到其他的解决方案。
IotByteFont 这个字体生成工具使用 .NET 平台,可以加载用户喜欢的字体文件,并生成自定义的点阵字体代码。对于需要自定义字体渲染的 IoT 项目,这个工具特别有用,适用于 .NET nanoFramework。
要安装 IotByteFont 工具,你可以通过以下命令:
dotnet tool install -g IotByteFont
使用 IotByteFont 字体生成工具非常简单。首先,你需要安装 .NET 平台。然后,你可以通过命令行来运行 IotByteFont,并提供必要的参数。例如,以下是一个基本的命令行示例:
IotByteFont --char "abcde"IotByteFont --char "chars.txt" --size 8IotByteFont --font ms.ttf --char chars.txt --yoffset 0.6 --name MyFont --debug
字体大小是默认的 16,你也可以指定为 8 ,这些都是兼容 IFont 的,可以直接在项目中使用。在这个示例中,--char 参数是字符文件的路径或字符字符串,--size 参数是字体大小,--font 参数是字体文件的路径或名称,--yoffset 参数是字体的 y 偏移,--name 参数是输出类的名称。打开调试模式可以打印调试信息和最终字体的位图。
这里也有一些开源字体的推荐,比如点阵字体 unifont 和阿里巴巴普惠体等一系列优秀的字体。
由于目前 nanoFramework.Iot.Device.Ssd13xx 的限制,字体大小宽度必须是 8 或者 16,所以如果你需要使用其他大小的字体,你可以使用特殊的方法来显示。这个方法允许你显示字体宽*高度为8的倍数的任何大小字体。
public static void DarwString(Ssd13xx device, int x, int y, string str, byte size = 1){ int inx = 0; int fontWidth = device.Font.Width; int fontHeight = device.Font.Height; int fontWidthTimesSize = fontWidth * size; int fontArea = fontWidth * fontHeight; byte[] bitMap = new byte[fontArea]; foreach (char c in str) { // 字体数据 device.Font.Width * device.Font.Height 的 16 进制数据 byte[] charBytes = device.Font[c]; for (int i = 0; i < charBytes.Length; i++) { byte b = charBytes[i]; int baseIndex = i * 8; for (int j = 0; j < 8; j++) { // 获取二进制位 int bit = (b >> j) & 1; // 存储二进制位到位图数组 bitMap[baseIndex + j] = (byte)bit; } } // 按照字体大小从左到右,从上到下绘制位图 int baseX = x + fontWidthTimesSize * inx; for (int i = 0; i < fontHeight; i++) { int baseY = y + i * size; for (int j = 0; j < fontWidth; j++) { // 获取二进制位 int bit = bitMap[i * fontWidth + j]; // 根据size绘制像素或填充矩形 if (size == 1) { device.DrawPixel(baseX + j * size, baseY, bit == 1); } else { device.DrawFilledRectangle((baseX + j * size), baseY, size, size, bit == 1); } } } inx++; }}
以下是一个调用方式示例:
using Ssd1306 device = new Ssd1306(I2cDevice.Create(new I2cConnectionSettings(1, Ssd1306.DefaultI2cAddress)), Ssd13xx.DisplayResolution.OLED128x64);device.ClearScreen();device.Font = new IotByteFont();DarwString(device, 2, 32, "桑榆肖物", 2);DarwString(device, 0, 0, "IotByteFont", 1);device.Display();
点阵字体在 ESP32 等设备中起着重要的作用,然而,生成这些字体并不总是那么简单。幸运的是,有了像 IotByteFont 这样的工具,我们可以更容易地生成我们需要的点阵字体。通过理解点阵字体的原理,以及如何使用 IotByteFont,我希望你现在可以更好地处理你的 ESP32 项目中的字体问题。
最新免费可商用的创意字体,都在这儿啦!为了方便阅读,采用倒序排列,最近整理的字体,排在最前面。
每款字体都经过反复确认,100%免费。记得点赞收藏,以备不时之需。如需打包下载本文全部字体 ,请前往字体日记网 。
—
如图所示,后台回复字体编号或字体名称,免费下载永不迷路。
—
更多免费创意字体,持续更新中...
—
字体编号:0932
三极力量体简粗是由三极字库推出的一款免费可商用字体,这款字体笔画横细竖粗,竖钩笔画的转折有圆弧处理,笔画简洁,整体字形棱角分明、爽朗潇洒,结构新颖独特、个性刚健有力,极具节奏感。给人一种气势雄伟,庄重大方的感觉。非常适用于商业品牌的广告、产品包装设计、影视作品,界面设计等设计场景。
字体编号:0931
「胡晓波真帅体」可免费商用,笔划纤瘦的文艺字体!「胡晓波真帅体」将宽高比例设置为 6:9,笔划纤瘦等宽,使得字型外观上较为瘦长,同时将重心向上提高,更具文艺气息。
字体编号:0930
斗鱼追光体是符合GB2312简体中文编码字符标准的专属品牌字体。是拥有一种标准版字重,包含6763个中文字符,100个西文及数字符号。随着斗鱼品牌场景的日益丰富,斗鱼追光体能逐渐适配平台的各种场景。
字体编号:0929
「仓耳非白」可免费商用,一款风格独特五个字重的中文字体。「仓耳非白」含有五个字重,随着笔画粗细的变化,字体笔画的组合和形态都有所改变,整体形态也各不相同,可以互相搭配,应用范围较广。
字体编号:0928
耕耘行业数年,相信许多酒业同仁都经历或了解过“碰瓷式维权”事件,为了杜绝这个现象,光良酒业回归自身,历时9个月,花费26万,为自己,也为整个白酒行业的同仁们,探索一条无忧之路。这套字体总共有 6763 个常用字,此外,结合白酒行业同仁的高频使用场景,我们还设计了 55 个不同的“酒”字标识,以及原料、香型、货运相关的数十个标识,希望能为酒业同仁们的传播使用提供方便。
字体编号:0927
创客贴金刚体是为支援抗击疫情而创作的字体,创客贴金刚体的设计理念是将一切繁琐的笔画融合简化,让字体更加简约有力量,而又不影响字体的识别性,特别适用于商业海报、电商 banner、包装、品牌宣传。包含大陆简体汉字 6763 个、繁体中文 16 个、英文大小写 52 个,阿拉伯数字 10 个,以及 682 个符号,满足日常用字需求。
字体编号:0926
胡晓波男神体是胡晓波推出的免费商用字体,特色显著。它粗壮但不拥挤,横竖对比鲜明,转角圆润,部分提撇走向规律、角度统一且边缘整齐,利于排版。字体重心稍高,横竖比例相等,显得稳重高挑,同时对连笔和拥挤笔画进行简化处理,更简洁大方,收容字符数 7331 个、字形数 7317 个,适用于品牌宣传广告和产品包装设计的标题等场景。
字体编号:0925
站酷庆科黄油体非常耐看,具有复古又夹杂时尚的特点。完全免费,可商用。英文字体和数字的风格与中文汉字的样式是两种不同的风格:英文字母与数字采用了折叠式设计思路,让人看起来就像是长条的纸张折叠出来的效果。
字体编号:0924
具有明显的锯齿状或方块状外观,呈现出一种复古的像素风格,能给人带来独特的视觉感受。能唤起人们对早期电子游戏、计算机界面等的回忆,常用于复古风格的设计或需要营造怀旧氛围的作品中。
字体编号:0923
抖音体验设计中心与方正字库联合设计开发了一款简洁大方、清晰易读,同时兼具现代气质与人文属性的品牌定制字体——抖音美好体。以便帮助抖音更好地传播“记录美好生活”的品牌理念,更好地满足品牌长远发展,打造优质的内容创作与产品体验。
字体编号:0922
「峰广明锐体」明朗锋锐,挺拔端正,笔画摒弃部分原笔画,进行创新重造,字体新潮时尚不失端正。该字体将部分左下角转折改为圆角,使字体减少呆板的感觉,更加具有活力。
字体编号:0921
含有五个字重,这其中不仅是笔画粗细的变化,字体气质和笔画形态都进行了改变,不仅让字体富有变化便于使用,同时也扩大了字体的适用范围。
字体编号:0920
「江城知音体」最大的特点在于将字体横向笔画进行减细处理,而对横向笔画进行增粗处理,这一改动让字体充满灵气和活力,特点鲜明。该字体含有三个字重,字重越小越能看出来横竖笔画的粗细对比,而字重最大时,横竖笔画的对比则不太明显。
字体编号:0919
该字体的鲜明特点在于将笔画横向拉宽,纵向压细,横竖对比使得字体更具活力。同时,该字体将字体统一向右倾斜 10 度,坡度自然美观,使得字体更具动感。
字体编号:0918
「点点像素」是基于文泉驿项目所创建的一种点阵字体衍生而来的。它们是文泉驿点阵宋体经矢量化之后,通过变形、美化而得到的。「点点像素」是一组基于 GPL 2.0 协议开源发布的中文像素艺术字体,每种字体均支持超过 22000 个 Unicode 字形,覆盖 GBK 编码中的全部简繁体汉字。
字体编号:0917
「阿朱泡泡体」笔画随意放松,富于变化。字体中的“口”字用不规则的圆形代替,像极了小孩子随手画的泡泡,让字体更加可爱童趣中不失活泼。去掉了所有尖锐的折角,使用圆润的弧形代替,让字体整体风格更加统一,不同的偏旁部首对于弧形有不同的表现形式,富有趣味。
字体编号:0916
江城尖刃黑最大的特点是在狮尾福腿黑体 SC 的基础上将突刺三角放大,使其更加尖锐显眼,这一特点使得字体有着更强的视觉表现力,展现出尖锐感、锋利感,也使得字体具有更好的辨识度。
字体编号:0915
「字体传奇特战体」是一款微设计变形的字库,整体字形采用横细竖粗的设计风格,结构严谨、规范、干净、整洁。在笔画的制作上,在横线右端使用倾斜进行修饰,竖线右上角的尖角也进行了细微的变形,细节处理极具特色、不失严谨。
字体编号:0914
「庞门正道轻松体」字体的笔画的粗细对比明显,且某些笔画两端宽度不同,变化多端但又有规律的组合让字体表现出灵动活泼的气质。每个字符的高度以及宽度并不是完全统一的,会因为字符的笔画多少以及复杂程度有些许的变化,使字体在可爱轻松的风格中带着一些文艺气息。
字体编号:0913
「站酷小薇 LOGO 体」的字体笔画在设计上大胆尝鲜,简略了某些原本字体的造型,创新前卫,偏旁部首做了与字标 LOGO 类似的变形,结构简洁大方,同时字体稍作变形,在结构上更耐人寻味,极大提高了字体的辨识度和适用范围。笔画粗细对比明显,转折硬朗,使字体个性明显,十分干练,在情绪的表达上更加强烈,视觉效果也随之提高。
字体编号:0912
「unifont 点阵黑」是一个 Unicode 字体,其中,近二万八千字是中日韩(Cjk)的表意文字。「unifont 点阵黑」作为像素黑体,与「中文像素字体」相比,去掉了衬线,使字体整体更加简洁干净。同时,仔细观察字体,可以发现字体的重心下移,同时笔画更加紧凑,相同字号下,字形尺寸也相对较小。
字体编号:0911
「像素 Sliver」是一款主要用于游戏项目的像素字体,Silver 在字体中内置了 TRC 和 Lotcheck 兼容的 gamepad 按钮,还有完整的键盘和鼠标提示。字体重心下移,改变字体笔画形状,让字体下侧呈直线对齐,使得字体可爱独特,卡通感满满。
字体编号:0910
铁蒺藜体是一款造型尖锐的美术字体,是基于 Fontworks 出品的日文字体レゲエ One 扩充、调整字形,并添加 OpenType 特性,以满足简体中文的使用需求。铁蒺藜体已在 Github 上开源发布,可以自由免费使用(包括商用)、传播、修改,但不能单独出售字体文件。
字体编号:0909
明达明达无峰体是由明达老师出品的一款圆润无笔锋的字体,整体风格似水的凝聚形成“墨的无锋”,浑圆无折角,无笔锋,故名“无锋体”,字符数超过6000个,包含GB2312中的6763个汉字和49个全角中文标点符号(不含英文、数字),可适合于各个场景的应用。
字体编号:0908
薔薇灰姑娘体是一款充满魔幻神秘色彩且特立独行的字体,这款字体分为两个版本。分别是 黒薔薇 (日文名: 黒薔薇シンデレラ ) 和赤蔷薇 (日文名: 赤薔薇シンデレラ ) 两款。这两款的区别是, 黒薔薇的字体比较纤细,而赤薔薇的字体比较宽。
字体编号:0907
托加里特体(日文名:トガリテ),英文名称 togalite 。这是一款充满魔幻魅力的日系字体,主要以繁体中文为主,简体中文也部分支持,如果简体打不出来不妨可以试试繁体字。托加里特体拥有 7 种字重,字体风格比较有特色,每个字形中的每个笔画都有菱形似的小尖角的设计处理,具有强烈的视觉冲击感。整体设计风格都特别适合做机甲风,魔幻风的设计,以及各类广告和产品包装设计应用。
字体编号:0906
「字体传奇雪家黑」是一款带有复古气息的中文黑体,字体结构根据黑体进行设计,但又带有手写风格既视感,笔画上也有复古元素装饰应用,有点类似模仿雪花的感觉。这款字体可适用于海报、标题等平面设计场景中。
字体编号:0905
「猫啃网故障黑」是一款非常炫酷的故障风格的艺术黑体字,整个字体充满了浓郁的赛博朋克的风格,浓浓的科幻风格,适合应用于艺术设计、平面宣传设计、网页设计、海报设计等场景。个人和企业都可以免费使用本字体,包含商业用途。猫啃网故障黑覆盖范围与思源黑体CN版本基本一致,继承了思源字体字数满满的优点,用起来也不用担心缺字少字的问题,小伙伴们可以放心使用。
字体编号:0904
Typefesse 被列入 Typographica 的 2019 年最受欢迎的字体。Typefesse是一种俏皮的屁股形状的字体,其字母的呈现方式是通过身体的褶皱进行展示的。这款字体的设计师是一名来自法国的平面设计师 Océane Juvin ,毕业于巴黎埃斯蒂安的字体设计专业。设计师对于字体的灵感来自于两种相同又不同群体的结合——身体与字母,它们交替地隐藏或暴露自己,可以说不知是身体变了形,还是字母出了轨。
字体编号:0903
厚底黑这款字体是一款兼具厚重感与活泼感的标题字体,字形上用了弧度比较大的曲线让字体更加灵巧一些,也让它的每个笔画增厚许多,在西文的设计上,同样沿用了中文的特征,底也较厚,弧线也较为灵活,具有很好的视觉感,适合应用于艺术设计、平面宣传设计、网页设计等领域。Aa厚底黑允许任何个人与企业免费使用,包括全媒体商用用途无需取得任何书面授权,但禁止任何违法用途。
字体编号:0902
字魂网对得意黑字体进行了二次创作,发布开源字体「字魂扁桃体」,提供给所有用户可永久免费商用。「字魂扁桃体」这款字体继承了「得意黑」6° 倾斜的标志性特征,与此同时,提升了整个字体的重量感,并适当加宽了字身。通过代入喇叭口的设计,让得意黑标志性的微笑弧度“卷起来了”。
字体编号:0901
得意黑是一款由设计师 @oooooohmygosh与 @atelierAnchor锚坞合作设计的弯钩造型美术字体,不仅可以免费可商用,还是一款开源字体,任何人都可以参与设计。得意黑这个名字也是因弯钩这一设计而得此名。
—
最新免费可商用字体,都在这儿啦!删掉电脑字库,用这些字体告别侵权烦恼。
—
汇聚全网可免费商用字体,告别侵权烦恼,争做您的用字好帮手!精心分类,编号管理,让您查找更方便。
欢迎前往,免费下载数200+款可免费商用字体,持续收录更新中,感谢大家的支持。
(完)
相关问答
点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体点阵字体是把每一个字符都分成16×16或24×...
Bitmapfont点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体优点是显示速度快,不像矢量字体需要计算;其最...
16*16汉字,是指的汉字字模的点阵数。这是改变不了的。但你可以对它进行放大或缩小处理,但这样做会产生失真,因为点阵不是矢量的。放大后会产生边缘有锯齿效...
一个字母通常由多个点阵组成。一个字母的点阵数量取决于字体的大小和字母的形状。在常见的字体中,一个字母通常由几十个到几百个点阵组成。每个点阵代表字母的...
写字点着写是点阵字体。点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体,其中每个字形都以一组...
宋体所有的中文Windows系统都自带宋体,而且宋体同时又是一个中文字体,涵盖了几乎所有的字符,在某些特殊场合,需要同时出现中文和英文的代码时,会考虑直接使...
点阵字体是把每一个字都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体,其中每个字形都以一组二维像素信息表示。在计算...
具体参数:喷印高度:0.8-54毫米喷印距离:8mm左右(取决于喷印的信息和墨水类型)喷印字体:内置多种字体,且横条、竖条...具体参数:喷印高度:0.8-54毫米...
像素字体用于广告设计,点阵字体用于UI设计。而光栅字体呢,更冷门了。点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮...
A.32*32/8*1000/1024一个点阵有32*32这么多小格,每一个要么有数据,要么没有数据,用1bit就足够表示了,所以一个字体要32*32/8这么多byt...