Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > UIFontのフォント一覧をWebViewで表示させてそれをキャプチャ保存する

UIFontのフォント一覧をWebViewで表示させてそれをキャプチャ保存する

フォントは多数あってどれを使ってよいかわからないことが多々ありますので、わかりやすくするように、、、

サンプル画像

UIFontのクラス階層


NSObject

UIFont

参考:UIKit Framework Reference UIFont Class Reference
参考:How to check if a font is available in version of iOS?

やってみた

familyNamesとfontNamesForFamilyNameを利用して取得します。


        var familyNames : Array = UIFont.familyNames();
        var len = familyNames.count;
        
        for (var i = 0; i < len; i++)
        {
            let fontFamily = familyNames[i] as String;
            let fontNames = UIFont.fontNamesForFamilyName(fontFamily);
            println("\(fontFamily),\(fontNames)")
        }

すると以下のように出力します。


Marion,[Marion-Italic, Marion-Bold, Marion-Regular]
Copperplate,[Copperplate-Light, Copperplate, Copperplate-Bold]
Heiti SC,[STHeitiSC-Medium, STHeitiSC-Light]
Iowan Old Style,[IowanOldStyle-Italic, IowanOldStyle-Roman, IowanOldStyle-BoldItalic, IowanOldStyle-Bold]
Courier New,[CourierNewPS-BoldMT, CourierNewPS-ItalicMT, CourierNewPSMT, CourierNewPS-BoldItalicMT]
Apple SD Gothic Neo,[AppleSDGothicNeo-Bold, AppleSDGothicNeo-Thin, AppleSDGothicNeo-UltraLight, AppleSDGothicNeo-Regular, AppleSDGothicNeo-Light, AppleSDGothicNeo-Medium, AppleSDGothicNeo-SemiBold]
Heiti TC,[STHeitiTC-Medium, STHeitiTC-Light]
Gill Sans,[GillSans-Italic, GillSans-Bold, GillSans-BoldItalic, GillSans-LightItalic, GillSans, GillSans-Light, GillSans-SemiBold, GillSans-SemiBoldItalic, GillSans-UltraBold]
Marker Felt,[MarkerFelt-Thin, MarkerFelt-Wide]
Thonburi,[Thonburi, Thonburi-Bold, Thonburi-Light]
Avenir Next Condensed,[AvenirNextCondensed-BoldItalic, AvenirNextCondensed-Heavy, AvenirNextCondensed-Medium, AvenirNextCondensed-Regular, AvenirNextCondensed-HeavyItalic, AvenirNextCondensed-MediumItalic, AvenirNextCondensed-Italic, AvenirNextCondensed-UltraLightItalic, AvenirNextCondensed-DemiBold, AvenirNextCondensed-UltraLight, AvenirNextCondensed-Bold, AvenirNextCondensed-DemiBoldItalic]
Tamil Sangam MN,[TamilSangamMN, TamilSangamMN-Bold]
Helvetica Neue,[HelveticaNeue-Italic, HelveticaNeue-Bold, HelveticaNeue-UltraLight, HelveticaNeue-CondensedBlack, HelveticaNeue-BoldItalic, HelveticaNeue-CondensedBold, HelveticaNeue-Medium, HelveticaNeue-Light, HelveticaNeue-Thin, HelveticaNeue-ThinItalic, HelveticaNeue-LightItalic, HelveticaNeue-UltraLightItalic, HelveticaNeue-MediumItalic, HelveticaNeue]
Gurmukhi MN,[GurmukhiMN-Bold, GurmukhiMN]
Times New Roman,[TimesNewRomanPSMT, TimesNewRomanPS-BoldItalicMT, TimesNewRomanPS-ItalicMT, TimesNewRomanPS-BoldMT]
Georgia,[Georgia-BoldItalic, Georgia, Georgia-Italic, Georgia-Bold]
Apple Color Emoji,[AppleColorEmoji]
Arial Rounded MT Bold,[ArialRoundedMTBold]
Kailasa,[Kailasa-Bold, Kailasa]
Kohinoor Devanagari,[KohinoorDevanagari-Light, KohinoorDevanagari-Medium, KohinoorDevanagari-Book]
Sinhala Sangam MN,[SinhalaSangamMN-Bold, SinhalaSangamMN]
Chalkboard SE,[ChalkboardSE-Bold, ChalkboardSE-Light, ChalkboardSE-Regular]
Superclarendon,[Superclarendon-Italic, Superclarendon-Black, Superclarendon-LightItalic, Superclarendon-BlackItalic, Superclarendon-BoldItalic, Superclarendon-Light, Superclarendon-Regular, Superclarendon-Bold]
Gujarati Sangam MN,[GujaratiSangamMN-Bold, GujaratiSangamMN]
Damascus,[DamascusLight, DamascusBold, DamascusSemiBold, DamascusMedium, Damascus]
Noteworthy,[Noteworthy-Light, Noteworthy-Bold]
Geeza Pro,[GeezaPro, GeezaPro-Bold]
Avenir,[Avenir-Medium, Avenir-HeavyOblique, Avenir-Book, Avenir-Light, Avenir-Roman, Avenir-BookOblique, Avenir-Black, Avenir-MediumOblique, Avenir-BlackOblique, Avenir-Heavy, Avenir-LightOblique, Avenir-Oblique]
Academy Engraved LET,[AcademyEngravedLetPlain]
Mishafi,[DiwanMishafi]
Futura,[Futura-CondensedMedium, Futura-CondensedExtraBold, Futura-Medium, Futura-MediumItalic]
Farah,[Farah]
Kannada Sangam MN,[KannadaSangamMN, KannadaSangamMN-Bold]
Arial Hebrew,[ArialHebrew-Bold, ArialHebrew-Light, ArialHebrew]
Arial,[ArialMT, Arial-BoldItalicMT, Arial-BoldMT, Arial-ItalicMT]
Party LET,[PartyLetPlain]
Chalkduster,[Chalkduster]
Hiragino Kaku Gothic ProN,[HiraKakuProN-W6, HiraKakuProN-W3]
Hoefler Text,[HoeflerText-Italic, HoeflerText-Regular, HoeflerText-Black, HoeflerText-BlackItalic]
Optima,[Optima-Regular, Optima-ExtraBlack, Optima-BoldItalic, Optima-Italic, Optima-Bold]
Palatino,[Palatino-Bold, Palatino-Roman, Palatino-BoldItalic, Palatino-Italic]
Malayalam Sangam MN,[MalayalamSangamMN-Bold, MalayalamSangamMN]
Lao Sangam MN,[LaoSangamMN]
Al Nile,[AlNile-Bold, AlNile]
Bradley Hand,[BradleyHandITCTT-Bold]
Hiragino Mincho ProN,[HiraMinProN-W6, HiraMinProN-W3]
Trebuchet MS,[Trebuchet-BoldItalic, TrebuchetMS, TrebuchetMS-Bold, TrebuchetMS-Italic]
Helvetica,[Helvetica-Bold, Helvetica, Helvetica-LightOblique, Helvetica-Oblique, Helvetica-BoldOblique, Helvetica-Light]
Courier,[Courier-BoldOblique, Courier, Courier-Bold, Courier-Oblique]
Cochin,[Cochin-Bold, Cochin, Cochin-Italic, Cochin-BoldItalic]
Devanagari Sangam MN,[DevanagariSangamMN, DevanagariSangamMN-Bold]
Oriya Sangam MN,[OriyaSangamMN, OriyaSangamMN-Bold]
Snell Roundhand,[SnellRoundhand-Bold, SnellRoundhand, SnellRoundhand-Black]
Zapf Dingbats,[ZapfDingbatsITC]
Bodoni 72,[BodoniSvtyTwoITCTT-Bold, BodoniSvtyTwoITCTT-Book, BodoniSvtyTwoITCTT-BookIta]
Verdana,[Verdana-Italic, Verdana-BoldItalic, Verdana, Verdana-Bold]
American Typewriter,[AmericanTypewriter-CondensedLight, AmericanTypewriter, AmericanTypewriter-CondensedBold, AmericanTypewriter-Light, AmericanTypewriter-Bold, AmericanTypewriter-Condensed]
Avenir Next,[AvenirNext-UltraLight, AvenirNext-UltraLightItalic, AvenirNext-Bold, AvenirNext-BoldItalic, AvenirNext-DemiBold, AvenirNext-DemiBoldItalic, AvenirNext-Medium, AvenirNext-HeavyItalic, AvenirNext-Heavy, AvenirNext-Italic, AvenirNext-Regular, AvenirNext-MediumItalic]
Baskerville,[Baskerville-Italic, Baskerville-SemiBold, Baskerville-BoldItalic, Baskerville-SemiBoldItalic, Baskerville-Bold, Baskerville]
Khmer Sangam MN,[KhmerSangamMN]
Didot,[Didot-Italic, Didot-Bold, Didot]
Savoye LET,[SavoyeLetPlain]
Bodoni Ornaments,[BodoniOrnamentsITCTT]
Symbol,[Symbol]
Menlo,[Menlo-Italic, Menlo-Bold, Menlo-Regular, Menlo-BoldItalic]
Bodoni 72 Smallcaps,[BodoniSvtyTwoSCITCTT-Book]
DIN Alternate,[DINAlternate-Bold]
Papyrus,[Papyrus, Papyrus-Condensed]
Euphemia UCAS,[EuphemiaUCAS-Italic, EuphemiaUCAS, EuphemiaUCAS-Bold]
Telugu Sangam MN,[TeluguSangamMN, TeluguSangamMN-Bold]
Bangla Sangam MN,[BanglaSangamMN-Bold, BanglaSangamMN]
Zapfino,[Zapfino]
Bodoni 72 Oldstyle,[BodoniSvtyTwoOSITCTT-Book, BodoniSvtyTwoOSITCTT-Bold, BodoniSvtyTwoOSITCTT-BookIt]
DIN Condensed,[DINCondensed-Bold]

なんだかバーと気持ち悪く一覧表示されます。

カスタマイズ

これだけでは文字フォントがわかっても実際の文字がわかりませんので、 WebViewに出力させて、その結果を端末のPhotoアルバムに保存させる処理をつくってみました



import UIKit

class ViewController: UIViewController,UIWebViewDelegate{
    
    var myWebView:UIWebView = UIWebView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        var htmlString = "";
        
        // フォントファミリー名を取得
        var familyNames : Array = UIFont.familyNames();
        var len = familyNames.count;
        for (var i = 0; i < len; i++)
        {
            let fontFamily = familyNames[i] as String;
            let fontNames = UIFont.fontNamesForFamilyName(fontFamily);
            for (var j = 0; j < fontNames.count; j++){
                htmlString += "<div>\(fontNames[j]):<span style='font-family:\(fontNames[j])'>Swiftサラリーマン!</span></div>";
            }
        }
        
        println(htmlString);
        
        myWebView = UIWebView()
        myWebView.delegate = self
        myWebView.frame = self.view.bounds
        self.view.addSubview(myWebView)
        myWebView.loadHTMLString(htmlString, baseURL: nil)
        
        
    }
    //ページが読み終わったときに呼ばれる関数
    func webViewDidFinishLoad(webView: UIWebView!) {
        let delay = 1.0 * Double(NSEC_PER_SEC)
        var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
        dispatch_after(time, dispatch_get_main_queue(), {
            self.fullScreenCapture();
        })
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func fullScreenCapture() {
        var tmpFrame = myWebView.frame
        var aFrame         = myWebView.frame;
        aFrame.size.height = myWebView.sizeThatFits(UIScreen.mainScreen().bounds.size).height;
        myWebView.frame      = aFrame;        UIGraphicsBeginImageContext(myWebView.sizeThatFits(UIScreen.mainScreen().bounds.size));
        myWebView.layer.renderInContext(UIGraphicsGetCurrentContext())
        var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        myWebView.frame = tmpFrame;
        UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
    }

    func image(image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutablePointer) {
        if error != nil {
            println(error.code)
        }
    }
}

実行するとWebViewに以下のような一覧がざーと表示されて、ついでにPhotoアルバムにフォントリスト+表示が保存されます。コピペして ご利用の端末上で実行してリファレンスにご利用ください。

サンプル画像サンプル画像

まとめ

自分も欲しかったリストでしたので少しニヤニヤして実装しておりました。Swiftサラリーマンだらけで嫌な気持ちにさせていましたらゴメンなさい。

↓こんな記事もありますよ!

CoreTextをイラストで理解してみる

上記がAppleのCoreText説明に記載されているイラスト図ですが正直よくわかりません。文章を三角や丸等の領域に表示したり、一行だけ表示したり、一文字だけ表示したり、 と様々な使い方ができるようです。

UITextViewやらで縦書きができないか検証

「文字の縦書き」をやってみたいのですが、どうもUITextView等には設定が無いとのことです。 調べていると、本当にない?のかな。少し調査して作れそうなもんであればつくってみれたら、、、との気持ちで進めてみます。

WatchKitでAppleWatch開発

AppleのティムクックCEOがAppleWatchの発売が2015年4月と発表しましたね!あと2ヶ月ですので、本日からWatchKitを重点的に記事を記載していってアプリを 同時に開発してけたらと思います。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!