作者pttlulu (LuLu总裁)
看板iPhone
标题[讨论] iOS7 中文字体说明与问题统计
时间Tue Feb 4 15:45:25 2014
iOS7 中文字体说明与问题统计
( 手机排版请见谅 )
前面有点罗唆,且文章有点长,这篇主要是针对中文字体,希望大家能耐心看一下。
===============
怕还是有人不知道,所以写在最前面:
关於 LINE 字体
LINE 已经可以直接使用你的中文字体,方法如下:
加入软体源:apt.iphone4.tw
安装:LINE Chinese Font
( 感谢皮乐的开发 )
===============
在 iOS7 放出 JB 工具以来也一个多月了,中文字体的修改上一直以来遇到不少问题,像是特定 App 闪退、缺字等等,现阶段其实已算稳定,只有一小部份特定情况仍无法解决。
我先稍微说明一下一开始到现在的做法调整过程,并且会提出现阶段有收到的问题回报。
在 iOS6 时期,中文字体只有两个档案:
STHeiti-Light.ttc
STHeiti-Medium.ttc
每个 TTC 字集档都包含 5 个 TTF 格式字体,当时在改字体的时候,用的工具是 TTF tools、 Font Creator 5.2 版。过程小复杂,简单地说,要把你想换的字体复制成 5 个,再将他们内部的 Naming 替换成与原生字体一样的内容,接着包成新的 TTC 档案就完成了,当时这样就能制作新字体,只有一小部份的字体需要经过其他调整 ( 高度、宽度、座标等等 )。
到了 iOS7,中文字体又多了两个档案:
STHeiti-Thin.ttc
STHeiti-UltraLight.ttc
从名称可以知道是比 Light 更细的两个字体重量,也就是为了因应 iOS7 介面风格而新增的,这两个由於是新增字体,打开後发现和之前一样,都只包了 5 个 TTF。但是原本的 Light 与 Medium 打开後却变成各包了 10 个 TTF,这下就头大了,一来要处理的内容变多,打包、测试也是很费时的。
至於为什麽要变成 10 个 TTF,原因很简单:并非所有的 App 都已针对 iOS7 做更新调整,旧有的 App 仍需要原本对应的字体内容,所以旧的 5 个 + 新增的 5 个就变成了 10 个 TTF,这也就是为什麽 Light 与 Medium 要变成 10 个 TTF 在内,而 Thin 与 UltraLight 都只包了 5 个 TTF。
一开始当然就依照 iOS6 时期的做法去修改,改完之後开始出现闪退问题,便开始寻找问题点,找出了可能是因为字符的缺少,但之前 iOS6 时期是不会因为这样闪退的,顶多出现「口口」的状况,到了 iOS7 也许因为 API 全面的调整,以致部份 App 会自行 Cache 字体内容,导致换了字体後因为不符合原生字体而闪退。
最初的解决方式是补字进去。
原生字体多达 50000 字以上,要补字不是一件容易的事,但是经过一段时间的努力,暂时解决了一部份的问题,但似乎仍然治标不治本。後来与另一位也很热心研究字体的 Ryan 大,一起对字体的问题经过了很多回合的讨论,也感谢 Ryan 大提供的原生字体模版,我们开始将工具换为 TTFname3、Fontlab Studio 来处理,并将字体的修改做法改成「把新字体的字符贴到原生字体中」。
这样一来有以下的好处:
1. 原生字体不会缺字
2. Naming 不会有问题,用 ttfname3 可以快速修改
举例来说,假设原生字体有 10 个字,而新字体只有 8 个字,把这 8 个字贴到原生字体对应的 10 个位置内,那剩下的两个没贴当然就会保持原生字体,绝对不会有缺字、缺符号的问题。当然要贴之前,新字体的编码、高度、宽度什麽的都要调整好才能贴,否则仍会有很多问题。
大家也许在想,为什麽网路上找不太到字体编修的教学,其实不是网友们或是我不想写,而是过程的细节实在太多,加上使用的软体都是英文介面,绝非三言两语可以说得明白,要操作起来很快,但是要一个步骤一个步骤去写大概要花上 5~10 篇文章去详细说明,以後我看看有没有这麽多时间再来考虑吧.....
在新作法之下,可以说解决了绝大部份的闪退问题,但目前仍然会收到一小部份的回报,下面我先整理一下现有的已知问题,有列出并不代表你一定会遇到,因为除了机型的差异,你所使用的 App 也不一样,不一定会遇到相同问题。
1-1. 布卡漫画剃头问题
布卡漫画在 App Store 已下架,之前有备份的人也许有的字体没有调整到位会出现剃头,例如 HiraSansGB+俪黑 这个字体,不过後续更新都会尽量解决。
1-2. 微信「朋友圈」闪退
这个 App 在台湾不如大陆这麽火热,但是因为我的字体也有许多简体用户安装,以致这个问题的浮现,找了很久都无法解决,毕竟不太可能是因为特殊字符,原生字体中并没有缺少,觉得很有可能是因为微信对於字体的 Cache 问题。有一部份网友回报,移除微信,到 App Store 重新安装一次就解决了,所以可能确实存在着 Cache 问题。
1-3. Facebook Messenger 讯息随机漏字 ( 空白 )
换了字体後,在 Facebook Messenger 打字有时候会遇到这情况,有一部份的讯息内容不见了,只看到讯息框框,或是看起来像打字打到一半,後面空白这样。後来的解决方式也一样,移除 App,到 App Store 重新安装一次就解决了,看来仍是因为 Cache。
1-4. 「百度贴吧、QQ 空间」闪退
这个原因与前面都一样,重新安装就解决问题了
1-5. Instagram 闪退问题
这个 App 也是奇葩之一,不管怎样就是会有人遇到闪退,但我就是怎样也遇不到。收集了一些回报,发现 5S 与 5 都有人遇到,其他装置不确定。目前的心得仍然很有可能是因为 App 的 Cache 原因,但这个 App 的闪退实在太怪异,现在仍无法完全解决。
以上这五个 App 并不是所有机型、所有字体都会这样,有时候也得看人品 ( 误 ),或是你的社群内容而定,像我都没有遇到闪退.... ( 我大概是最希望遇到闪退的人了吧XDDDD )
1-6. 表情符号「^_^」按键闪退
键盘上的表情符号键 ( 就是「^_^」这个按扭 ),一按下便会闪退,但是这个状况绝大部份只有出现在 iPhone 5S,我手边的 iPhone 5 从头到尾都没有遇到过,怎麽按都不会闪退....
如果你是在主画面的搜寻 ( 主画面下拉 ),原本按「^_^」会闪退的话,在搜寻画面中去试就会变成 Respring,这原因很简单,因为主画面是随时保持启动的,没办法闪退只好就 Respring 了,所以基本上跟你在其他 App 闪退的情况是同一个原因,并不是因为这个按钮造成 Respring,而是因为主画面不能闪退,只能 Respring。
其实表情符号自己输入也可以,或是从其他地方贴制贴上也行,偏偏就是一部份的 5S 在按下这个按键时会闪退,到现在还找不到真正的原因,一直都在苦恼中。
1-7. 部份英文字体「fl」问题
将英文字母 f 与 l ( 小写的 L ) 打在一起时,fl 会变成原本或较小的字体,总之看起来就会与你新换上的英文字体不同,而将 f 与 l 中间空一格之後就又恢复了。( 我只能说发现这个问题的网友,可能具有塞亚人的雷达眼镜XDDDD )
这个问题後续我会解决,因为制作工具不同竟然会导致这个莫名奇妙的问题,我在原生英文字体中有看到一个「fl」符号,应该是被自动转成这个符号去了,後来我试了 Fontlab Studio 制作同样的字体就没有这个问题,所以之後会找时间将现有的英文字体重做一次。( 比较後期做的没有这个问题,例如少女字体的英文、Myuppy 英文等等 )
以上即是现阶段比较常遇到的问题,除了上面提到的之外,在 A7 处理器有遇到的闪退问题,Ryan 有提供一个方式可以试试 ( 重刷且不要进 DFU 模式 ),但是因为现在 7.0.5 已出,绝大部份装置重刷後是无法降回 7.0.4 的,要等 evasi0n 支援 7.0.5 再说。
接下来希望大家在推文提供使用状况的回报,让我能统计一下现有的情况,回报的格式请参考下面的说明,因推文长度限制故用简称即可。
字体的版本请一律用最新版本,虽然我知道可能旧版你没有遇到同样问题,但如果你都用得好好的其实也不用去更新,这边只统计最新版本的字体问题。
( 1-7 的问题因为之後会重做解决,所以就不用回报了 )
我的软体源:cydia.hdlulu.com
iOS7 字体专用资料夹:LuLu Font iOS7
这边以我的软体源中的字体为主,若你是在 iPhone4TW 安装的基本上是一样,但就不是使用 Bytafont 去替换了,这边建议使用 Bytafont 去换替字体,它会自动清除一些系统 Cache 档 ( 例如键盘外观、电信商字体 ) 也比较方便。
条件:iOS7.0~7.0.4
( 不用写出你的版本,因为只限 7.0.4 用户回报 )
机型:不限
( 以下面简称即可 )
4/4S/5/5S、Air/miniR/mini/iPad3
使用字体 ( 以中文为主 )
( 用前面的简称即可 )
H:HiraSansGB
H-trad:HiraSansGB 简转繁
H+L:HiraSansGB+俪黑
H+L-trad:HiraSansGB+俪黑 简转繁
P:POP字体
G:少女字体
C:原生中文 简转繁
遇到的问题
如果你看了上面那些列出的已知问题,若你试了移除重装并没有解决,就照上面问题前面的题号,例如 1-1、1-2、1-3 这样列出即可。
推文格式范例:
(1) 完全没有遇到问题
5/H:没问题
5S/H+L:没问题
Air/H+L:没问题
miniR/H:没问题
(2) 有同样问题
5S/H+L:1-5,1-6
5/H+L-trad:1-4,1-6
(3) 有其他问题
5S/H+L:你的问题
谢谢大家了!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.80.151.4
1F:推 yichin122:5s, HL 表情闪退 02/04 15:58
2F:推 ja881213:IPT 5/H+L-trad:没问题 02/04 16:21
3F:推 benq581:4S/H-trad:1-6 02/04 16:57
4F:推 ursoab0811:5s/P 1-7 02/04 17:20
5F:推 richjf:辛苦了 制作的字体很清晰 感恩 02/04 17:47
6F:→ pttlulu:楼楼上,POP字体没有做英文的耶... 1-7是英文字体的问题 02/04 17:51
7F:推 ditm:5/H+L-trad:没有问题 02/04 18:21
8F:推 abcdefghi:1-7的fl问题是 ligature, 字体档为美观而特别加入的 02/04 18:41
9F:→ pttlulu:感谢楼上的说明,原来如此,之後更新都会解决 02/04 18:48
10F:→ ursoab0811:因为我没有装h跟l 所以就选我用的推 英文字体是ubuntu 02/04 19:10
11F:→ pttlulu:喔喔好的谢谢,英文字体之後更新就会解决的,谢谢喔! 02/04 19:18
12F:推 jackjack135:推到底阿!!!真的是太感谢你了!!!! 02/04 19:43
13F:推 charlieZ:lulu大推 繁中世界有你真好! 02/04 23:27
14F:推 ja881213:不知道是否还有推出其他字体的计画 02/05 00:28
15F:推 hsin1207:Instagram本身就很容易闪退出问题,常常出现error... 02/05 01:33
16F:推 rumicco:纯推 有你真好 02/05 14:09
17F:推 NomadShu:5S/C:1-6。谢谢LuLu! :D 02/05 18:17
18F:推 isangxwbh:有LuLu真好 02/06 00:34
20F:→ sydwuz:关於ligature可以参考这边 02/06 05:06
21F:推 emily021382:5/H,H-trad,C:1-5,1-6 02/06 17:38
22F:推 test05test:5/H+L:1-5,1-6 02/10 15:48