kanzi切换多语言卡顿优化方案

背景:用kanzi开发HMI项目,需要支持多个国家语言,每个语言有不同的字体,切换语言,画面卡顿明显

1. 卡顿原因

切换语言会切换字体,并刷新文字的显示,如果字体包中有几万字,那么渲染一个字符需要查询Unicode码很久,现象就是切换英文很快,切换中文等很卡,因为中文的Unicode码大。

2. 优化原理

HMI界面的大部分文字都是固定的,即使是中文,也只使用的几百个字,字体中上千上万的字符都是多余的。把ttf字体中多余字符剔除,就可以得到一个很小的ttf文件,包含的字符就很少,切换渲染会很快。

3. 方案实施

3.1 在Kanzi Studio导出语言表

在这里插入图片描述
在这里插入图片描述

获得po文件,里面的msgstr就是翻译的文字
在这里插入图片描述
在这里插入图片描述

3.2 写一个工具,提取msgstr

在这里插入图片描述

3.3 写一个网站,裁剪ttf

借助js的fontmin包裁剪ttf,制作网站能方便项目使用

const fontmin = new Fontmin()
        .src(fontPath) // 输入字体文件路径
        .use(Fontmin.glyph({ // 使用 glyph 插件指定要保留的字符
            text: text // 你也可以从 req.body 获取其他字符集参数
            // 或者使用 file: 指定一个包含字符的文件
        }))
        .dest(outputPath); // 输出目录

在这里插入图片描述

在这里插入图片描述

ttf字体大小下降到24kb

在这里插入图片描述

3.4 kanzi studio使用裁剪后字体,卡顿没有了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值