きょこみのーと

技術に関係ないほうのブログ

Cocos2d-x3.0rc2でTTFフォントのpostScript指定は不要

rc2でLabel::create廃止メソッドになったので、Label::createWithTTFを呼ぶように対応したら、 以前に書いた記事「Cocos2d-xに美咲フォント(ttf)を導入する」の内容だとiOSでヌルポで落ちます。

以前作ったFont呼び分けるifdefがこちら

てきとうなヘッダーとかに定義
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define MISAKI_FONT "fonts/misaki_gothic.ttf"
#else
#define MISAKI_FONT "MisakiGothic"
#endif

ぬるぽになるのは以下の箇所

CCLabel.cpp
Label* Label::createWithTTF(const std::string& text, const std::string& fontFile, float fontSize, const Size& dimensions /* = Size::ZERO */, TextHAlignment hAlignment /* = TextHAlignment::LEFT */, TextVAlignment vAlignment /* = TextVAlignment::TOP */)
{
    auto ret = new Label(nullptr,hAlignment,vAlignment);

    // ★ iOSの場合PostScript名を指定してたので、
    // ★ ここでfontFileを探して見つからなくてifに入れなくてnullptrをreturnします
    if (ret && FileUtils::getInstance()->isFileExist(fontFile))
    {
        TTFConfig ttfConfig(fontFile.c_str(),fontSize,GlyphCollection::DYNAMIC);
        if (ret->setTTFConfig(ttfConfig))
        {
            ret->setDimensions(dimensions.width,dimensions.height);
            ret->setString(text);

            ret->autorelease();

            return ret;
        }
    }

    delete ret;
    return nullptr;
}

CC_TARGET_PLATFORMAndroidiOSでフォントの読み方を変えていたのですが、逆にiOSがフォントファイルパスを直接指定する方式になったのでPostScrpt名の設定が不要になりました。

修正内容

てきとうなヘッダーとかに定義
//#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define MISAKI_FONT "fonts/misaki_gothic.ttf"
//#else
//#define MISAKI_FONT "MisakiGothic"
//#endif

まあ、楽になったのでよかった。