原文链接: http://www.cnblogs.com/zouzf/p/3985330.html
在wp8平台上,CCLabeTTF显示中文不会自动换行,看了下源码,原来底层的实现是根据text的空格进行判断的,每遇到一个空格就判断是否超过label的宽度,超过就换行,但text如果是中文的话,哪来的空格给换行~~
以下实现全部参考 http://blog.csdn.net/hopingwhite/article/details/38414917 ,整理后的代码如下:
在CCFreeTypeFont.h里的CCFreeTypeFont类添加两个方法:
FT_Error addLine(const std::string& line);
void endLine_chinese();
实现如下:
1 void CCFreeTypeFont::endLine_chinese() 2 { 3 if(m_currentLine) 4 { 5 m_lines.push_back(m_currentLine); 6 compute_bbox(m_currentLine->glyphs, &m_currentLine->bbox); 7 m_currentLine->width = m_currentLine->bbox.xMax - m_currentLine->bbox.xMin; 8 m_textWidth = max(m_textWidth,m_currentLine->bbox.xMax - m_currentLine->bbox.xMin); 9 m_textHeight += m_lineHeight; 10 m_currentLine = NULL; 11 } 12 } 13 14 15 16 FT_Error CCFreeTypeFont::addLine(const std::string& line) 17 { 18 wchar_t * pwszBuffer = nullptr; 19 20 int num_chars = line.size(); 21 int nBufLen = num_chars + 1; 22 pwszBuffer = new wchar_t[nBufLen]; 23 if (!pwszBuffer) 24 { 25 return -1; 26 } 27 28 memset(pwszBuffer, 0, nBufLen); 29 num_chars = MultiByteToWideChar(CP_UTF8, 0, line.c_str(), num_chars, pwszBuffer, nBufLen); 30 pwszBuffer[num_chars] = '