         case upper
         case lower
 
-        public func featureSettings() -> (type: Int, selector: Int) {
+        public func featureSettings() -> [(type: Int, selector: Int)] {
             switch self {
             case .upper:
-                return (type: kNumberCaseType, selector: kUpperCaseNumbersSelector)
+                return [(type: kNumberCaseType, selector: kUpperCaseNumbersSelector)]
             case .lower:
-                return (type: kNumberCaseType, selector: kLowerCaseNumbersSelector)
+                return [(type: kNumberCaseType, selector: kLowerCaseNumbersSelector)]
             }
         }
 

            var fontAttributes = fontDescriptor.fontAttributes
            var features = fontAttributes[BONFontDescriptorFeatureSettingsAttribute] as? [StyleAttributes] ?? []
            if featureProviders.count > 0 {
                let newFeatures = featureProviders.map() { $0.featureAttribute() }
                features.append(contentsOf: newFeatures)
                fontAttributes[BONFontDescriptorFeatureSettingsAttribute] = features
            }

        case ordinals
        case scientificInferiors

        public func featureSettings() -> [(type: Int, selector: Int)] {
            let selector: Int
            switch self {
            case .normal: selector = kNormalPositionSelector
