cocos2d-x中文label 的 size计算错误的bug

这几天用cocos2d-x在window做个项目,发现中文label的时候算出来的Texture size不对。 具体原因是在CCImage中 sizeWithText里没有把utf8转回 utf16,而直接用DrawTextA来计算
文字大小。我把代码贴一下:
// utf-8 to utf-16
wchar_t * pwszBuffer = 0;
int nBufLen = nLen + 1;
pwszBuffer = new wchar_t;
CC_BREAK_IF(! pwszBuffer);
nLen = MultiByteToWideChar(CP_UTF8, 0, pszText, nLen, pwszBuffer, nBufLen);
// measure text size
//DrawTextA(m_hDC, pszText, nLen, &rc, dwCalcFmt);
DrawTextW(m_hDC, pwszBuffer, nLen, &rc, dwCalcFmt);

CC_SAFE_DELETE_ARRAY(pwszBuffer);

先收藏了,回家有windows再试。
能重现size计算错误的代码能否贴一下?我比较懒

int GBKToUTF8(std::string& gbkStr, const char* pszIn, const char* fromCode=“gb2312”, const char* toCode=“utf-8”)
{
iconv_t iconvH;
iconvH = iconv_open(toCode ,fromCode);
if (iconvH == 0)
{
return -1;
}

const char** pin = &pszIn;
size_t strLength = strlen(pszIn);
size_t outLength = strLength*4;
char* outbuf = (char*) calloc(outLength,1);
char* pBuff = outbuf;
if (-1 == iconv(iconvH, pin, &strLength, &outbuf, &outLength))
{
	iconv_close(iconvH);
	return -1;
}

gbkStr = pBuff;
iconv_close(iconvH);
return 0;

}

CCTexture2D* texture = new CCTexture2D();
std::string str;
GBKToUTF8(str, “中国中国中国中国中国”);
texture->initWithString(str.c_str(), “宋体”, 14);
texture->getContentSize().width;
十个汉字宽度应该是140,但是得到的是210,不转成utf8得到的结果是正确的,但显示不正确;

关注。:o
这个问题有解决方案吗

这个问题似乎几个版本前就一直存在。。。。 用中文左对齐 就比英文多空几个格(win32下)。。似乎都是这类问题

mark一下,关注社区的解决方案。

嗯,这个问题的确存在,英文论坛也有人反馈了(http://www.cocos2d-x.org/boards/12/topics/11374),我们会尽快修复这个问题,谢谢。

iconv是开源的,可以下载后用cygwin编辑就可以移植到android上了。