在iPad应用中嵌入字体的方法——非人云亦云版

在iPad应用中嵌入字体的方法——非人云亦云版,第1张

概述今天为21世纪报系一个iPad应用做技术验证,尝试在应用中加入iPad没有的字体。先Google了一下,解决方案很简单,iOS 3.2以上都支持内嵌用户字体。介绍这个技术的blog文章或论坛帖子很多,也有中文写的,但中文的文章或帖子,几乎全是人云亦云。我猜这些可敬的作者们,多半没有自己去验证过,或者验证之后不愿把遇到的问题和解决方案分享出来。   进入正题。在iOS 3.2以上支持内嵌字体的方法

今天为21世纪报系一个iPad应用做技术验证,尝试在应用中加入iPad没有的字体。先Google了一下,解决方案很简单,iOS 3.2以上都支持内嵌用户字体。介绍这个技术的blog文章或论坛帖子很多,也有中文写的,但中文的文章或帖子,几乎全是人云亦云。我猜这些可敬的作者们,多半没有自己去验证过,或者验证之后不愿把遇到的问题和解决方案分享出来。

 

进入正题。在iOS 3.2以上支持内嵌字体的方法,可以分为三个步骤:

 

1、把字体文件添加到项目的Resources文件组(千万别说你不会哦);

2、在项目的Info.pList文件中添加UIAppFonts项(类型为Array),并把字体文件名作为元素写进去;

3、在项目代码中引用字体:如 label.Font = [UIFont FontWithname:@"字体名" size: 14.0f]。

 

简单吗?很简单。可是,如果你尝试内嵌中文字体(如Mac里面的“华文仿宋”),也许就会遇到问题。你已正确地将字体放到Resources文件组,正确地填写了Info.pList文件,而且,label.Font = [UIFont FontWithname:@"华文仿宋" size:14.0f]也没有报错。好,Build and Go!怎么回事?标签文字并非如你所愿的仿宋,还是默认的Georgia字体。

 

这就是我说大多数中文作者都没有亲自验证的原因——或者他们都只开发英文软件?若你对字体的相关概念不熟悉,遇到这个问题太正常了。说穿了很简单,上述第三步中,必须使用字体的真实名称(family name),而不是字体文件名

 

那么,“华文仿宋”的真实名称是什么?不必依赖搜索引擎,三行代码就可以找到:

 

 

 

在DeBUGger Console窗口,你将看到一大堆iPad系统支持的字体名称:

 

 

[Session started at 2010-11-03 18:06:05 +0800.]

2010-11-03 18:06:06.211 BunddleFontTest[4537:207] Bodoni Ornaments

2010-11-03 18:06:06.213 BunddleFontTest[4537:207] AppleGothic

2010-11-03 18:06:06.214 BunddleFontTest[4537:207] Gill Sans

2010-11-03 18:06:06.214 BunddleFontTest[4537:207] Hiragino Kaku Gothic ProN

2010-11-03 18:06:06.217 BunddleFontTest[4537:207] Palatino

2010-11-03 18:06:06.218 BunddleFontTest[4537:207] copperplate

2010-11-03 18:06:06.219 BunddleFontTest[4537:207] Bodoni 72 Smallcaps

2010-11-03 18:06:06.220 BunddleFontTest[4537:207] Bradley Hand

2010-11-03 18:06:06.221 BunddleFontTest[4537:207] Heiti K

2010-11-03 18:06:06.222 BunddleFontTest[4537:207] DB LCD Temp

2010-11-03 18:06:06.222 BunddleFontTest[4537:207] Helvetica

2010-11-03 18:06:06.223 BunddleFontTest[4537:207] Marker Felt

2010-11-03 18:06:06.223 BunddleFontTest[4537:207] Times New Roman

2010-11-03 18:06:06.224 BunddleFontTest[4537:207] Verdana

2010-11-03 18:06:06.224 BunddleFontTest[4537:207] Hiragino Mincho ProN

2010-11-03 18:06:06.225 BunddleFontTest[4537:207] Zapf Dingbats

2010-11-03 18:06:06.225 BunddleFontTest[4537:207] Georgia

2010-11-03 18:06:06.225 BunddleFontTest[4537:207] Arial Rounded MT Bold

2010-11-03 18:06:06.226 BunddleFontTest[4537:207] Papyrus

2010-11-03 18:06:06.226 BunddleFontTest[4537:207] Trebuchet MS

2010-11-03 18:06:06.227 BunddleFontTest[4537:207] Baskerville

2010-11-03 18:06:06.227 BunddleFontTest[4537:207] STFangsong

2010-11-03 18:06:06.228 BunddleFontTest[4537:207] Heiti TC

2010-11-03 18:06:06.228 BunddleFontTest[4537:207] Geeza Pro

2010-11-03 18:06:06.229 BunddleFontTest[4537:207] Bodoni 72

2010-11-03 18:06:06.229 BunddleFontTest[4537:207] CourIEr

2010-11-03 18:06:06.229 BunddleFontTest[4537:207] Cochin

2010-11-03 18:06:06.230 BunddleFontTest[4537:207] Heiti J

2010-11-03 18:06:06.230 BunddleFontTest[4537:207] Arial

2010-11-03 18:06:06.231 BunddleFontTest[4537:207] Arial Hebrew

2010-11-03 18:06:06.232 BunddleFontTest[4537:207] CourIEr New

2010-11-03 18:06:06.232 BunddleFontTest[4537:207] Zapfino

2010-11-03 18:06:06.232 BunddleFontTest[4537:207] Academy Engraved LET

2010-11-03 18:06:06.233 BunddleFontTest[4537:207] Chalkduster

> >2010-11-03 18:06:06.233 BunddleFontTest[4537:207] Bodoni 72 oldstyle

2010-11-03 18:06:06.233 BunddleFontTest[4537:207] Hoefler Text

2010-11-03 18:06:06.234 BunddleFontTest[4537:207] Futura

2010-11-03 18:06:06.234 BunddleFontTest[4537:207] Snell Roundhand

2010-11-03 18:06:06.235 BunddleFontTest[4537:207] American Typewriter

2010-11-03 18:06:06.235 BunddleFontTest[4537:207] Heiti SC

2010-11-03 18:06:06.236 BunddleFontTest[4537:207] Optima

2010-11-03 18:06:06.237 BunddleFontTest[4537:207] Helvetica Neue

2010-11-03 18:06:06.238 BunddleFontTest[4537:207] Comic Sans MS

2010-11-03 18:06:06.239 BunddleFontTest[4537:207] Party LET

2010-11-03 18:06:06.240 BunddleFontTest[4537:207] Thonburi

2010-11-03 18:06:06.241 BunddleFontTest[4537:207] DIDot

 

你内嵌的“华文仿宋”也在其中,但它改头换面,成了“STFangsong”。没错,这就是华文仿宋的Family name,也是代码中应该使用的字体名称。把代码改为:

 

 

 

labelChinese.Font = [UIFont FontWithname:@"STFangsong" size:43.0f];

labelChinese.text = @"测试";

 

运行效果如下(我还添加了英文字体Comic Sans MS):

 

总结

以上是内存溢出为你收集整理的在iPad应用中嵌入字体的方法——非人云亦云版全部内容,希望文章能够帮你解决在iPad应用中嵌入字体的方法——非人云亦云版所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存