今天为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),而不是字体文件名

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

for (NSString *fontName in [UIFont familyNames]){ NSLog(@"%@", fontName); }

在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应用中嵌入字体的方法——非人云亦云版相关推荐

  1. word文档里怎么嵌入文档_如何在Microsoft Word文档中嵌入字体

    word文档里怎么嵌入文档 When you email someone a copy of your Word document or PowerPoint presentation and the ...

  2. keil4内嵌汇编_keil C中嵌入汇编程序的方法

    void main(void) { P2=1; #pragma asm MOV R7,#10 DEL:MOV R6,#20 DJNZ R6,$ DJNZ R7,DEL #pragma endasm P ...

  3. keil5怎么接入汇编_keil C中嵌入汇编程序的方法

    1. C语言中直接嵌入汇编程序段 1.在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragma ENDASM 2.在 ...

  4. Office如何在文稿中嵌入字体(macOS)

    写在前面 很多时候,我们都会下载一些非预置的字体安装在电脑上,有时可以用.我们在Microsoft Office套件中的PowerPoint.Excel.Word软件中添加用这些美轮美奂的字体书写的文 ...

  5. 如何在PowerPoint中嵌入字体

    If you send someone your PowerPoint presentation, but they don't have the used fonts installed, the ...

  6. 网页中嵌入Flash的方法讨论

    Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...

  7. 网页中嵌入Flash的方法

    Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...

  8. 网页中嵌入 Flash 的方法 满足W3C

    < DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...

  9. 网页中嵌入地图位置方法

    想在网页中嵌入自己公司的位置,百度地图就有这个功能 进入百度地图api地图 http://api.map.baidu.com/lbsapi/creatmap/ 设置尺寸.搜索位置 可以进行标注 最后生 ...

最新文章

  1. GBDT算法原理及附有源码实现的 转
  2. 关于ListView顶部和底部滚(拖)动出现阴影解决方案
  3. SAP S/4HANA里如何创建Customer主数据以及执行后续处理
  4. lambda python_Python | Lambda和filter()与示例
  5. leetcode —— 39. 组合总和
  6. 数据结构期末复习之散列表的查找
  7. excel处理后上传数据库
  8. 在Azure Cloud Service中部署Java Web App(2)
  9. 组态王、力控、MCGS、瑞尔、杰控等国内组态软件一点看法
  10. 伺服电机常用参数设置_松下伺服电机一般都设置哪些参数
  11. oracle簇详解,Oracle 簇的使用详解
  12. Total Commander 文件管理
  13. 外报分析中国房价上涨三原因 指开发商行为怪异
  14. 腾讯云服务器1M带宽下载速度怎么样?慢不慢?
  15. 《回忆之前,忘记之后---写给我记忆中的汪峰》
  16. 定制office2007静默安装
  17. 小米净水器更换php教程,小米净水器如何更换滤芯 小米净水器怎么连接手机
  18. 我进了培训机构,成为一名java讲师
  19. 理工男你要懂爱,女朋友不会从天上掉下来 | 钛空精分小剧场
  20. 【计算机科学基础】度量前缀与性能指标

热门文章

  1. kof98 rom下载
  2. Yoshua:深度学习AI迈向人类水平的挑战
  3. 何洛洛高考成绩查询2021,R1SE曾想续约:11少年毕业发言催泪,周震南更文,何洛洛哭上热搜...
  4. 金刚石清洗用超纯水设备
  5. Java第四十八天,Jsp之Taglib,自定义标签详解
  6. generator详解
  7. 3ml乐谱制作工具_用于生产的ML基础结构工具(第1部分)
  8. [hdu 5671][BestCoder Round #81 t2] Matrix
  9. npm install 提示权限不足
  10. 4.怎么理解相互独立事件?真的是没有任何关系的事件吗? 《zobol的考研概率论教程》