在android中使用skia时中文乱码

先下载NotoSansHans-Regular.otf字体

地址https://download.csdn.net/download/weixin_42001089/10498337

然后将其从pc上传到android机上,具体的就是打开cmd运行下面

adb push D:\NotoSansHans-Regular.otf /sdcard/

其中D:\NotoSansHans-Regular.otf是电脑上中文字体的所在路径

/sdcard是要放到android系统的路径

可以用adb shell查看上传结果。

然后最关键的两步就是下面:

const char *pat = "/sdcard/NotoSansHans-Regular.otf";
paint.setTypeface(SkTypeface::MakeFromFile(pat));

其中setTypeface的作用就是设置字形,具体可以查看其官网https://skia.org/user/api/SkPaint_Reference

这个时候应该就可以支持中文了



经过检验,该方法日文和中文都支持,但韩文不可以,所以还是用DroidSansFallback.ttf字体吧,以上下载链接中也有,具体操作方法一样

如果还是不行的话可以试着下面的宽字节转化为char

const wchar_t *wstr = L"我心永恒 My Heart Will Go On ";
int requiredsize;
char* old_locale = strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, setlocale(LC_ALL, ""));
requiredsize = wcstombs(NULL, wstr, 0);
char *text;
text = (char *)malloc(requiredsize + 1);
wcstombs((char *)text, (const wchar_t *)wstr, requiredsize + 1);

其中text就是转化后的char型,直接拿去用就可以了

不过最后别忘了

setlocale(LC_CTYPE, old_locale);
free(old_locale);
delete[]text;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值