2016-11-15 25 views
-1

Я использую этот большой код из New Font Features at WWDC 2015:Как найти разные ключи для UIFontFeatureTypeIdentifierKey?

import UIKit 

let pointSize : CGFloat = 60.0 
let systemFontDesc = UIFont.systemFont(ofSize: pointSize, 
              weight: UIFontWeightLight).fontDescriptor 
let fractionFontDesc = systemFontDesc.addingAttributes(
    [ 
     UIFontDescriptorFeatureSettingsAttribute: [ 
      [ 
       UIFontFeatureTypeIdentifierKey: kFractionsType, 
       UIFontFeatureSelectorIdentifierKey: kDiagonalFractionsSelector, 
       ], 
     ] 
    ]) 

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 100)) 

label.font = UIFont(descriptor: fractionFontDesc, size:pointSize) 
label.text = "12/48" 

видео WWDC показывает другие способы применения UIFontDescriptorFeatureSettingsAttribute таких как начальники (е = mc²)

Но каковы ключи, чтобы разблокировать другие атрибуты ?

Страница документации для UIFontDescriptorFeatureSettingsAttribute просто говорит, что это массив словарей, содержащих UIFontFeatureTypeIdentifierKey и UIFontFeatureSelectorIdentifierKey.

Документация для этих двух клавиш (type и selector) просто говорит, что они NSNumbers.

Для фракций, тип kFractionsType и селектор kDiagonalFractionsSelector

Как я могу найти ключи для других доступных функций?

ответ

1

Основной текст будет список скрытых возможностей шрифта для вас:

let desc = UIFontDescriptor(name: "Didot", size: 20) as CTFontDescriptor 
let f = CTFontCreateWithFontDescriptor(desc,0,nil) 
let arr = CTFontCopyFeatures(f) 
print(arr as Any) 

Для функций, которые имеют магические имена, вы должны смотреть в заголовке SFNTLayoutTypes.h.

+0

Спасибо - это работает и распечатывает все различные варианты ключей, хотя он дает только значения Int, а не более описательные переменные для этих Ints, таких как kFractionsType и kDiagonalFractionsSelector – RanLearns

+0

Правильно, но, как я сказал в своем ответе , соответствующие имена находятся в заголовке. – matt

+0

Где/как вы смотрите в заголовке? Я, наконец, нашел здесь все разные «магические имена»: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html – RanLearns