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_PLATFORM
でAndroidとiOSでフォントの読み方を変えていたのですが、逆にiOSがフォントファイルパスを直接指定する方式になったのでPostScrpt名の設定が不要になりました。
修正内容
てきとうなヘッダーとかに定義
//#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #define MISAKI_FONT "fonts/misaki_gothic.ttf" //#else //#define MISAKI_FONT "MisakiGothic" //#endif
まあ、楽になったのでよかった。