大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下如何解决iOS自定义字体显示问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
盈江网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联公司从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
1. 自定义字体出什么问题了?
设计师们的作品总是千变万化,为了成就他们,作为程序员的我们只好满足他们喽。
所以当设计师用到一款神奇的字体的时候,我是不会拒绝的,就像下面这个样子:
为了让大家能更好的看到这个问题,我把 label 设置了一个背景色,label 的 width 和 height 都等于50。现在,在 storyboard 中看起来是没问题的,让我们 Run 一下:
对比 system font 字体的 label,明显感觉这个 DINCondensedC 字体的内容是偏上的!(当然不用对比也能发现)。WTF!
2. 解决思路
2.1 既然是内容偏上,那么是否和 content Mode 有关?
可惜的是,经过尝试,改变 contentMode 并不能对 UILabel 产生任何影响(实际绘制内容中包含下方的空白)。
结论:不可行
2.2 继承 UILabel 并重写 drawRect ?利用 CoreText 绘制字体?
这两种方案应该是可行的,但是,为了这个小字体,用得着这么复杂的【计算字体大小】-【通过字体大小与 label 高度计算偏移量】-【用到这个字体的 label 统一换成 XXLabel 】流程吗?
万一哪天设计师说:来,咱们来个富文本,中间这几个字用 DINCondensedC 字体,两边的字用 system 字体,那你不是要哭了?
结论:不可行
2.3 程序解决不了,那就用人解决吧
让我们找到可爱的设计师,请他喝个下午茶,搓顿不错的晚饭,带他做个大保健,然后和他说:兄弟这个UI图可以换个字体吗... 算了成本有点高。
结论:不可行
2.4 可否从字体入手,自己修改字体?
既然字体有点不太正常,那么我们只能使出大招:自己动手修改这个字体。据说有一款 App:Glyphs 对于制作/修改字体来说,很强大!然后让我们好好下载,静静等待吧。下载完毕打开这个【PT DIN Condensed Cyrillic.ttf】字体文件,没想到这个软件还收费,只能试用几天。试用就使用吧,但是,这个字体里的每个字符我都要一个一个去改?作为程序员,不能忍!
结论:不可行
3. 最终的解决方案
最后还是得靠苹果爸爸,大家的好爸爸。苹果提供了一款字体修改工具:Apple Font Tool Suite。下面就让我们用该工具来解决这个棘手的问题。
3.1 下载该工具
进入这里,滚到最下方,可以看到【Apple Font Tool Suite】,点击下方的下载,下载一个适合自己 Xcode 版本,下载完成后无脑安装。
3.2 获取字体的信息文件
打开终端,输入:ftxdumperfuser -t hhea -A d PT\ DIN\ Condensed\ Cyrillic.ttf
,前面的【ftxdumperfuser -t hhea -A d 】为指令,后面的为你的字体文件路径。最后回车,你会看到同级文件夹下回多出一个【DINCondensedC.hhea.xml】文件:
3.3 修改字体文件中的信息
让我们打开这个字体文件,你会看到:
]>
没错这是个 XML 文件,它里面包含了字体的一些公共信息:
ascender:从字体的 baseLine 到最高处的距离descender:从字体的 baseline 到最低点的距离lineGap:印刷线的间距...
这里面的每一项信息,都可以从苹果的:hheaTable文档 这篇文档中找到。文档中可以看到,一款字体也是一个大工程。今天我们要解决的,是【DINCondensedC】字体偏上的问题,因此,让我们来调节调节 ascender 这个属性,将它从700改为900,然后保存文件。
3.4 将修改完的文件注入原 ttf 文件
打开终端,输入:ftxdumperfuser -t hhea -A f PT\ DIN\ Condensed\ Cyrillic.ttf
,注意这里 -A 后面的 d 已经换成了 f ,回车。
3.5 替换原工程中的字体文件
切回我们的工程,替换原字体文件,Run 一下
以上是“如何解决iOS自定义字体显示问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!