如何创建带有自定义颜色的中文和日文字符的标签

How to create Label with Chinese and Japanese characters with custom color

我使用 cocos2d-x (c++) 版本。 tvOS (Apple TV) 上的 3.8

我不想使用 TTF 版本,因为我没有像样的 Arial TTF 字体,它包括中文和日文字符,但文件大小可以接受(最多 1MB)。

如果我使用 Label::createWithSystemFont() 这不允许更改文本颜色。至少我没找到怎么改。

auto *n =  Label::createWithSystemFont("洗牌位置", font, fontSize, dimensions, hAlignment, vAlignment);
n->setColor(Color3B::RED);
n->setTextColor(Color4B::RED);

这会产生黑色文本...

编辑:

在绝望的情况下,我尝试了一些你可能认为我疯了的事情。 但它也不起作用。结果还是黑的。您知道如何更改标签的颜色吗?

Node* NodeFactory::colorizeLabel (Label *lbl, const Color3B& color)
{
     auto *maskSprite = lbl;

    CCRenderTexture * rt;
        rt = CCRenderTexture::create(
                                     maskSprite->getContentSize().width*maskSprite->getScaleX(),
                                     maskSprite->getContentSize().height*maskSprite->getScaleY()
                                     , kCCTexture2DPixelFormat_RGBA8888
        );
        maskSprite->setPosition(ccp(
                                    (maskSprite->getContentSize().width*maskSprite->getScaleX())/2,
                                    (maskSprite->getContentSize().height*maskSprite->getScaleY())/2
                                    )
                                );


    //rt->begin();
    rt->beginWithClear(120, 120, 0, 0);
    ((Node*)maskSprite)->visit();
    rt->end();

    Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
    retval->setColor(Color3B::WHITE);
    //retval->setBlendFunc((ccBlendFunc) { GL_SRC_COLOR, GL_ONE });

    return retval;
}

已找到 tvOS 上彩色系统字体的解决方案: 修复:CCDevice-tvos.mm:

原始数据:

[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle }];

新:

[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle,
    NSForegroundColorAttributeName:[UIColor colorWithRed:info->tintColorR green:info->tintColorG blue:info->tintColorB alpha:info->tintColorA]
}];