在iPad应用中嵌入字体的方法——非人云亦云版
今天为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应用中嵌入字体的方法——非人云亦云版相关推荐
- word文档里怎么嵌入文档_如何在Microsoft Word文档中嵌入字体
word文档里怎么嵌入文档 When you email someone a copy of your Word document or PowerPoint presentation and the ...
- 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 ...
- keil5怎么接入汇编_keil C中嵌入汇编程序的方法
1. C语言中直接嵌入汇编程序段 1.在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragma ENDASM 2.在 ...
- Office如何在文稿中嵌入字体(macOS)
写在前面 很多时候,我们都会下载一些非预置的字体安装在电脑上,有时可以用.我们在Microsoft Office套件中的PowerPoint.Excel.Word软件中添加用这些美轮美奂的字体书写的文 ...
- 如何在PowerPoint中嵌入字体
If you send someone your PowerPoint presentation, but they don't have the used fonts installed, the ...
- 网页中嵌入Flash的方法讨论
Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...
- 网页中嵌入Flash的方法
Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...
- 网页中嵌入 Flash 的方法 满足W3C
< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...
- 网页中嵌入地图位置方法
想在网页中嵌入自己公司的位置,百度地图就有这个功能 进入百度地图api地图 http://api.map.baidu.com/lbsapi/creatmap/ 设置尺寸.搜索位置 可以进行标注 最后生 ...
最新文章
- GBDT算法原理及附有源码实现的 转
- 关于ListView顶部和底部滚(拖)动出现阴影解决方案
- SAP S/4HANA里如何创建Customer主数据以及执行后续处理
- lambda python_Python | Lambda和filter()与示例
- leetcode —— 39. 组合总和
- 数据结构期末复习之散列表的查找
- excel处理后上传数据库
- 在Azure Cloud Service中部署Java Web App(2)
- 组态王、力控、MCGS、瑞尔、杰控等国内组态软件一点看法
- 伺服电机常用参数设置_松下伺服电机一般都设置哪些参数
- oracle簇详解,Oracle 簇的使用详解
- Total Commander 文件管理
- 外报分析中国房价上涨三原因 指开发商行为怪异
- 腾讯云服务器1M带宽下载速度怎么样?慢不慢?
- 《回忆之前,忘记之后---写给我记忆中的汪峰》
- 定制office2007静默安装
- 小米净水器更换php教程,小米净水器如何更换滤芯 小米净水器怎么连接手机
- 我进了培训机构,成为一名java讲师
- 理工男你要懂爱,女朋友不会从天上掉下来 | 钛空精分小剧场
- 【计算机科学基础】度量前缀与性能指标
热门文章
- kof98 rom下载
- Yoshua:深度学习AI迈向人类水平的挑战
- 何洛洛高考成绩查询2021,R1SE曾想续约:11少年毕业发言催泪,周震南更文,何洛洛哭上热搜...
- 金刚石清洗用超纯水设备
- Java第四十八天,Jsp之Taglib,自定义标签详解
- generator详解
- 3ml乐谱制作工具_用于生产的ML基础结构工具(第1部分)
- [hdu 5671][BestCoder Round #81 t2] Matrix
- npm install 提示权限不足
- 4.怎么理解相互独立事件?真的是没有任何关系的事件吗? 《zobol的考研概率论教程》