cocos2d-x lua BMFont中文问题解决


在研究用lua使用cocos2d-x 显示中文的问题,好像对ttf支持的不是很好,只能用CCLabelBMFont了,看了下BMFont工具生成的fnt文件,发现英文字符的char id 和asic2一样,

但是中文id 比如“一”这个汉字的char id 为 19968,google一下发现这是unicode编码。

CCLabelBMFont代码中生成字体纹理函数为void CCLabelBMFont::createFontChars()

问题的关键在这里啊,它使用的是string,也就是不支持宽字符,那当然找不到汉字对应的id了(还有个变量要改一下kCCBMFontMaxChars 默认设得很小,看情况设得大点,在对应头文件中)。

这样看来只要把string转换成wstring就能找到char id了,

转换代码:

		setlocale(LC_ALL,"CHS");
		wchar_t *wstrBuf = new wchar_t[strlen(m_sString.c_str())]; 
		swprintf(wstrBuf,L"%S",m_sString.c_str());
		wstring m_wsString(wstrBuf);

最后:delete wstrBuf;



重新编译后接着运行代码,居然还是不能显示中文,继续查,发现传进来的theString一个中文占3个字节(这是什么编码?变长unicode?)

然后我把lua的编码从uft-8换到ANSI编码,问题就解决了,顺利找到中文字符的char id,并且显示出来。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值