如何調用 iOS 6 中新增的中文字體?

Apple 的支持網站上有一份 iOS 6:字體列表 中提到,新增了諸如報隸、蘭亭黑(纖黑、中黑和特黑)、隸變、華文仿宋、娃娃體、魏碑、行楷、雅痞、標楷體、儷黑、儷宋等新的中文字體,同時說到「App 也可以根據需要安裝」。非 Apple 的 iOS App 如何調用這些字體,有什麼介面嗎?

附:這裡有一份 iBooks 3 用到的字體配置文件,http://126.am/7YcoU1


更新:已經可以通過 `CTFontDescriptorMatchFontDescriptorsWithProgressHandler` 來在系統級別使用新增的字體。請參考 Apple 提供的 sample code: DownloadFont

iOS 6 中新增了一個 FontAssetDownloadManager 的類,不過目前暫時還是 Private API。也就是說在非 Apple 的 iOS app 中無法使用系統級的方法來調用這些字體:

https://github.com/nst/iOS-Runtime-Headers/blob/6.0/Frameworks/CoreText.framework/FontAssetDownloadManager.h


tl;dr

目前只能在iBooks上用到。首先要給設備越獄,然後去下面的地址下載配置文件,解壓到iBooks.app的目錄中覆蓋原有文件。重新啟動一下iBooks,你就能看到除了黑體楷體宋體圓體之外的字體了。

地址:https://github.com/clippit/iBooks-FontPresets/raw/binary/download/FontPresets.zip

========================================================================

(好像大家都會說謝邀,那我也先謝謝)

之前@羅晟已經從iOS開發者的角度提到了FontAssetDownloadManager類中的私有API。目前我發現的使用了這個私有API的程序也就是iBooks了,因為只有它具備從網上下載額外字體的功能。那麼就從iBooks開刀吧。

在 iBooks.app 的Bundle目錄中,可以看到大量以 FontPresets 開頭的 Plist 文件,這些文件便是定義了不同語言環境下 iBooks 顯示字體列表的奧秘所在。截取一段 FontPresets-zh_cn.plist 的內容如下:

&
&default&
& &displayName&
&黑體&
&fontFamily&
&Heiti SC&
&postscriptBoldName&
&STHeitiSC-Medium&
&postscriptName&
&STHeitiSC-Light&
&settings&
&
&
&fontSize&
&0.95999999999999996&
&lineHeight&
&1.6499999999999999&
&

&
&fontSize&
&1.05&
&lineHeight&
&1.6100000000000001&
&

&
&fontSize&
&1.2&
&lineHeight&
&1.6399999999999999&
&

&
&
&fontSize&
&6.2000000000000002&
&lineHeight&
&1.4199999999999999&
&

&
&

可以看到對於一個字體,這裡設置了在 iBooks 中顯示的名稱、字體族名字、常規和粗體的 PostScript 字體名,以及一系列字型大小和行高的關係(在放大縮小文字時起作用)。於是啟用額外字體的方法就很明了了,即手動將這些字體的配置寫入這些 Plist 文件中。字體的各種名字可以在提問者的 XML鏈接 中找到,至於字型大小和行高的配置,我暫時沒有想到什麼好方法去生成,於是直接就複製了黑體中的配置信息。

我雖然把所有字體都加進列表裡了,不過適合 iBooks 使用的也就冬青黑體、蘭亭黑了,華文仿宋可能還算湊合,但是用娃娃體、報隸之流看電子書就太逆天了……

這裡所描述的更改只適用于越獄過的 iOS 6 系統。雖然要修改的文件存在於 mobile 用戶空間,不屬於系統文件,但是 iOS 6 對於應用程序的 .app 目錄增加了額外的只讀限制。只有在越獄後,這些目錄才是可寫的。

上面下載中我自己修改的配置文件在 iOS 6.1.2 + iBooks 3.1 測試通過。修改過的 Plist 的 XML 格式文件在 GitHub 上,歡迎提出意見。此外本回答的主要內容已經整理到我的博客中:在iBooks中啟用隱藏的中日韓字體(可惡的尾巴廣告黨……


調用系統外的字體,在上傳到AppStore 會因為字體版權問題 被拒么?


推薦閱讀:

有什麼iOS進階的書推薦嗎?
哪些 App 讓你讚不絕口,並改善了你的生活質量?
iOS 11 Developer Beta 1 值不值得更新?
如何客觀的比較iOS、Android以及即將發布的Windows 10 for phone的優勢與劣勢?
為什麼 iPhone 的中文拼音輸入鍵盤沒有九宮格 T9 布局?但日文有?

TAG:iOS | 中文字體 | iOS應用 | iOS字體 |