cocos2dx ttf字体 android,cocos2dx2.2.2中使用ttf字体

在iOS,android和windows下使用ttf字体的套路都稍微有点不同,具体在下面几个方面:

1)安装:

windows平台    使用ttf字体时如系统字库中未安装该字体,则需右键点击字体文件进行安装,然后才可使用;

android平台     无需安装直接打包到apk的资源中即可;

ios平台            需要在xcode项目的info.plist中添加字体文件,具体位置如下:

064d489f28576406e897f916cef7ebbe.png

打开该文件后先查找是否有 Fonts provided by application 该项,如果没有则在文件如下图位置点击加号进行添加

4d2e0cc0228c588723af4f17cb3d8f7a.png

在Fonts provided by application选项中增加需使用的字体文件,添加后的截图如下:

e3c31ad973f65ab75e76acc1fec6c5f1.png

这里需要注意的是该ttf文件所在的目录路径,我这边的路径是resources/fnt/fangzheng.ttf, 这里注意根据自己的资源路径进行设置,完成这步后ios下字体资源安装就算搞定了。

2)使用:

windows平台,使用代码示例如下:

UILabel *pLabel = UILabel::create();

pLabel->setFontName("方正.ttf");

pLabel->setText("中国智造,慧及全球");

android和ios的调用代码和windows一样,但在设置字体名称时是有区别的,这里一定要注意:

pLabel->setFontName("方正.ttf");

在android中字体文件的名称不能为中文,表现为在打包apk时会输出下面的错误信息:

方正.ttf :error: Invalid filename. Unable to add.

这里只需把文件名改为非中文表示,比如改为 "fangzheng.ttf",然后修改设置字体名称的代码如下:

pLabel->setFontName("fangzheng.ttf");

再重新进行apk打包就可以了。

在ios下会稍微麻烦些,主要原因是在ios下设置的字体名称不是文件名,而是该字体真实的字体名称,关于如何获取真实字体名称,可以借鉴下面这位同学的技术贴,

具体原理是新建一个ios应用项目,将需要使用使用的ttf字体包含进去,具体方法和上面讲的ios安装ttf字体套路一样,只是plist的位置不一样而已,然后通过下面的代码:

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];

NSArray *fontNames;

NSInteger indFamily, indFont;

for (indFamily=0; indFamily

{

NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);

fontNames = [[NSArray alloc] initWithArray:

[UIFont fontNamesForFamilyName:

[familyNames objectAtIndex:indFamily]]];

for (indFont=0; indFont

{

NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);

}

}

将该项目所支持的所有字体的名称信息全部输出到 target output中,如下图:

d7926ae52c4eb6c187325dce94cb0ee0.png

然后复制所有输出的内容保存到文本文件中,修改项目属性将刚才添加ttf字体移除,再次执行得到新的支持字体的信息,将这两个文本进行对比即可找到自己添加的ttf字体的真是font name,

这里注意的是需使用的是 Font name,不是Family name

详细的步骤可参见下面这位同学分享的技术帖:

我根据上面帖子中的方法找到的字体名字为 FZCTHFW--GB1-0

修改设置字体的代码如下:

pLabel->setFontName("FZCTHFW--GB1-0");

由于在ios和android中使用的字体名称不一致,这个可以定义一个全局变量,然后根据不同平台设置不同的值即可,示例如下:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

std::string FONT_NAME = "fangzheng.ttf";

#else

std::string FONT_NAME = "FZCTHFW--GB1-0";

#endif

到此处在cocos2dx2.2.2中跨平台使用的ttf字体就基本搞定了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值