uni-app weex中nvue原生编译模式下gcanvas属性绘画图片时安卓fillText中文不显示(IOS正常)英文数字正常
uni-app weex中nvue原生编译模式下gcanvas属性绘画图片时安卓fillText中文不显示(IOS正常)英文数字正常
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | windiws 11 | |
HBuilderX | 3.4.11 | HBuilderX |
示例代码:
ctx.fillText(‘画文字’, 110, 40)
### 操作步骤:
ctx.fillText('画文字', 110, 40)
预期结果:
ctx.fillText(‘画文字’, 110, 40)
### 实际结果:
ctx.fillText('画文字', 110, 40)
bug描述:
weex中nvue下且是原生编译模式,它里面有个gcanvas属性,但我在绘画图片时,安卓的 fillText 中文不起显示(IOS的中文显示),英文数字正常。
3 回复
提供可以复现demo,方便排查
大哥 这问题解决了嘛
在 uni-app
的 nvue
原生编译模式下,使用 gcanvas
绘制图片时,如果遇到 fillText
在 Android 上无法显示中文(但 iOS 正常,英文和数字正常)的问题,可能是由于以下原因导致的:
1. 字体问题
Android 系统默认可能不支持某些中文字体,或者字体文件未正确加载。你可以尝试指定一个支持中文的字体文件。
2. 字体加载问题
确保字体文件已经正确加载。你可以通过 gcanvas
的 loadFont
方法加载字体文件。
3. 字体名称问题
在 fillText
中指定的字体名称可能与实际字体文件名称不一致,导致无法正确渲染。
解决方案
1. 指定支持中文的字体
你可以使用 gcanvas
的 loadFont
方法加载一个支持中文的字体文件,然后在 fillText
中指定该字体。
const gcanvas = require('gcanvas');
// 加载字体文件
gcanvas.loadFont({
fontFamily: 'myFont', // 自定义字体名称
src: '/static/fonts/myFont.ttf', // 字体文件路径
}).then(() => {
// 字体加载成功后绘制文本
const ctx = gcanvas.getContext('2d');
ctx.font = '30px myFont'; // 使用加载的字体
ctx.fillText('你好,世界', 50, 50);
}).catch(err => {
console.error('字体加载失败', err);
});
2. 使用系统默认支持中文的字体
如果你不想加载自定义字体,可以尝试使用 Android 系统默认支持中文的字体,例如 sans-serif
或 serif
。
const ctx = gcanvas.getContext('2d');
ctx.font = '30px sans-serif'; // 使用系统默认字体
ctx.fillText('你好,世界', 50, 50);