嵌入字体

1. 字体介绍

由于andriod设备种类繁多、android的字体文件不统一,每个系统默认的中文字体路径有差异(再加之国内很多厂商个性化定制),读取font.ttf是一个难题。

LayaNative的策略是根据android的系统版本号,枚举出字体文件的路径,如果加载成功,则使用系统默认字体,如果加载不成功,就从LayaBox网站下载一个字体存储到本地,第二次进入时,直接读取本地字体。

开发者在打包app的时候,要默认将字体打包到app中,如果在网络上下载4MB的TTF字体,会影响用户体验。

2.如何嵌入字体

1、构建好android项目,找到assets目录,再创建一个font目录,把要植入的字体文件改名为“layabox.ttf”,放到该目录下。如图1所示:

图1

Tips:

模板工程默认是内嵌了ttf字体,这样会导致apk体积增加,如果你比较在乎apk大小,可以删除assets/font/layabox.ttf这个字体文件。

3.iOS嵌入字体

1、LayaNative支持iOS嵌入默认字体,具体做法同android,在resource下创建font目录,把要嵌入的字体改名为layabox.ttf即可,如下图2所示:

图2

3.1版本后字体修改

3.1版本后优化了字体系统,默认优先使用系统字体。如果需要嵌入自定义字体,需要注册到系统后才能使用。下面示例展示两种嵌入方式。

1.读取本地assets目录字体文件,然后代码通过registerFont注册,后续通过注册时传入的字体名称layabox使用关联字体

function registerFont() {
    var assetFontData = conch.readFileFromAsset('font/layabox.ttf', 'raw');
    if (assetFontData) {
        if (conch.registerFont("layabox", assetFontData)) {
            log('字体注册成功');
        }
        else {
            log('字体注册失败');
        }
    }
}

2。通过ttfloader下载远程字体文件,注册时传入的字体名称为ttf文件名

Laya.loader.load("res/maobi.ttf", Loader.TTF).then(() => {
    var label: Label = new Label();
    label.font = "maobi";
    label.text = "自定义嵌入字体";
    label.fontSize = 30;
    label.color = '#FFFFFF';

    this.Main.box2D.addChild(label);
    label.pos(30, 50)
});
Copyright ©Layabox 2022 all right reserved,powered by LayaAir Engine更新时间: 2024-02-21 17:22:35

results matching ""

    No results matching ""