IOS添加自定义字体

来源:互联网 发布:中国历史纪录片 知乎 编辑:程序博客网 时间:2024/04/27 21:24
IOS添加自定义字体
参考:http://blog.sina.com.cn/s/blog_6f9a971801011ie9.html

准备:
字体文件(.ttf,.odf等)

方法1:
  添加对应的字体(.ttf或.odf)到工程的resurce,使用cocos2d中的FontLabel库,FontLabel继承于UILabel,象UILabel一样使用就好了
  fontName直接使用添加的资源名字即可

方法2:
  1.添加对应的字体(.ttf或.odf)到工程的resurce,例如 “华文宋体.ttf”
  2.在info.plist中添加一项 Fonts provided by application (item0对应的value为华文宋体.ttf,添加多个字体依次添加就可以了)
  3.使用(由于原作者的讲述和一些注意事项没给出来,所有在这里进行补充,原文请参照上述链接)
UIFont* font = [UIFont fontWithName:@"STSong" size:30];
重点在于字体的名字。如果使用@"华文宋体.ttf",返回的是nil("华文宋体"、和"STSong.ttf"我都试过,返回的都是nil)。
而这个名字我们可以使用mac OS下的Font Book工具查找。如果是Foot Book中没有的字体,就先进行添加,然后找到这个字体的名字就可以了(这个没试过,我直接使用Font Book中已有的中文字体)。
或者使用原作者提供的笨方法,一个一个找。或者自己写个查找程序,对比下就应该可以了。

在这里再啰嗦两句。原作者说:
Mac下窗口的标题栏有字体的Family name,Windows下能显示Family name和Font name,下面这句用Family name和Font name都可以
self.labelTest1.font = [UIFont fontWithName:@"RETURN TO CASTLE" size:30];
其实不然。family name和font name是不同的。

    self.familyNames = [UIFont familyNames];    // 获取所有的familyName
    self.familyNames = [self.familyNames sortedArrayUsingSelector:@selector(stringCompare:)];   // 排序
    self.fontNames = [[NSMutableArray alloc] init];
    for (int i = 0, count = self.familyNames.count; i < count; ++i)
    {
        NSArray* fontArray = [UIFont fontNamesForFamilyName:[self.familyNames objectAtIndex:i]]; // 获取相应的familyName下的fontNames
        [self.fontNames addObject:fontArray];   // 将fontName存入数组
    }
然后用一个UITableView显示出来,可以看到familyName下面有好几个fontName。
中文字体也是一样,我实验了Font Book下的黑体(Heiti SC,iOS系统有自带Heiti TC),该字体的familyName为Heiti SC,而在其下还有分STHeitiSC-Medium和STHeitiSC-Light。(黑体显示的中文效果好像和系统自带的差不多,可能iOS本身就有Heiti TC吧。不过楷体就很明显了,宋体也不太明显。)
附上我做的一个简单的Demo。

http://download.csdn.net/detail/likid1412/4526971

(ps:由于黑体的字体文件太大,所以就只加了楷体和宋体,项目中没有的那两个文件请自行删除吧。)


原创粉丝点击