(转) cocos2dx 显示中文
总结一句话,就是UTF-8编码。
1. 中文FNT字体文件制作
使用Bitmap Font Generator制作字体文件
选择Opotion->FontSetting,来设定需要导出的字体,主要注意选择Unicode编码,其他的size就是设置字体大小,height设置100%就行了。
导出设置,padding其实就是字的边缘留多大的空间,主要是考虑后期加入一些特效。bit depth要选择32的,不然背景是不会透明的!
presets选择一种自己要的样式就行了,我这里选的是 黑字白底。下边的 Texture选择 png。
具体字符的选择,可以通过主界面右侧的列表选择字符,但是数量很大,尤其是汉字,太多了。。。
选择菜单 Edit->Selecting text from file... 选择一个文件,里面包含你想生成字体的文字,使用文本工具创建一个txt的文件
通过Selecting text from file载入,如果弹出错误,就说明这个1.txt文件的编码方式不是utf-8的,需要修改它的编码方式,很多文本编辑器都能做到。
载入之后,option->Save bitmap font as...就会生成一个 fnt文件和一个png文件,可以打开png查看是不是自己想要的效果
字体文件就搞定了。
2. cocos2dx字体文件使用
先添加编码转换函数
#include "iconv/iconv.h" #pragma comment(lib,"libiconv.lib") int GBKToUTF8(std::string &gbkStr) { iconv_t iconvH; iconvH = iconv_open("utf-8","gb2312"); if(iconvH == 0){ return -1; } const char* strChar = gbkStr.c_str(); const char** pin = &strChar; size_t strLength = gbkStr.length(); char* outbuf = (char*)malloc(strLength*4); char* pBuff = outbuf; memset(outbuf,0,strLength*4); size_t outLength = strLength*4; if(-1 == iconv(iconvH,pin,&strLength,&outbuf,&outLength)){ iconv_close(iconvH); return -1; } gbkStr = pBuff; iconv_close(iconvH); return 0; }
这个库cocos2dx都是自带的,搜一下就能找到。
std::string str2 = "得分:"; GBKToUTF8(str2); scoreItem=CCLabelBMFont::create(str2.c_str(),"fonts/Felt.fnt");
这样就可以显示汉字了!