Cocos2dx 3.1 Label::createWithTTF 不显示ttf文件中缺少文字

在3.x版本中,使用Label::createWithTTF 创建ttf字体,如果ttf字体不包含要显示的文本,那么引擎会略过不显示该文本。

    if( theLabel->recordLetterInfo(letterPosition,tempDefinition,i) == false)
    {
        log("WARNING: can't find letter definition in font file for letter: %c", c);
        continue;
    }

期望是如果ttf不包含该文本时,使用系统自带的字体代替显示!

示例代码:
auto label = Label::createWithTTF(“草薙剑”,“fonts/FZYHJW.ttf”,24);
显示为“草剑”

现在的实现确实不是你想要的,字体中必须包含你要显示的字,所以用得时候只能用相应地字体文件了。

如果这样,在实际应用中只能用比较全的中文字体,动态选择字体方案不实际(字体库庞大,去判断一个字体库是否有不能显示的字,代价很大)。

另外,新的label还有一个小问题,TAB字符(\t)无法显示也提示:WARNING: can’t find letter definition in font file for letter:

你用什么版本,我地3.1的版本,可以显示的啊。

auto label = Label::createWithTTF("hello 中文\tmac", "fonts/华文仿宋.ttf", 32);
    label->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
    this->addChild(label);

```
 

迷你简艺黑,用“草薙剑”这3个字

是否有其他解决方案?

如果能够支持将ttf安装的手机上,然后用系统字体的方式进行创建label,应该可以解决这个问题。

各位大神,我也是3.1版本的,用下面代码创建Label失败,显示Label为NULL啊
auto s = Director::getInstance()->getWinSize();
TTFConfig config(“fonts/tahoma.ttf”,30);
auto ttf1 = Label::createWithTTF(config, “Alignment 1\nnew line”, TextHAlignment::CENTER);
ttf1->setPosition(Vec2(s.width / 2, (s.height / 6) * 3 -30));
this->addChild(ttf1);
这是TestCpp里的代码,然后tahoma.ttf资源也加到工程的Resource中了,可是还是不行啊,求大家帮帮忙!

请问大侠 有没有计划修改成 把字库中没有的字用系统字替换 ?

同遇到该问题
:3: