ios添加自定义字体

IOS添加自定义字体

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


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


方法2:
  1.添加对应的字体(.ttf或.odf)到工程的resurce,例如my.ttf
  2.在info.plist中添加一项 Fonts provided by application (item0对应的value为my.ttf,添加多个字体依次添加就可以了)
  3.使用时 aLabel.font=[UIFont fontWithName:@"XXX" size:30]; 注意XXX不一定是my,这里是RETURN TO CASTLE,
//    Family name: RETURN TO CASTLE
//    Font name: RETURNTOCASTLE
//双击,Mac下窗口的标题栏有字体的Family name,Windows下能显示Family name和Font name,下面这句用Family name和Font name都可以
self.labelTest1.font = [UIFont fontWithName:@"RETURN TO CASTLE" size:30];


    你也可以通过下面的方法遍历所有字体:
以下是代码片段:
//笨办法:把字体都打印出来,找非系统字体。。。(很无语的方法)
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];
 
在程序中先加入这段代码,运行,查看console,以上程式会列出所有的字型,当然也包含UIAPPFonts所加的字型,但请注意,名字可能差距很大,要自己找一下,不是字体的文件名,弄错了将无法看到效果

 

如果确实如此,这不是简单的粗细问题,是两种字体被混合了(想象一下把微软雅黑和华文细黑杂乱地混在一起用吧)。
原因是:字体优先级不正确

只是把系统语言设置为“English”的话,应该不会出现这个情况。真正导致这个的是在“多语言环境”设置的“语言”列表中,“日本語”位于“简体中文”和“繁體中文”之上 (而 iOS 的初始英文状态下,“日本語”正是排在英文之下、中文之上)。
在这个“语言”列表中,不仅顶端的那一项控制系统语言,其余项目的顺序也对多语言的处理有影响。

我 们都知道日文中有很多汉字,它们大多和中文汉字很像。实际上,在如今最常用的文本编码(Unicode)中,简体中文、繁体中文、日文以及韩文等书写系统 中的大多数汉字是共享编码的。而在网页或程序界面中遇到一个字符时,iOS 会按照“语言”列表的顺序套用各个语言的默认字体来试图显示这个字符。

这样,当“日本語” 排 在中文之上,iOS 会先套用日文字体(Hiragino Kaku Gothic ProN),如果在日文字体中没有这个字,就按照列表顺序套用下一个语言的默认字体,直到轮到中文,在中文字体(iOS 中,简体中文和繁体中文都默认使用一套衍生自华文黑体的字体,分别叫 Heiti SC 和 Heiti TC,它们的风格是接近的)中总算找到了。
于是,因为一段文本中有的字能在日文字体中找到,而有的只存在于中文字体中,这段文本就混杂着用了日文字体和中文字体

但因 iOS 为日文和中文提供的默认字体风格很不一致(最显著的就是日文字体的“粗体”比中文字体的粗多了,另外还有多方面的区别,包括高度),于是文本效果就很不好了。

- - -

另外,顺便在此吐槽:
Mac OS X 和 iOS 什么时候才能用 Hiragino Kaku Gothic 这个风格统一 CJK 啊!
现在 Mac OS X 已经有了 Hiragino Sans GB(简体中文),但繁体中文的 Hiragino Sans CNS 在最后关头被撤掉了,而韩文那边似乎没有动静。
而 iOS 现在倒是用华文黑体的风格统一了 CJK(内置 Heiti SC、Heiti TC、Heiti J 和 Heiti K),尽管没有都设置为默认吧。

你可能感兴趣的:(ios)