关于字符编码的知识,请参考前辈的博客:字符串和编码格式
这里使用的是cocos2dx的2.2.3版本,底层的RictText换行机制不能满足中文换行,需要改动。由于在3.x的版本已经优化了,而且以后的项目也会转到3.x的版本,所以这里只是做一个记录,对底层换行机制的思想做一个分析,仅供学习用。
以文本换行为例(图片同样的道理),先用一个不带换行的label,算出该label的总长度L,然后和程序设定的宽w比较,w<L则一行足以,否则按w在L中比例来截取原字符串,作为第一行,剩余部分递归处理。看代码:
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx
10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx
10xxxxxx 10xxxxxx
将上面的utf8_substr函数添加到RichText.cpp中,替换类中用到substr的地方即可。
原文地址:http://blog.csdn.net/ys5773477/article/details/46508617