如何調用 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.htl;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 的內容如下:
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
可以看到對於一個字體,這裡設置了在 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 布局?但日文有?