佳明手表APP开发系列02——汉字和图标的标准显示

文章介绍了如何使用BmpFont文件来替代繁琐的点阵字库方法,以更便捷地在佳明App中显示汉字和符号。通过字体转换工具bmfont,创建BmpFont的.fnt配置文件和.png图像文件,然后在MonkeyC中配置并使用这些资源,可以实现自动化渲染字体,简化开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用点阵字库的方式来汉化或者增强佳明App的显示是一种传统的方法,操作繁琐,效果也一般。笔者通过进一步的学习,发现佳明的MonkeyC支持一种新的方式,即 BmpFont文件的显示,可以像使用普通字符一样对包括汉字在内的符号进行输出。 这无疑是减轻了开发压力,使开发过程更加流畅。下面简单介绍一下,BmpFont的使用过程。

BMP Font 简介

Bmp Font文件由两部分组成,.fnt 文件和.png, .fnt 是配置文件,里面记录了字体的属性,主要是记录了字体的编码和对应图像在png文件中的位置。png文件保存了对应的字体的图像,代码根据配置文件找到对应字符的位置和范围,将图形从png文件里取出,然后渲染到屏幕上。这一过程的操作都是自动的,和使用系统字体一样的操作,因此非常方便。

转换过程介绍

佳明推荐的转换软件是:bmfont 有32 和64 位两个版本,这是一个第三方公司开发的免费软件。
其使用说明和下载地址:http://www.angelcode.com/products/bmfont/

字体转换工具bmfont 使用方法

根据笔者经验,有两点比较重要
1、输出字体的尺寸控制
2、字符文件的编写

下面分别介绍,
1.输出字体的尺寸控制,如图
在这里插入图片描述
这个尺寸决定了png文件中的字体的(图像)的大小,其余参数,使用了默认值,可根据实际情况自己调整。

2.字符选择
你需要的文字符号基本是固定的,加上手表的内存限制,因此只转化你需要的文字就可以了。

转化时准备一个txt文件,注意,保存时请使用 utf8-bom 编码保存,否则这个软件会认为有错。

笔者使用的是:Notepad++(可能比较老了),编辑的文件举例如下
在这里插入图片描述
,保存后,使用
在这里插入图片描述
选择文件,然后

在这里插入图片描述
就可以了。

在MoneyC 中使用bmpfont

1.在resource.xml中进行如下配置
在这里插入图片描述
其中 antialias 请根据实际情况进行选择,有的手表或许支持 为 true的的情况,但是一般不支持。
filename就是上面生成的文件名。
id 对应的是字体资源的ID,具体看下面说明。filter 是你程序需要的文字或者字符,请根据实际情况配置。
2.代码中使用bmgfont

首先定义一个 字体资源变量,如下代码

 hidden var _myIconsFont as FontResource?;// for displaying  ❤ symbol ont sund 2023-05-11 

获取这个资源

    _myIconsFont = WatchUi.loadResource($.Rez.Fonts.id_font_myIcons) as FontResource;

注意上面的 id_font_myIcons 就是resource 文件中定义的id;

输出

      var font = _myIconsFont;
       if (font != null) {
  
            item.setFont(font);
            item.setText("心");// draw heart icon 
            //item.setColor(Graphics.COLOR_DK_RED);
         
        }
      

fnt文件里面保存了 编码和对应字体图像的配置,如下所示:
在这里插入图片描述
上面的id就是utf8-bom编码,程序根据你输入的汉字(编码), 查找这个文件就可以找到对应的字形对应的图像(二色图像),如图

在这里插入图片描述
另外,你可以根据实际情况,自己建立映射关系,例如笔者就用 “心”字和 ❤ 建立了映射关系,在手表上显示了 ❤图标。

如图:
在这里插入图片描述
是记

MaraSun BJFWDQ

烈日炎炎似火烧,心中好似滚油浇。
38°的北京,热情高涨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值