2016-04-15 15 views
-1

小文字のフォントを使用しようとしています。私はそれが小さな帽子を行うと主張したが、何かの男のウェブサイト上でUIFont拡張子が見つかりましたが、悲しいかな、幸運。何か案は?small capsの使い方は?

extension UIFont { 

    func smallCapsFontVariant(smallCapsForUppercase: Bool = true) -> UIFont { 
    var features = [ 
    [UIFontFeatureTypeIdentifierKey: kLowerCaseType, 
    UIFontFeatureSelectorIdentifierKey: kLowerCaseSmallCapsSelector] 
] 

if smallCapsForUppercase { 
    features.append([UIFontFeatureTypeIdentifierKey: kUpperCaseType, 
    UIFontFeatureSelectorIdentifierKey: kUpperCaseSmallCapsSelector]) 
} 

let smallCapsFontDescriptor = fontDescriptor().fontDescriptorByAddingAttributes([ 
    UIFontDescriptorFeatureSettingsAttribute : features 
    ]) 

return UIFont(descriptor: smallCapsFontDescriptor, size: 0d) 
} 
+5

@LeoNatan私はそれを理解していますが、ユーザーは*の回答が必要な言語で質問にタグを付けることができます。その質問は、タグ付き言語に関するものである必要はありません。たとえば、ここで、私はOPがObjective-Cの答えを望んでいないという事実を知っています。 – Moritz

答えて

2

問題は、スモールキャップのバリアントを持って非常に少数のフォント。あなたがそれらの少数を使用していない場合、あなたは小さな帽子を得ることはありません。あなたは魔法のようにここディドのスモールキャップ変形にアクセスするコードです...

がされていない機能を作成することはできません。

let desc = UIFontDescriptor(name:"Didot", size:18) 
    let d = [ 
     UIFontFeatureTypeIdentifierKey:kLetterCaseType, 
     UIFontFeatureSelectorIdentifierKey:kSmallCapsSelector 
    ] 
    let desc2 = desc.fontDescriptorByAddingAttributes(
     [UIFontDescriptorFeatureSettingsAttribute:[d]] 
    ) 
    let f = UIFont(descriptor: desc2, size: 0) 

今すぐfはディドのスモールキャップ変異体である、そしてあなたあなたのインターフェイスでそれを使用することができます。

使用しているフォントがDidotでない場合は、そのコードに置き換えてください。あなたのフォントに小さな大文字小文字の亜種があるか、これがうまくいかないことから始めることを非常に確実にしてください。

+0

この回答を下落させることは明らかです。 – matt

+0

これはもう動作していないようです。おそらくiOS 9の問題ですか? – ntesler

+0

@nteslerは、iOS 9,10では問題なく動作します。ダウンロード可能なプロジェクトはこちら:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p499fontDescriptor2/ch23p670font1dynamicType/ViewController.swift – matt

関連する問題