uni-app gcanvas 在nvue中不显示汉字(中文)
uni-app gcanvas 在nvue中不显示汉字(中文)
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.1.18
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:华为手机
页面类型:nvue
打包方式:云端
示例代码:
```cpp
const ganvas = this.$refs['gcanvess'];
this.canvasObj = enable(ganvas, {
bridge: WeexBridge
});
this.context = this.canvasObj.getContext('2d');
const ctx = this.context;
console.log(ctx)
ctx.drawImage(
'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_match%2F0%2F10548990761%2F0.jpg&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1631085943&t=7e86ef0276726e7d2a5ed21f5822c1ad',
0,
0,);
ctx.setFontSize(40)
ctx.fillText('这是个中文', 00,0)
ctx.draw(false)
操作步骤:
直接吧官方demo复制粘贴
预期结果:
显示中文
实际结果:
英文正常显示,但是中文不会显示
bug描述:
使用ctx.fillText('中文字题', 0,0)不显示
使用ctx.fillText('英文字题', 0,0)显示
英文正常显示,但是中文不会显示
这BUG这么明显,怎么还能发布当插件。。
更多关于uni-app gcanvas 在nvue中不显示汉字(中文)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
官方都不推荐使用。。。
更多关于uni-app gcanvas 在nvue中不显示汉字(中文)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题是由于 gcanvas 在 nvue 环境下默认不支持中文字体导致的。gcanvas 的底层实现依赖于原生 canvas,在 Android 平台上默认字体不包含中文字符集。
解决方案:
-
加载自定义字体文件(推荐): 将中文字体文件(如 .ttf 格式)放入项目静态资源目录,在绘制前加载字体:
// 加载字体(假设字体文件放在 static/font.ttf) ctx.font = '40px "YourFontName"'; // 或者使用完整路径 ctx.font = '40px url(/static/font.ttf)'; ctx.fillText('这是个中文', 0, 0); -
使用系统字体别名: 尝试使用已知支持中文的系统字体别名:
ctx.font = '40px sans-serif'; // 或 'serif', 'monospace' ctx.fillText('这是个中文', 0, 0); -
确保字体加载完成: 如果使用网络字体,需要确保字体加载完成后再绘制:
const fontFace = new FontFace('MyFont', 'url(/static/font.ttf)'); fontFace.load().then(() => { ctx.font = '40px MyFont'; ctx.fillText('这是个中文', 0, 0); ctx.draw(false); });

