Cocos Label 泰语换行/截断问题

2,087 阅读1分钟

基本信息

  • Cocos Creator v2.4.8
  • macOS Catalina
  • iOS 15.4, iPhone 12 mini

问题

需求是文本的最大宽度固定, 内容太多就自动换行
按理讲, 把Label的Overflow设置为RESIZE_HEIGHT就可以了

在语言是英文和中文的时候, 一切都还正常
但是换成泰语以后, 随着文字内容的变化, 自动换行可能会出现左右截断且带有一个圈一样的奇怪字符:

สิทธิ์รับของรางวัลมากกว่าเดิม ที่what the hellสิทธิ์รับของรางวัลมากกว่าเดิม ที่

image.png

尝试稍微把字号调大一点, 看起来又是正常的了 image.png

不理解, 还好有同事, 在他帮助下在Cocos论坛发现了好几个情况一样的帖子:

确定是Cocos在Overflow为RESIZE_HEIGHT下, 自动换行有问题引起的

解决方案

  • a, 自己改源码, 修复这个bug, 上面的帖子里有给出实现
    • pros: 根本性解决问题
    • cons: 要确保bug改对(最好懂泰文...); 对于多人维护的项目来说, 大家都要使用这个修复bug后的引擎版本
  • b, 自己手动加换行符\n, 确保每一行都小于最大宽度, 这样Cocos就不会自动换行就不会发生上面的问题了
    • pros: 感觉没有....
    • cons: 太费人力, 对于有大段文字的地方来说会让人崩溃...而且硬编码换行符进去的话对于不同机型来说换行的地方都是一样的...

自觉还改不动cocos, 头大, 目前项目的多行文本还很少, 估计会先使用方案b