千家信息网

如何解决iOS自定义字体显示问题

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,小编给大家分享一下如何解决iOS自定义字体显示问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 自定义字体出什么问题
千家信息网最后更新 2025年01月19日如何解决iOS自定义字体显示问题

小编给大家分享一下如何解决iOS自定义字体显示问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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自定义字体显示问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

字体 文件 问题 内容 信息 结论 设计师 设计 工具 工程 文档 程序 篇文章 苹果 大小 方案 爸爸 程序员 终端 调节 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 信息网络安全无安全事故 计算机网络安全 袁津生 窗口是数据库应用系统的工作窗口 视频软件开发的上市公司 重启数据库会刷新统计信息 计算机网络技术外部竞争 新冠核酸数据上报国家数据库 一般网站换服务器多长时间 云服务器链接失败怎么解决 软件开发在建工程账务处理 学习软件开发与项目管理心得体会 我的世界服务器无限传送 自学安卓软件开发多久 excel如何连接阿里云数据库 日本青少年网络安全 不联网调用网络数据库 aspenv11数据库修复 不属于实现数据库 怎么建立数据库表格内容 山东省大学生网络技术大赛 怎么链接数据库的外网 来福士互联网科技公司 网络安全中心来自未授权 原神b站服务器怎么在电脑上玩 数据库三级结构模式由内到外 服务器上的防火墙 深圳冷通道图腾服务器机柜 交通安全网络安全签名活动 下一代的网络技术 fast 虚拟服务器
0