前言
使用点阵字库的方式来汉化或者增强佳明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°的北京,热情高涨。