cocos2d-x使用第三方的TTF字体库

Cocos2d-lua中使用自定义TTF字体 由于项目需要,要用第三方字体来显示游戏文字。TTF字体的创建是这样的 --Lua版本 CCLabelTTF:create(text, fontName, fontSize) 如果fontName不填写,则默认是选用系统字体。 我把自定义字体(如图) Paste_Image.png 丢进资源文件夹中,然后进行加载,即 CCLabelTTF:create("test", "res 阅读详情

最近再做一款手机游戏,用的是cocos2d-x引擎,对于这个引擎我不太熟悉,以前我是做苹果系统的UI界面的,对于cocos2d-x这个引擎接触的比较少。后来遇到一个问题就是游戏中的很多角色都需要使用特殊的字体,比如隶书,行楷等等。但是ios内部不支持这么复杂的中文字体,怎么办呢,不多废话了,直接本主题吧。。。

1.从网上下载你所需要的字体,比如xxx.ttf,我这里推荐一个网站,http://www.zhaozi.cn/s/all/ttf/ (这是我们部门的美工推荐给我的)。

2.打开Xcode,我是在Xcode下进行编码的,至于以后移植安卓,再做介绍。打开Xcode的plist文件。如下图,首先把需要的字体文件添加进Resource目录下,然后打开这个目录下的info.plist文件(cocos2d和cocos2d-x的名字是info.plist,如果自己建别的工程,名字可能会不同),右键新建一行,起名叫做Font provided by application ,然后把你想要添加的自己写入相应的item中,注意要带后缀名。



3.我们已经把自己加入了系统中,但是如何使用呢?我看过不少网站上写着说TTF字库的名字就是字体名字,有的说你双击打开字库,窗口上的标题就是自己名字,例如


或许对于英文字库来说,可能是正确的,但是对于中文字库来说,错误率很高,设置说几乎都是错的,这也是为什么我要写这篇文章。我研究了好几天,试了很多方法,才把这个问题搞定了。下面我来介绍一下我的方法吧。

首先新建一个cocos2d或者基础的ios应用工程,注意不是cocos2d-x的,因为我们要用到oc的代码,我就新建了一个cocos2d的工程,在HelloWorldLayer类的init()方法改写成如下:


-(id) init
{
    // always call "super" init
    // Apple recommends to re-assign "self" with the "super's" return value
    if( (self=[super init]) ) {
        
        
        NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
        NSArray *fontNames;
        
        NSInteger indFamily, indFont;
        
        for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
        {
            NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
            
            fontNames = [[NSArray alloc] initWithArray:
                         
                         [UIFont fontNamesForFamilyName:
                          
                          [familyNames objectAtIndex:indFamily]]];
            
            for (indFont=0; indFont<[fontNames count]; ++indFont)
                
            {
                
                NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
                
            }
            
            [fontNames release];
            
        }
        
        [familyNames release];
    }
    return self;
}

运行程序,控制台就会把当前系统支持的字体都打印出来,但是这个时候面对了两三百行的字体名字,你也不知道到底哪个才是你想要的,到了关键时刻了,怎么办呢?你把这些输出复制出来,打开TextWrangler这个工具,粘贴进去,当然直接粘贴进代码也是可以的。然后你把info.plist文件中加入的几个字体库删除了,在运行一遍,这时候你得到的输出就是没有那些字体名称的,这时就找到了字体的名称


//        2013-03-01 13:43:00.934 Cocos2dLabelFont[3739:c07] Family name: FZXingKai-S04T
//        2013-03-01 13:43:00.935 Cocos2dLabelFont[3739:c07]     Font name: FZXKFW--GB1-0
//        2013-03-01 13:43:01.006 Cocos2dLabelFont[3739:c07] Family name: FZPangWa-M18T
//        2013-03-01 13:43:01.007 Cocos2dLabelFont[3739:c07]     Font name: FZPWFW--GB1-0
//        2013-03-01 13:43:00.920 Cocos2dLabelFont[3739:c07]     Font name: TJenLei-Medium

好了,到这里你就可以使用你的字体了,记得把从info.plist文件删除的字库文件名加上。

5.现在我们在init()方法中[fontNames release];后面写上如下代码

        CCLabelTTF *label1 = [CCLabelTTF labelWithString:@"长城中隶繁体0123456789" fontName:@"TJenLei-Medium" fontSize:24];
        CCLabelTTF *label2 = [CCLabelTTF labelWithString:@"方正胖娃繁体0123456789" fontName:@"FZPWFW--GB1-0" fontSize:24];
        CCLabelTTF *label3 = [CCLabelTTF labelWithString:@"方正行楷繁体0123456789" fontName:@"FZXKFW--GB1-0" fontSize:24];
        CCLabelTTF *label4 = [CCLabelTTF labelWithString:@"方正行楷繁体0123456789" fontName:@"--unknown-1--" fontSize:24];


        CGSize size = [[CCDirector sharedDirector] winSize];
        
    
        label1.position =  ccp( size.width /2 , size.height/2+50 );
        label2.position =  ccp( size.width /2 , size.height/2 );
        label3.position =  ccp( size.width /2 , size.height/2-50 );
        label4.position =  ccp( size.width /2 , size.height/2-100 );

        
        
        [self addChild: label1];
        [self addChild: label2];
        [self addChild: label3];
        [self addChild: label4];

6.运行,结果如下图



7.好了,大功告成了,现在知道了字库的自己名称,那么我们就可以把它用在cocos2d-x的工程中了,同理,使用方法如下

    CCLabelTTF* labelTitle = CCLabelTTF::create("测试字体", "--unknown-1--", 24);
这就可以了。

COCOS学习笔记--4种Label文字标签及其渲染特性 游戏开发中所有的文字信息的显示都会用到字体标签Label,比如玩家名字的显示、道具信息、公告栏通知等等。这篇博客就对Cocos2d-x的字体标签的使用做一下介绍。 Cocos3.0版本后废弃了之前的CCLabelTTF、CCLabelBMFont、CCLabelAtlas三个字体类,将其合并为一个字体标签类Label类。 Label类一共有4种方式创建字体标签,我们看一下这4种crea 阅读详情

相关推荐

cocos2d-x生成带边框的标签CCLabelTTF文本

cocos2d-x生成带边框的标签CCLabelTTF文本     上面有篇文章是介绍利用TTF字体库生成各种格式的CCLabelTTF标签的,现在问题又来了,策划要求做一个有黑边的文字,这样会使得界面显示的文本更加清楚,这里我们就共同介绍一下黑边文字的方式。     实现黑边文字的方法有两种: 一种是两个CCLabelTTF,前面放一个,后面放一个,后面的那个CCLabelTTF放大一点,

江南岸 5081

cocos2d-x使用ttf字体时,字体库中不存在的文字用框框代替

cocos2d-x版本:3.2 使用ttf字体时,由于字体库不全,没有包含所有的字符,导致有些字符无法显示,修改代码让无法显示的字符用囗代替,能够明确看到有字符显示不了,代码修改如下: 这样修改之后又有另外一个问题,EditBox只支持系统字体,使用EditBox做输入框时,比如聊天输入时正常,发出来就变成了囗。解决方法:修改EditBox各平台代码的setFo

xiewuquan的博客 3907

cocos2d-x 2.x TTF字体显示

cocos2d-x 2.x TTF字体显示

cocos2dx使用第三方字库.ttf,需要注意的事项

我们的游戏中通常需要显示一些文字信息,如人物属性等等, 我们可能需要使用不同于系统的字体显示这些文字, cocos2dx支持我们使用第三方字库即.ttf字库文件来显示字体。 1、 使用第三方字库的方法网上有很多就不再这里说了, 这里有一点需要注意,那就是如果我们显示的一些文字信息, 如“你好,朋友!....”,如果字库.ttf文件中不存在相应的文字模型, 那么这个文字就会按照系统

思考的智慧,知识源于思考 2926

点云直线检测-3DLineDetection复现

点云直线分割-Fast 3D line detection

阁楼 8156

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 812

关于Quick-cocos2dx 2.2.6中CCLabelTTF文字在ios或ipad中显示不全的问题

最近发现:使用了Quick-cocos2dx 2.2.6中的CCLabelTTF来显示一段文字时,如果该段文字有多处换行的(即文本内容里面自带多处换行符\n),则会出现一个奇怪的问题—在android与pc机上跑时,文本能够全部显示出来,但在ios或ipad上跑时则有时出现最后一两行文字不显示的现象,且这现象是没有规律的。 代码调用是类似这样写的:        local txtNode =

afei198409的专栏 2009

Synopsys工具链实战:如何用VCS、DC、ICC和Calibre跑通你的第一个数字IC设计项目?

本文详细介绍了如何使用Synopsys工具链(VCS、Design Compiler、ICC和Calibre)完成数字IC设计项目,从RTL代码到GDSII版图的全流程。涵盖环境配置、RTL设计验证、逻辑综合、物理实现及签核验证等关键步骤,帮助工程师掌握高效的数字IC设计流程。

weixin_42525005的博客 196

讨论cocos2d-x字体绘制原理和应用方案

个人一直认为,文字绘制是cocos2d-x最薄弱的环节。对于愤怒的小鸟之类的游戏,cocos2d提供的文字绘制功能已足够使用。但是对于一个mmo来说,则完全不够。一个优秀的mmo客户端必然会对其有进行优化和再封装的操作。         cocos2d-x支持两种文字绘制方式(均支持中英文),一种是CCLabelTTF,一种是CCLabelBmpFont。         CCLabelTTF

langresser的专栏 7131

eNSP-抓包解析TCP三次握手和四次挥手的过程

一、环境搭建 1.设备连接 2.服务器配置 3.客服端配置 二、抓包测试 1.打开抓包软件 2.客户端获取数据 三、抓包结果

小橙子的博客 3351

CVAT自动标注避坑指南:如何解决Nuclio工程创建失败和镜像拉取问题

本文是一份针对CVAT自动标注部署中常见问题的实战排障指南。文章深入剖析了Nuclio工程创建失败的根源,提供了网络配置、服务状态检查等系统性解决方案,并详细讲解了如何解决gcr.io等海外镜像拉取难题,帮助开发者顺利完成CVAT自动标注环境的搭建与部署。

weixin_29207533的博客 233

Cocos2d-x教程(28)-ttf 字体库的使用

Cocos2d-x 引入ttf字体库

Cocos2d-x,IOS,游戏,开发/交流/学习/资源 马宗扬 5132

python实现序列比对之Needleman-wunsch算法 (附完整源码)

python实现序列比对之Needleman-wunsch算法 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 460

Cocos2d-x 添加TTF字体

通常为了使游戏界面更为美观,我们会选用某种字体来达到效果。今天要介绍的便是如iOS中引入ttf字体库文件(Cocos2d-x 原理相同)在iOS中使用字体库的步骤如下(Android无需下述处理,可直接使用):1.获取ttf字体库文件(网上搜索一搜一堆)2.在Mac上安装字体库文件(主要用于获取该字体在系统中存放的英文名字,第四步也可达到同样效果)3.找到项目中Info.plist文件并对其进行相...

L的博客 3172

置顶必读(1) |《YOLOv11实战:从入门到深度优化》专栏导读,带你一文了解本专栏!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 12万+

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 246

Cocos2d-x 添加字体库

步骤一:找一个ttf字体库 步骤二:找到这个ttf字体库的真实名称 打开你的应用 “字体册”(MAC OS系统下),如下图操作): 找到了字体库真实名称,那么修改将其真名作为为此新的字体库名称即可。 然后将其加入你的项目中即可使用 步骤三: 打开Xcode项目资源下的info.plist文件: 然后右键 “Add Row”,添加“F

yhhwatl的专栏 2106

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Cocos2d-x3.1自定义字体库的使用

通常为了使游戏界面更为美观,我们会选用某种字体来达到效果。今天要介绍的便是如何在iOS中引入ttf字体库文件(Cocos2d-x 原理相同) 在iOS中使用字体库的步骤如下(Android无需下述处理,可直接使用): 1.获取ttf字体库文件(网上搜索一搜一堆) 2.在Mac上安装字体库文件(主要用于获取该字体在系统中存放的英文名字,第四步也可达到同样效果) 3.找到项目中In

yuxikuo_1的专栏 1358

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

cocos2d-x iOS 使用第三方字体库

参照这里,百试百灵! 不过经测试,在plist中加入对应的Font后,下面三种都可以: CCLabelTTF *label = CCLabelTTF::create("测试", "JJianzi", 28); CCLabelTTF *label = CCLabelTTF::create("测试", "迷你简剪纸", 28); CCLabelTTF *label = CCLabelTTF...

weixin_30702887的博客 152

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Cocos2d-x】 期末复习(更新完全版)

1. 明确在cocos2d-x程序中输出提示信息的方法,字符串什么类型? Log () 字符串类型:C语言字符准类型。 char*类型 2. 菜单项有哪些类型,他们之间是什么关系? 文本菜单项 MenultemLabel 包含 MenuItemAltasFont 和 MenultemFont 精灵菜单项 MenultemSprite 和图片菜单项 MenultemImage 是两者是父子关系 开关菜单项MenultemToggle,包含两个菜单项一个开一个关 ...

qq_46030018的博客 6422

cocos2d-x android游戏使用自己的字体

在使用cocos2d-x发布Android平台游戏时,游戏中可能需要显示中文字体, 或者想显示漂亮的自定义字体,这怎么办呢? cocos2d-x中字体标签提供了CCLabelAtlas, CCLabelBMFont CCLabelTTF 1.CCLabelAtlas速度快,支持简单有限的几个字符或数字集合 2.CCLabelBMFont 我们可以用CCLabelBMFont来加载字

凉茶的优快云专栏 1248

cocos2d-x---CCLabelTTF加载字体库

strPath = g_ImgPath + "方正卡通简体.ttf"; m_pLebGold = CCLabelTTF::create("999999999", strPath.c_str(), 30); CC_ERROR(m_pLebGold, "[CGameMainUI::onEnterTransitionDidFinish] m_pLebGold 为空") ...

weixin_33806300的博客 120
上一篇: Cocos2d中添加手势支持的三种方法
下一篇: 两个View 使用BLOCK传值
果冻明
博客等级 码龄14年 2粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值