en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

2.20.2013

在 iOS 中使用其他字型的方法


想要在應用程式內使用其他字型設定,就免不了使用到 UIFont 型態,下面就來看看到底要如何使用,才能正確的設定其他字型吧。


新增字型
目前已知能在 iOS 中使用的字型格式有 TTF(True Type Font)、TTC(True Type Collection)和 OTF(Open Type Font)。

本範例是使用「華康娃娃體」來做教學示範,首先將字型檔案加入專案內(此字型並不需要安裝到電腦上),接著編輯 info.plist 讓字型與專案結合。在 info.plist 中新增一個 UIAppFonts 欄位,此欄位會是一個陣列型態,若是使用 iOS 4.0 或是更高版本的 SDK 則新增 Fonts provided by application 欄位,接下來我們將所有要使用的字型逐一鍵入此陣列中。

從 iOS 4.0 以上的環境下在 info.plist 中新增字型檔


設定 UIFont
到目前為止我們已經讓字型檔案與專案做結合,若是使用中文字型檔則會出現一個小問題,就是他的檔案名稱與字型真正的名稱並不一樣,像是標楷體的字型檔,檔案名稱可能是「標楷體.ttf」,但是在電腦中卻會是以「DFKai-sb」來標記,所以我們要先確定字型的正確英文名,才有辦法對 UIFont 加以設定。

確認的方法是雙擊字型檔案,這時會出現安裝字型的畫面,而字型的正確英文稱就會出現在 Caption Title 上。

華康娃娃體的正確英文名稱
如果是對於已安裝過的字體,可以從應用程式中的「字體簿」內找到該字體,並點擊右鍵選擇「驗證字體」,也可以查閱到該字體正確英文名稱。

透過驗證字體的方式取得已安裝字體的正確英文名稱

確認字型正確的英文名稱之後,就可以參考下列程式碼來設定 UIFont 的字型與大小,並將此字型應用於 iOS 應用程式中。
UIFont *myFont = [UIFont fontWithName:@"DFPWaWa-B5" size:28];

其他工具
另外,你可以透過 www.ios6-fonts.com 網路免費工具來快速預覽在 iOS 6.0 中的字型效果,該站目前提供 199 字型的預覽(尚無中文),並且附上簡單的程式碼供複製使用。

www.ios6-fonts.com 網站截圖(2013/2/20)






6 則留言:

  1. 匿名7/12/2012

    大大:
    Lion 好像無法看到字型標的名稱,有辦法解決嗎

    感謝賜教~

    回覆刪除
    回覆
    1. 您好:

      關於您的問題,這跟 Lion 沒有關係喔,想要查詢正確的字體名稱‘ㄝ除了在安裝字體時可以看到外,你也可以到「應用程式」中的「字體簿」查閱,在字體簿中,對著想要的字體點選滑鼠右鍵,選擇「驗證字體」就會看到字體的「檔案名稱」與「正確字型的英文名稱」。

      有些系統字體 iOS 可能不支援,必須採用文章的方法加載到你的應用程式中喔。

      刪除
  2. ttc也可以唷 我測試的是ttc 也跑得起來

    回覆刪除
    回覆
    1. Tom 您好:

      剛剛試了一下確實是可以,感謝您!
      我也會在文章中一並修正。

      刪除
  3. Hi 牛奶你好 事隔多日
    我今天在stackoverflow回答一個老外有關於這篇的問題 恰巧有個老外指正其中的錯誤

    設定 UIFont
    確認的方法是雙擊字型檔案,這時會出現安裝字型的畫面,而字型的正確英文稱就會出現在 Caption Title 上。

    上面這句有個這個老外有說 不能這樣看 因為有些字形可能是粗體字 但是在Title上它不會顯示 只會顯示名稱
    要正確辨認方式為右鍵簡介的字型說明
    http://stackoverflow.com/questions/16788330/how-do-i-get-the-font-name-from-an-otf-or-ttf-file/16788547?noredirect=1#comment24192668_16788547

    回覆刪除
    回覆
    1. Tom 您好:

      謝謝您的分享,讓我多上了一課!

      不過我剛剛是了一下,有些中文字體在簡介中好像也不會顯示英文的字體名稱,如果要查閱,還是驗證字體才會看到。

      刪除