微信系统字体
游戏基本会使用中文,中文字体大小少则2-3M。
通过微信系统字体,从本地加载中文,可节省启动下载的资源量。再不支持使用微信系统字体时,回退成通过CDN下载后备字体的形式。
版本要求
转换插件 >= 202306292010
提供了 WX.GetWXFont
接口用于加载后备/系统字体
其中,微信客户端满足以下版本要求时,可从本地加载字体,无需网络下载
- 安卓微信客户端版本 >= 8.0.34
- iOS微信客户端版本 >= 8.0.39
若不满足客户端版本要求,首次从网络下载;当符合缓存规则时,后续从本地文件缓存加载,因此必须提供 CDN 后备字体。
代码示例
详细示例可参考系统字体demo
csharp
var fallbackFont = "https://www......com/字体文件.ttf";
WeChatWASM.WX.GetWXFont(fallbackFont, (font) =>
{
text.font = font;
tmpText.font = TMP_FontAsset.CreateFontAsset(font);
});
相关日志
- 打开插件调试日志
- 日志中查看以下字样
[PLUGIN LOG xxx][font]
,例如- 使用微信字体:
[PLUGIN LOG xxx][font] load font from local
[PLUGIN LOG xxx][font]读取字体文件耗时=xxms, 字体大小=xxMB
- 使用网络字体:
[PLUGIN LOG xxx][font] load font from network, url=https://www......com/字体文件.ttf
[PLUGIN LOG xxx]xhr_onload: 字体文件.ttf,耗时=xxms,size=xx,无缓存
- 使用微信字体:
异常日志:
[PLUGIN LOG xxx][font]无中文字体
:本地无可用系统字体,常见为安卓系统版本低于7.1[PLUGIN LOG xxx][font]无字体文件内容
:读取字体文件失败,未知原因,可提供微信日志给平台侧排查
系统字体字符集
使用GetWXFont加载的字体集合可以在转换面板进行自定义,以减少加载的字体文件大小:
若需要某些特殊Unicode/仅需要部分Unicode,可以直接将需要的字符全部填入自定义Unicode中。
Unicode集合参考:
js
// https://unicode.yunser.com/unicode
const unicodeRange = [
// 基本汉字 https://www.unicode.org/charts/PDF/U4E00.pdf
[0x4e00, 0x9fff],
// 基本拉丁语(英文大小写、数字、英文标点)https://www.unicode.org/charts/PDF/U0000.pdf
[0x0, 0x7f],
// 中文标点符号 https://www.unicode.org/charts/PDF/U3000.pdf
[0x3000, 0x303f],
// 通用标点符号 https://www.unicode.org/charts/PDF/U2000.pdf
[0x2000, 0x206f],
// CJK字母及月份 http://www.unicode.org/charts/PDF/U3200.pdf
[0x3200, 0x32ff],
// 中文竖排标点 http://www.unicode.org/charts/PDF/UFE10.pdf
[0xfe10, 0xfe1f],
// CJK兼容符号 http://www.unicode.org/charts/PDF/UFE30.pdf
[0xfe30, 0xfe4f],
// 杂项符号 http://www.unicode.org/charts/PDF/U2600.pdf
[0x2600, 0x26ff],
// CJK特殊符号 http://www.unicode.org/charts/PDF/U3300.pdf
[0x3300, 0x33ff],
// 全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母 http://www.unicode.org/charts/PDF/UFF00.pdf
[0xff00, 0xffef],
// 装饰符号 http://www.unicode.org/charts/PDF/U2700.pdf
[0x2700, 0x27bf],
// 字母式符号 https://www.unicode.org/charts/PDF/U2100.pdf
[0x2100, 0x214f],
// 带圈或括号的字母数字 https://www.unicode.org/charts/PDF/U2460.pdf
[0x2460, 0x24ff],
// 数字形式 https://www.unicode.org/charts/PDF/U2150.pdf
[0x2150, 0x218f],
// 货币符号 https://www.unicode.org/charts/PDF/U20A0.pdf
[0x20a0, 0x20cf],
// 箭头 https://www.unicode.org/charts/PDF/U2190.pdf
[0x2190, 0x21ff],
// 几何图形 https://www.unicode.org/charts/PDF/U25A0.pdf
[0x25a0, 0x25ff],
// 数学运算符号 https://www.unicode.org/charts/PDF/U2200.pdf
[0x2200, 0x22ff],
];