[feat] Complete feature types list
diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index 3f862a1..1618cf5 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -971,7 +971,7 @@
 	{
 	  /* Deprecated. https://github.com/harfbuzz/harfbuzz/issues/1342 */
 	  type = HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE;
-	  setting = 1/*kLowerCaseSmallCapsSelector*/;
+	  setting = HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_SMALL_CAPS;
 	  goto retry;
 	}
       }
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc
index 12304d6..5b534c5 100644
--- a/src/hb-aat-layout.cc
+++ b/src/hb-aat-layout.cc
@@ -32,7 +32,7 @@
 #include "hb-aat-layout.hh"
 #include "hb-aat-layout-ankr-table.hh"
 #include "hb-aat-layout-bsln-table.hh" // Just so we compile it; unused otherwise.
-#include "hb-aat-layout-feat-table.hh" // Just so we compile it; unused otherwise.
+#include "hb-aat-layout-feat-table.hh"
 #include "hb-aat-layout-just-table.hh" // Just so we compile it; unused otherwise.
 #include "hb-aat-layout-kerx-table.hh"
 #include "hb-aat-layout-morx-table.hh"
@@ -44,82 +44,82 @@
  * when moving to this file. */
 static const hb_aat_feature_mapping_t feature_mappings[] =
 {
-  {HB_TAG ('a','f','r','c'),   HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS,               1/*kVerticalFractionsSelector*/,             0/*kNoFractionsSelector*/},
-  {HB_TAG ('c','2','p','c'),   HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE,              2/*kUpperCasePetiteCapsSelector*/,           0/*kDefaultUpperCaseSelector*/},
-  {HB_TAG ('c','2','s','c'),   HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE,              1/*kUpperCaseSmallCapsSelector*/,            0/*kDefaultUpperCaseSelector*/},
-  {HB_TAG ('c','a','l','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, 0/*kContextualAlternatesOnSelector*/,        1/*kContextualAlternatesOffSelector*/},
-  {HB_TAG ('c','a','s','e'),   HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT,   0/*kCaseSensitiveLayoutOnSelector*/,         1/*kCaseSensitiveLayoutOffSelector*/},
-  {HB_TAG ('c','l','i','g'),   HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               18/*kContextualLigaturesOnSelector*/,        19/*kContextualLigaturesOffSelector*/},
-  {HB_TAG ('c','p','s','p'),   HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT,   2/*kCaseSensitiveSpacingOnSelector*/,        3/*kCaseSensitiveSpacingOffSelector*/},
-  {HB_TAG ('c','s','w','h'),   HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, 4/*kContextualSwashAlternatesOnSelector*/,   5/*kContextualSwashAlternatesOffSelector*/},
-  {HB_TAG ('d','l','i','g'),   HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               4/*kRareLigaturesOnSelector*/,               5/*kRareLigaturesOffSelector*/},
-  {HB_TAG ('e','x','p','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         10/*kExpertCharactersSelector*/,             16},
-  {HB_TAG ('f','r','a','c'),   HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS,               2/*kDiagonalFractionsSelector*/,             0/*kNoFractionsSelector*/},
-  {HB_TAG ('f','w','i','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            1/*kMonospacedTextSelector*/,                7},
-  {HB_TAG ('h','a','l','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            6/*kAltHalfWidthTextSelector*/,              7},
-  {HB_TAG ('h','i','s','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               20/*kHistoricalLigaturesOnSelector*/,        21/*kHistoricalLigaturesOffSelector*/},
-  {HB_TAG ('h','k','n','a'),   HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA,          0/*kAlternateHorizKanaOnSelector*/,          1/*kAlternateHorizKanaOffSelector*/,        },
-  {HB_TAG ('h','l','i','g'),   HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               20/*kHistoricalLigaturesOnSelector*/,        21/*kHistoricalLigaturesOffSelector*/},
-  {HB_TAG ('h','n','g','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION,         1/*kHanjaToHangulSelector*/,                 0/*kNoTransliterationSelector*/},
-  {HB_TAG ('h','o','j','o'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         12/*kHojoCharactersSelector*/,               16},
-  {HB_TAG ('h','w','i','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            2/*kHalfWidthTextSelector*/,                 7},
-  {HB_TAG ('i','t','a','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN,        2/*kCJKItalicRomanOnSelector*/,              3/*kCJKItalicRomanOffSelector*/},
-  {HB_TAG ('j','p','0','4'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         11/*kJIS2004CharactersSelector*/,            16},
-  {HB_TAG ('j','p','7','8'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         2/*kJIS1978CharactersSelector*/,             16},
-  {HB_TAG ('j','p','8','3'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         3/*kJIS1983CharactersSelector*/,             16},
-  {HB_TAG ('j','p','9','0'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         4/*kJIS1990CharactersSelector*/,             16},
-  {HB_TAG ('l','i','g','a'),   HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               2/*kCommonLigaturesOnSelector*/,             3/*kCommonLigaturesOffSelector*/},
-  {HB_TAG ('l','n','u','m'),   HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE,             1/*kUpperCaseNumbersSelector*/,              2},
-  {HB_TAG ('m','g','r','k'),   HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS,     10/*kMathematicalGreekOnSelector*/,          11/*kMathematicalGreekOffSelector*/},
-  {HB_TAG ('n','l','c','k'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         13/*kNLCCharactersSelector*/,                16},
-  {HB_TAG ('o','n','u','m'),   HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE,             0/*kLowerCaseNumbersSelector*/,              2},
-  {HB_TAG ('o','r','d','n'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       3/*kOrdinalsSelector*/,                      0/*kNormalPositionSelector*/},
-  {HB_TAG ('p','a','l','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            5/*kAltProportionalTextSelector*/,           7},
-  {HB_TAG ('p','c','a','p'),   HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE,              2/*kLowerCasePetiteCapsSelector*/,           0/*kDefaultLowerCaseSelector*/},
-  {HB_TAG ('p','k','n','a'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            0/*kProportionalTextSelector*/,              7},
-  {HB_TAG ('p','n','u','m'),   HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING,          1/*kProportionalNumbersSelector*/,           4},
-  {HB_TAG ('p','w','i','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            0/*kProportionalTextSelector*/,              7},
-  {HB_TAG ('q','w','i','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            4/*kQuarterWidthTextSelector*/,              7},
-  {HB_TAG ('r','u','b','y'),   HB_AAT_LAYOUT_FEATURE_TYPE_RUBYKANA,                2/*kRubyKanaOnSelector*/,                    3/*kRubyKanaOffSelector*/},
-  {HB_TAG ('s','i','n','f'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       4/*kScientificInferiorsSelector*/,           0/*kNormalPositionSelector*/},
-  {HB_TAG ('s','m','c','p'),   HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE,              1/*kLowerCaseSmallCapsSelector*/,            0/*kDefaultLowerCaseSelector*/},
-  {HB_TAG ('s','m','p','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         1/*kSimplifiedCharactersSelector*/,          16},
-  {HB_TAG ('s','s','0','1'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  2/*kStylisticAltOneOnSelector*/,             3/*kStylisticAltOneOffSelector*/},
-  {HB_TAG ('s','s','0','2'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  4/*kStylisticAltTwoOnSelector*/,             5/*kStylisticAltTwoOffSelector*/},
-  {HB_TAG ('s','s','0','3'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  6/*kStylisticAltThreeOnSelector*/,           7/*kStylisticAltThreeOffSelector*/},
-  {HB_TAG ('s','s','0','4'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  8/*kStylisticAltFourOnSelector*/,            9/*kStylisticAltFourOffSelector*/},
-  {HB_TAG ('s','s','0','5'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  10/*kStylisticAltFiveOnSelector*/,           11/*kStylisticAltFiveOffSelector*/},
-  {HB_TAG ('s','s','0','6'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  12/*kStylisticAltSixOnSelector*/,            13/*kStylisticAltSixOffSelector*/},
-  {HB_TAG ('s','s','0','7'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  14/*kStylisticAltSevenOnSelector*/,          15/*kStylisticAltSevenOffSelector*/},
-  {HB_TAG ('s','s','0','8'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  16/*kStylisticAltEightOnSelector*/,          17/*kStylisticAltEightOffSelector*/},
-  {HB_TAG ('s','s','0','9'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  18/*kStylisticAltNineOnSelector*/,           19/*kStylisticAltNineOffSelector*/},
-  {HB_TAG ('s','s','1','0'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  20/*kStylisticAltTenOnSelector*/,            21/*kStylisticAltTenOffSelector*/},
-  {HB_TAG ('s','s','1','1'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  22/*kStylisticAltElevenOnSelector*/,         23/*kStylisticAltElevenOffSelector*/},
-  {HB_TAG ('s','s','1','2'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  24/*kStylisticAltTwelveOnSelector*/,         25/*kStylisticAltTwelveOffSelector*/},
-  {HB_TAG ('s','s','1','3'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  26/*kStylisticAltThirteenOnSelector*/,       27/*kStylisticAltThirteenOffSelector*/},
-  {HB_TAG ('s','s','1','4'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  28/*kStylisticAltFourteenOnSelector*/,       29/*kStylisticAltFourteenOffSelector*/},
-  {HB_TAG ('s','s','1','5'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  30/*kStylisticAltFifteenOnSelector*/,        31/*kStylisticAltFifteenOffSelector*/},
-  {HB_TAG ('s','s','1','6'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  32/*kStylisticAltSixteenOnSelector*/,        33/*kStylisticAltSixteenOffSelector*/},
-  {HB_TAG ('s','s','1','7'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  34/*kStylisticAltSeventeenOnSelector*/,      35/*kStylisticAltSeventeenOffSelector*/},
-  {HB_TAG ('s','s','1','8'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  36/*kStylisticAltEighteenOnSelector*/,       37/*kStylisticAltEighteenOffSelector*/},
-  {HB_TAG ('s','s','1','9'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  38/*kStylisticAltNineteenOnSelector*/,       39/*kStylisticAltNineteenOffSelector*/},
-  {HB_TAG ('s','s','2','0'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  40/*kStylisticAltTwentyOnSelector*/,         41/*kStylisticAltTwentyOffSelector*/},
-  {HB_TAG ('s','u','b','s'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       2/*kInferiorsSelector*/,                     0/*kNormalPositionSelector*/},
-  {HB_TAG ('s','u','p','s'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       1/*kSuperiorsSelector*/,                     0/*kNormalPositionSelector*/},
-  {HB_TAG ('s','w','s','h'),   HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, 2/*kSwashAlternatesOnSelector*/,             3/*kSwashAlternatesOffSelector*/},
-  {HB_TAG ('t','i','t','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS,           4/*kTitlingCapsSelector*/,                   0/*kNoStyleOptionsSelector*/},
-  {HB_TAG ('t','n','a','m'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         14/*kTraditionalNamesCharactersSelector*/,   16},
-  {HB_TAG ('t','n','u','m'),   HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING,          0/*kMonospacedNumbersSelector*/,             4},
-  {HB_TAG ('t','r','a','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         0/*kTraditionalCharactersSelector*/,         16},
-  {HB_TAG ('t','w','i','d'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            3/*kThirdWidthTextSelector*/,                7},
-  {HB_TAG ('u','n','i','c'),   HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE,             14,                                          15},
-  {HB_TAG ('v','a','l','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            5/*kAltProportionalTextSelector*/,           7},
-  {HB_TAG ('v','e','r','t'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION,   0/*kSubstituteVerticalFormsOnSelector*/,     1/*kSubstituteVerticalFormsOffSelector*/},
-  {HB_TAG ('v','h','a','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            6/*kAltHalfWidthTextSelector*/,              7},
-  {HB_TAG ('v','k','n','a'),   HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA,          2/*kAlternateVertKanaOnSelector*/,           3/*kAlternateVertKanaOffSelector*/},
-  {HB_TAG ('v','p','a','l'),   HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            5/*kAltProportionalTextSelector*/,           7},
-  {HB_TAG ('v','r','t','2'),   HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION,   0/*kSubstituteVerticalFormsOnSelector*/,     1/*kSubstituteVerticalFormsOffSelector*/},
-  {HB_TAG ('z','e','r','o'),   HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS,      4/*kSlashedZeroOnSelector*/,                 5/*kSlashedZeroOffSelector*/},
+  {HB_TAG ('a','f','r','c'), HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS,               HB_AAT_LAYOUT_SELECTOR_VERTICAL_FRACTIONS,             HB_AAT_LAYOUT_SELECTOR_NO_FRACTIONS},
+  {HB_TAG ('c','2','p','c'), HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE,              HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_PETITE_CAPS,         HB_AAT_LAYOUT_SELECTOR_DEFAULT_UPPER_CASE},
+  {HB_TAG ('c','2','s','c'), HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE,              HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_SMALL_CAPS,          HB_AAT_LAYOUT_SELECTOR_DEFAULT_UPPER_CASE},
+  {HB_TAG ('c','a','l','t'), HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_ALTERNATES_ON,       HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_ALTERNATES_OFF},
+  {HB_TAG ('c','a','s','e'), HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT,   HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_LAYOUT_ON,       HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF},
+  {HB_TAG ('c','l','i','g'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_LIGATURES_ON,        HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_LIGATURES_OFF},
+  {HB_TAG ('c','p','s','p'), HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT,   HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_SPACING_ON,      HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_SPACING_OFF},
+  {HB_TAG ('c','s','w','h'), HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON, HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF},
+  {HB_TAG ('d','l','i','g'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               HB_AAT_LAYOUT_SELECTOR_RARE_LIGATURES_ON,              HB_AAT_LAYOUT_SELECTOR_RARE_LIGATURES_OFF},
+  {HB_TAG ('e','x','p','t'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_EXPERT_CHARACTERS,              16},
+  {HB_TAG ('f','r','a','c'), HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS,               HB_AAT_LAYOUT_SELECTOR_DIAGONAL_FRACTIONS,             HB_AAT_LAYOUT_SELECTOR_NO_FRACTIONS},
+  {HB_TAG ('f','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_MONOSPACED_TEXT,                7},
+  {HB_TAG ('h','a','l','t'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_ALT_HALF_WIDTH_TEXT,            7},
+  {HB_TAG ('h','i','s','t'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_ON,        HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_OFF},
+  {HB_TAG ('h','k','n','a'), HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA,          HB_AAT_LAYOUT_SELECTOR_ALTERNATE_HORIZ_KANA_ON,        HB_AAT_LAYOUT_SELECTOR_ALTERNATE_HORIZ_KANA_OFF},
+  {HB_TAG ('h','l','i','g'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_ON,        HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_OFF},
+  {HB_TAG ('h','n','g','l'), HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION,         HB_AAT_LAYOUT_SELECTOR_HANJA_TO_HANGUL,                HB_AAT_LAYOUT_SELECTOR_NO_TRANSLITERATION},
+  {HB_TAG ('h','o','j','o'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_HOJO_CHARACTERS,                16},
+  {HB_TAG ('h','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_HALF_WIDTH_TEXT,                7},
+  {HB_TAG ('i','t','a','l'), HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN,        HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_ON,            HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_OFF},
+  {HB_TAG ('j','p','0','4'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_JIS2004_CHARACTERS,             16},
+  {HB_TAG ('j','p','7','8'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_JIS1978_CHARACTERS,             16},
+  {HB_TAG ('j','p','8','3'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_JIS1983_CHARACTERS,             16},
+  {HB_TAG ('j','p','9','0'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_JIS1990_CHARACTERS,             16},
+  {HB_TAG ('l','i','g','a'), HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES,               HB_AAT_LAYOUT_SELECTOR_COMMON_LIGATURES_ON,            HB_AAT_LAYOUT_SELECTOR_COMMON_LIGATURES_OFF},
+  {HB_TAG ('l','n','u','m'), HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE,             HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_NUMBERS,             2},
+  {HB_TAG ('m','g','r','k'), HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS,     HB_AAT_LAYOUT_SELECTOR_MATHEMATICAL_GREEK_ON,          HB_AAT_LAYOUT_SELECTOR_MATHEMATICAL_GREEK_OFF},
+  {HB_TAG ('n','l','c','k'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_NLCCHARACTERS,                  16},
+  {HB_TAG ('o','n','u','m'), HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE,             HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_NUMBERS,             2},
+  {HB_TAG ('o','r','d','n'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       HB_AAT_LAYOUT_SELECTOR_ORDINALS,                       HB_AAT_LAYOUT_SELECTOR_NORMAL_POSITION},
+  {HB_TAG ('p','a','l','t'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_ALT_PROPORTIONAL_TEXT,          7},
+  {HB_TAG ('p','c','a','p'), HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE,              HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_PETITE_CAPS,         HB_AAT_LAYOUT_SELECTOR_DEFAULT_LOWER_CASE},
+  {HB_TAG ('p','k','n','a'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_TEXT,              7},
+  {HB_TAG ('p','n','u','m'), HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING,          HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_NUMBERS,           4},
+  {HB_TAG ('p','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_TEXT,              7},
+  {HB_TAG ('q','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_QUARTER_WIDTH_TEXT,             7},
+  {HB_TAG ('r','u','b','y'), HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA,               HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_ON,                   HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_OFF},
+  {HB_TAG ('s','i','n','f'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       HB_AAT_LAYOUT_SELECTOR_SCIENTIFIC_INFERIORS,           HB_AAT_LAYOUT_SELECTOR_NORMAL_POSITION},
+  {HB_TAG ('s','m','c','p'), HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE,              HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_SMALL_CAPS,          HB_AAT_LAYOUT_SELECTOR_DEFAULT_LOWER_CASE},
+  {HB_TAG ('s','m','p','l'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_SIMPLIFIED_CHARACTERS,          16},
+  {HB_TAG ('s','s','0','1'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ONE_ON,           HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ONE_OFF},
+  {HB_TAG ('s','s','0','2'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWO_ON,           HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWO_OFF},
+  {HB_TAG ('s','s','0','3'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THREE_ON,         HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THREE_OFF},
+  {HB_TAG ('s','s','0','4'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOUR_ON,          HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOUR_OFF},
+  {HB_TAG ('s','s','0','5'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIVE_ON,          HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIVE_OFF},
+  {HB_TAG ('s','s','0','6'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIX_ON,           HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIX_OFF},
+  {HB_TAG ('s','s','0','7'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVEN_ON,         HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVEN_OFF},
+  {HB_TAG ('s','s','0','8'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHT_ON,         HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHT_OFF},
+  {HB_TAG ('s','s','0','9'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINE_ON,          HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINE_OFF},
+  {HB_TAG ('s','s','1','0'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TEN_ON,           HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TEN_OFF},
+  {HB_TAG ('s','s','1','1'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ELEVEN_ON,        HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF},
+  {HB_TAG ('s','s','1','2'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWELVE_ON,        HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWELVE_OFF},
+  {HB_TAG ('s','s','1','3'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON,      HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF},
+  {HB_TAG ('s','s','1','4'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON,      HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF},
+  {HB_TAG ('s','s','1','5'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON,       HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF},
+  {HB_TAG ('s','s','1','6'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON,       HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF},
+  {HB_TAG ('s','s','1','7'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON,     HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF},
+  {HB_TAG ('s','s','1','8'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON,      HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF},
+  {HB_TAG ('s','s','1','9'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINETEEN_ON,      HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF},
+  {HB_TAG ('s','s','2','0'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES,  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWENTY_ON,        HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWENTY_OFF},
+  {HB_TAG ('s','u','b','s'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       HB_AAT_LAYOUT_SELECTOR_INFERIORS,                      HB_AAT_LAYOUT_SELECTOR_NORMAL_POSITION},
+  {HB_TAG ('s','u','p','s'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION,       HB_AAT_LAYOUT_SELECTOR_SUPERIORS,                      HB_AAT_LAYOUT_SELECTOR_NORMAL_POSITION},
+  {HB_TAG ('s','w','s','h'), HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES, HB_AAT_LAYOUT_SELECTOR_SWASH_ALTERNATES_ON,            HB_AAT_LAYOUT_SELECTOR_SWASH_ALTERNATES_OFF},
+  {HB_TAG ('t','i','t','l'), HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS,           HB_AAT_LAYOUT_SELECTOR_TITLING_CAPS,                   HB_AAT_LAYOUT_SELECTOR_NO_STYLE_OPTIONS},
+  {HB_TAG ('t','n','a','m'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_NAMES_CHARACTERS,   16},
+  {HB_TAG ('t','n','u','m'), HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING,          HB_AAT_LAYOUT_SELECTOR_MONOSPACED_NUMBERS,             4},
+  {HB_TAG ('t','r','a','d'), HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE,         HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_CHARACTERS,         16},
+  {HB_TAG ('t','w','i','d'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_THIRD_WIDTH_TEXT,               7},
+  {HB_TAG ('u','n','i','c'), HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE,             14,                                                    15},
+  {HB_TAG ('v','a','l','t'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_ALT_PROPORTIONAL_TEXT,          7},
+  {HB_TAG ('v','e','r','t'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION,   HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON,   HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF},
+  {HB_TAG ('v','h','a','l'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_ALT_HALF_WIDTH_TEXT,            7},
+  {HB_TAG ('v','k','n','a'), HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA,          HB_AAT_LAYOUT_SELECTOR_ALTERNATE_VERT_KANA_ON,         HB_AAT_LAYOUT_SELECTOR_ALTERNATE_VERT_KANA_OFF},
+  {HB_TAG ('v','p','a','l'), HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING,            HB_AAT_LAYOUT_SELECTOR_ALT_PROPORTIONAL_TEXT,          7},
+  {HB_TAG ('v','r','t','2'), HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION,   HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON,   HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF},
+  {HB_TAG ('z','e','r','o'), HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS,      HB_AAT_LAYOUT_SELECTOR_SLASHED_ZERO_ON,                HB_AAT_LAYOUT_SELECTOR_SLASHED_ZERO_OFF},
 };
 
 const hb_aat_feature_mapping_t *
diff --git a/src/hb-aat.h b/src/hb-aat.h
index 2f7e0c4..11e5825 100644
--- a/src/hb-aat.h
+++ b/src/hb-aat.h
@@ -31,35 +31,686 @@
 HB_BEGIN_DECLS
 
 /*
+ * AAT available features
+ *
  * Since: REPLACEME
  */
 typedef enum
 {
-  HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES               = 1,
-  HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE             = 3,
-  HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION   = 4,
-  HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING          = 6,
-  HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION       = 10,
-  HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS               = 11,
-  HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS      = 14,
-  HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES  = 17,
-  HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS     = 15,
-  HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS           = 19,
-  HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE         = 20,
-  HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE             = 21,
-  HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING            = 22,
-  HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION         = 23,
-  HB_AAT_LAYOUT_FEATURE_TYPE_RUBYKANA                = 28,
-  HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN        = 32,
-  HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT   = 33,
-  HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA          = 34,
-  HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES  = 35,
-  HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES = 36,
-  HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE              = 37,
-  HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE              = 38,
-  HB_AAT_LAYOUT_FEATURE_TYPE_UNDEFINED               = 0xFFFF
+  HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC                   = 0,
+  HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES                         = 1,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION                = 2,
+  HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE                       = 3,
+  HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION             = 4,
+  HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT          = 5,
+  HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING                    = 6,
+  HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE                  = 8,
+  HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE                   = 9,
+  HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION                 = 10,
+  HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS                         = 11,
+  HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE       = 13,
+  HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS                = 14,
+  HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS               = 15,
+  HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE                = 16,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES            = 17,
+  HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE            = 18,
+  HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS                     = 19,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE                   = 20,
+  HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE                       = 21,
+  HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING                      = 22,
+  HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION                   = 23,
+  HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE                   = 24,
+  HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE                 = 25,
+  HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE          = 26,
+  HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE        = 27,
+  HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA                         = 28,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE      = 29,
+  HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE     = 30,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31,
+  HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN                  = 32,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT             = 33,
+  HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA                    = 34,
+  HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES            = 35,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES           = 36,
+  HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE                        = 37,
+  HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE                        = 38,
+  HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE                 = 39,
+  HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE            = 103,
+  HB_AAT_LAYOUT_FEATURE_TYPE_UNDEFINED                         = 0xFFFF
 } hb_aat_layout_feature_type_t;
 
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_ALL_TYPE_FEATURES_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_ALL_TYPE_FEATURES_OFF = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_REQUIRED_LIGATURES_ON        = 0,
+  HB_AAT_LAYOUT_SELECTOR_REQUIRED_LIGATURES_OFF       = 1,
+  HB_AAT_LAYOUT_SELECTOR_COMMON_LIGATURES_ON          = 2,
+  HB_AAT_LAYOUT_SELECTOR_COMMON_LIGATURES_OFF         = 3,
+  HB_AAT_LAYOUT_SELECTOR_RARE_LIGATURES_ON            = 4,
+  HB_AAT_LAYOUT_SELECTOR_RARE_LIGATURES_OFF           = 5,
+  HB_AAT_LAYOUT_SELECTOR_LOGOS_ON                     = 6,
+  HB_AAT_LAYOUT_SELECTOR_LOGOS_OFF                    = 7,
+  HB_AAT_LAYOUT_SELECTOR_REBUS_PICTURES_ON            = 8,
+  HB_AAT_LAYOUT_SELECTOR_REBUS_PICTURES_OFF           = 9,
+  HB_AAT_LAYOUT_SELECTOR_DIPHTHONG_LIGATURES_ON       = 10,
+  HB_AAT_LAYOUT_SELECTOR_DIPHTHONG_LIGATURES_OFF      = 11,
+  HB_AAT_LAYOUT_SELECTOR_SQUARED_LIGATURES_ON         = 12,
+  HB_AAT_LAYOUT_SELECTOR_SQUARED_LIGATURES_OFF        = 13,
+  HB_AAT_LAYOUT_SELECTOR_ABBREV_SQUARED_LIGATURES_ON  = 14,
+  HB_AAT_LAYOUT_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF = 15,
+  HB_AAT_LAYOUT_SELECTOR_SYMBOL_LIGATURES_ON          = 16,
+  HB_AAT_LAYOUT_SELECTOR_SYMBOL_LIGATURES_OFF         = 17,
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_LIGATURES_ON      = 18,
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_LIGATURES_OFF     = 19,
+  HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_ON      = 20,
+  HB_AAT_LAYOUT_SELECTOR_HISTORICAL_LIGATURES_OFF     = 21
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_UNCONNECTED         = 0,
+  HB_AAT_LAYOUT_SELECTOR_PARTIALLY_CONNECTED = 1,
+  HB_AAT_LAYOUT_SELECTOR_CURSIVE             = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_UPPER_AND_LOWER_CASE        = 0, /* deprecated */
+  HB_AAT_LAYOUT_SELECTOR_ALL_CAPS                    = 1, /* deprecated */
+  HB_AAT_LAYOUT_SELECTOR_ALL_LOWER_CASE              = 2, /* deprecated */
+  HB_AAT_LAYOUT_SELECTOR_SMALL_CAPS                  = 3, /* deprecated */
+  HB_AAT_LAYOUT_SELECTOR_INITIAL_CAPS                = 4, /* deprecated */
+  HB_AAT_LAYOUT_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS = 5  /* deprecated */
+};
+
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_LINGUISTIC_REARRANGEMENT_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_MONOSPACED_NUMBERS    = 0,
+  HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_NUMBERS  = 1,
+  HB_AAT_LAYOUT_SELECTOR_THIRD_WIDTH_NUMBERS   = 2,
+  HB_AAT_LAYOUT_SELECTOR_QUARTER_WIDTH_NUMBERS = 3
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_WORD_INITIAL_SWASHES_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_WORD_INITIAL_SWASHES_OFF = 1,
+  HB_AAT_LAYOUT_SELECTOR_WORD_FINAL_SWASHES_ON    = 2,
+  HB_AAT_LAYOUT_SELECTOR_WORD_FINAL_SWASHES_OFF   = 3,
+  HB_AAT_LAYOUT_SELECTOR_LINE_INITIAL_SWASHES_ON  = 4,
+  HB_AAT_LAYOUT_SELECTOR_LINE_INITIAL_SWASHES_OFF = 5,
+  HB_AAT_LAYOUT_SELECTOR_LINE_FINAL_SWASHES_ON    = 6,
+  HB_AAT_LAYOUT_SELECTOR_LINE_FINAL_SWASHES_OFF   = 7,
+  HB_AAT_LAYOUT_SELECTOR_NON_FINAL_SWASHES_ON     = 8,
+  HB_AAT_LAYOUT_SELECTOR_NON_FINAL_SWASHES_OFF    = 9
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_SHOW_DIACRITICS      = 0,
+  HB_AAT_LAYOUT_SELECTOR_HIDE_DIACRITICS      = 1,
+  HB_AAT_LAYOUT_SELECTOR_DECOMPOSE_DIACRITICS = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NORMAL_POSITION      = 0,
+  HB_AAT_LAYOUT_SELECTOR_SUPERIORS            = 1,
+  HB_AAT_LAYOUT_SELECTOR_INFERIORS            = 2,
+  HB_AAT_LAYOUT_SELECTOR_ORDINALS             = 3,
+  HB_AAT_LAYOUT_SELECTOR_SCIENTIFIC_INFERIORS = 4
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_FRACTIONS       = 0,
+  HB_AAT_LAYOUT_SELECTOR_VERTICAL_FRACTIONS = 1,
+  HB_AAT_LAYOUT_SELECTOR_DIAGONAL_FRACTIONS = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_PREVENT_OVERLAP_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_PREVENT_OVERLAP_OFF = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_HYPHENS_TO_EM_DASH_ON   = 0,
+  HB_AAT_LAYOUT_SELECTOR_HYPHENS_TO_EM_DASH_OFF  = 1,
+  HB_AAT_LAYOUT_SELECTOR_HYPHEN_TO_EN_DASH_ON    = 2,
+  HB_AAT_LAYOUT_SELECTOR_HYPHEN_TO_EN_DASH_OFF   = 3,
+  HB_AAT_LAYOUT_SELECTOR_SLASHED_ZERO_ON         = 4,
+  HB_AAT_LAYOUT_SELECTOR_SLASHED_ZERO_OFF        = 5,
+  HB_AAT_LAYOUT_SELECTOR_FORM_INTERROBANG_ON     = 6,
+  HB_AAT_LAYOUT_SELECTOR_FORM_INTERROBANG_OFF    = 7,
+  HB_AAT_LAYOUT_SELECTOR_SMART_QUOTES_ON         = 8,
+  HB_AAT_LAYOUT_SELECTOR_SMART_QUOTES_OFF        = 9,
+  HB_AAT_LAYOUT_SELECTOR_PERIODS_TO_ELLIPSIS_ON  = 10,
+  HB_AAT_LAYOUT_SELECTOR_PERIODS_TO_ELLIPSIS_OFF = 11
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_HYPHEN_TO_MINUS_ON       = 0,
+  HB_AAT_LAYOUT_SELECTOR_HYPHEN_TO_MINUS_OFF      = 1,
+  HB_AAT_LAYOUT_SELECTOR_ASTERISK_TO_MULTIPLY_ON  = 2,
+  HB_AAT_LAYOUT_SELECTOR_ASTERISK_TO_MULTIPLY_OFF = 3,
+  HB_AAT_LAYOUT_SELECTOR_SLASH_TO_DIVIDE_ON       = 4,
+  HB_AAT_LAYOUT_SELECTOR_SLASH_TO_DIVIDE_OFF      = 5,
+  HB_AAT_LAYOUT_SELECTOR_INEQUALITY_LIGATURES_ON  = 6,
+  HB_AAT_LAYOUT_SELECTOR_INEQUALITY_LIGATURES_OFF = 7,
+  HB_AAT_LAYOUT_SELECTOR_EXPONENTS_ON             = 8,
+  HB_AAT_LAYOUT_SELECTOR_EXPONENTS_OFF            = 9,
+  HB_AAT_LAYOUT_SELECTOR_MATHEMATICAL_GREEK_ON    = 10,
+  HB_AAT_LAYOUT_SELECTOR_MATHEMATICAL_GREEK_OFF   = 11
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_ORNAMENTS          = 0,
+  HB_AAT_LAYOUT_SELECTOR_DINGBATS              = 1,
+  HB_AAT_LAYOUT_SELECTOR_PI_CHARACTERS         = 2,
+  HB_AAT_LAYOUT_SELECTOR_FLEURONS              = 3,
+  HB_AAT_LAYOUT_SELECTOR_DECORATIVE_BORDERS    = 4,
+  HB_AAT_LAYOUT_SELECTOR_INTERNATIONAL_SYMBOLS = 5,
+  HB_AAT_LAYOUT_SELECTOR_MATH_SYMBOLS          = 6
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_ALTERNATES = 0
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_DESIGN_LEVEL1 = 0,
+  HB_AAT_LAYOUT_SELECTOR_DESIGN_LEVEL2 = 1,
+  HB_AAT_LAYOUT_SELECTOR_DESIGN_LEVEL3 = 2,
+  HB_AAT_LAYOUT_SELECTOR_DESIGN_LEVEL4 = 3,
+  HB_AAT_LAYOUT_SELECTOR_DESIGN_LEVEL5 = 4
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_STYLE_OPTIONS = 0,
+  HB_AAT_LAYOUT_SELECTOR_DISPLAY_TEXT     = 1,
+  HB_AAT_LAYOUT_SELECTOR_ENGRAVED_TEXT    = 2,
+  HB_AAT_LAYOUT_SELECTOR_ILLUMINATED_CAPS = 3,
+  HB_AAT_LAYOUT_SELECTOR_TITLING_CAPS     = 4,
+  HB_AAT_LAYOUT_SELECTOR_TALL_CAPS        = 5
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_CHARACTERS       = 0,
+  HB_AAT_LAYOUT_SELECTOR_SIMPLIFIED_CHARACTERS        = 1,
+  HB_AAT_LAYOUT_SELECTOR_JIS1978_CHARACTERS           = 2,
+  HB_AAT_LAYOUT_SELECTOR_JIS1983_CHARACTERS           = 3,
+  HB_AAT_LAYOUT_SELECTOR_JIS1990_CHARACTERS           = 4,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_ALT_ONE          = 5,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_ALT_TWO          = 6,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_ALT_THREE        = 7,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_ALT_FOUR         = 8,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_ALT_FIVE         = 9,
+  HB_AAT_LAYOUT_SELECTOR_EXPERT_CHARACTERS            = 10,
+  HB_AAT_LAYOUT_SELECTOR_JIS2004_CHARACTERS           = 11,
+  HB_AAT_LAYOUT_SELECTOR_HOJO_CHARACTERS              = 12,
+  HB_AAT_LAYOUT_SELECTOR_NLCCHARACTERS                = 13,
+  HB_AAT_LAYOUT_SELECTOR_TRADITIONAL_NAMES_CHARACTERS = 14
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_NUMBERS = 0,
+  HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_NUMBERS = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_TEXT     = 0,
+  HB_AAT_LAYOUT_SELECTOR_MONOSPACED_TEXT       = 1,
+  HB_AAT_LAYOUT_SELECTOR_HALF_WIDTH_TEXT       = 2,
+  HB_AAT_LAYOUT_SELECTOR_THIRD_WIDTH_TEXT      = 3,
+  HB_AAT_LAYOUT_SELECTOR_QUARTER_WIDTH_TEXT    = 4,
+  HB_AAT_LAYOUT_SELECTOR_ALT_PROPORTIONAL_TEXT = 5,
+  HB_AAT_LAYOUT_SELECTOR_ALT_HALF_WIDTH_TEXT   = 6
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_TRANSLITERATION        = 0,
+  HB_AAT_LAYOUT_SELECTOR_HANJA_TO_HANGUL           = 1,
+  HB_AAT_LAYOUT_SELECTOR_HIRAGANA_TO_KATAKANA      = 2,
+  HB_AAT_LAYOUT_SELECTOR_KATAKANA_TO_HIRAGANA      = 3,
+  HB_AAT_LAYOUT_SELECTOR_KANA_TO_ROMANIZATION      = 4,
+  HB_AAT_LAYOUT_SELECTOR_ROMANIZATION_TO_HIRAGANA  = 5,
+  HB_AAT_LAYOUT_SELECTOR_ROMANIZATION_TO_KATAKANA  = 6,
+  HB_AAT_LAYOUT_SELECTOR_HANJA_TO_HANGUL_ALT_ONE   = 7,
+  HB_AAT_LAYOUT_SELECTOR_HANJA_TO_HANGUL_ALT_TWO   = 8,
+  HB_AAT_LAYOUT_SELECTOR_HANJA_TO_HANGUL_ALT_THREE = 9
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_ANNOTATION                   = 0,
+  HB_AAT_LAYOUT_SELECTOR_BOX_ANNOTATION                  = 1,
+  HB_AAT_LAYOUT_SELECTOR_ROUNDED_BOX_ANNOTATION          = 2,
+  HB_AAT_LAYOUT_SELECTOR_CIRCLE_ANNOTATION               = 3,
+  HB_AAT_LAYOUT_SELECTOR_INVERTED_CIRCLE_ANNOTATION      = 4,
+  HB_AAT_LAYOUT_SELECTOR_PARENTHESIS_ANNOTATION          = 5,
+  HB_AAT_LAYOUT_SELECTOR_PERIOD_ANNOTATION               = 6,
+  HB_AAT_LAYOUT_SELECTOR_ROMAN_NUMERAL_ANNOTATION        = 7,
+  HB_AAT_LAYOUT_SELECTOR_DIAMOND_ANNOTATION              = 8,
+  HB_AAT_LAYOUT_SELECTOR_INVERTED_BOX_ANNOTATION         = 9,
+  HB_AAT_LAYOUT_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION = 10
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_FULL_WIDTH_KANA   = 0,
+  HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_KANA = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_FULL_WIDTH_IDEOGRAPHS   = 0,
+  HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_IDEOGRAPHS = 1,
+  HB_AAT_LAYOUT_SELECTOR_HALF_WIDTH_IDEOGRAPHS   = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_CANONICAL_COMPOSITION_ON      = 0,
+  HB_AAT_LAYOUT_SELECTOR_CANONICAL_COMPOSITION_OFF     = 1,
+  HB_AAT_LAYOUT_SELECTOR_COMPATIBILITY_COMPOSITION_ON  = 2,
+  HB_AAT_LAYOUT_SELECTOR_COMPATIBILITY_COMPOSITION_OFF = 3,
+  HB_AAT_LAYOUT_SELECTOR_TRANSCODING_COMPOSITION_ON    = 4,
+  HB_AAT_LAYOUT_SELECTOR_TRANSCODING_COMPOSITION_OFF   = 5
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_RUBY_KANA  = 0, /* deprecated - use HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_OFF instead */
+  HB_AAT_LAYOUT_SELECTOR_RUBY_KANA     = 1, /* deprecated - use HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_ON instead */
+  HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_ON  = 2,
+  HB_AAT_LAYOUT_SELECTOR_RUBY_KANA_OFF = 3
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES = 0,
+  HB_AAT_LAYOUT_SELECTOR_CJK_SYMBOL_ALT_ONE         = 1,
+  HB_AAT_LAYOUT_SELECTOR_CJK_SYMBOL_ALT_TWO         = 2,
+  HB_AAT_LAYOUT_SELECTOR_CJK_SYMBOL_ALT_THREE       = 3,
+  HB_AAT_LAYOUT_SELECTOR_CJK_SYMBOL_ALT_FOUR        = 4,
+  HB_AAT_LAYOUT_SELECTOR_CJK_SYMBOL_ALT_FIVE        = 5
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES = 0,
+  HB_AAT_LAYOUT_SELECTOR_IDEOGRAPHIC_ALT_ONE         = 1,
+  HB_AAT_LAYOUT_SELECTOR_IDEOGRAPHIC_ALT_TWO         = 2,
+  HB_AAT_LAYOUT_SELECTOR_IDEOGRAPHIC_ALT_THREE       = 3,
+  HB_AAT_LAYOUT_SELECTOR_IDEOGRAPHIC_ALT_FOUR        = 4,
+  HB_AAT_LAYOUT_SELECTOR_IDEOGRAPHIC_ALT_FIVE        = 5
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED  = 0,
+  HB_AAT_LAYOUT_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE = 1
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_CJK_ITALIC_ROMAN  = 0,    /* deprecated - use HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_OFF instead */
+  HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN     = 1,    /* deprecated - use HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_ON instead */
+  HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_ON  = 2,
+  HB_AAT_LAYOUT_SELECTOR_CJK_ITALIC_ROMAN_OFF = 3
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_LAYOUT_ON   = 0,
+  HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF  = 1,
+  HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_SPACING_ON  = 2,
+  HB_AAT_LAYOUT_SELECTOR_CASE_SENSITIVE_SPACING_OFF = 3
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_ALTERNATE_HORIZ_KANA_ON  = 0,
+  HB_AAT_LAYOUT_SELECTOR_ALTERNATE_HORIZ_KANA_OFF = 1,
+  HB_AAT_LAYOUT_SELECTOR_ALTERNATE_VERT_KANA_ON   = 2,
+  HB_AAT_LAYOUT_SELECTOR_ALTERNATE_VERT_KANA_OFF  = 3
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_NO_STYLISTIC_ALTERNATES     = 0,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ONE_ON        = 2,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ONE_OFF       = 3,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWO_ON        = 4,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWO_OFF       = 5,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THREE_ON      = 6,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THREE_OFF     = 7,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOUR_ON       = 8,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOUR_OFF      = 9,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIVE_ON       = 10,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIVE_OFF      = 11,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIX_ON        = 12,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIX_OFF       = 13,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVEN_ON      = 14,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVEN_OFF     = 15,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHT_ON      = 16,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHT_OFF     = 17,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINE_ON       = 18,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINE_OFF      = 19,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TEN_ON        = 20,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TEN_OFF       = 21,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ELEVEN_ON     = 22,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF    = 23,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWELVE_ON     = 24,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWELVE_OFF    = 25,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON   = 26,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF  = 27,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON   = 28,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF  = 29,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON    = 30,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF   = 31,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON    = 32,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF   = 33,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON  = 34,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF = 35,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON   = 36,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF  = 37,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINETEEN_ON   = 38,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF  = 39,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWENTY_ON     = 40,
+  HB_AAT_LAYOUT_SELECTOR_STYLISTIC_ALT_TWENTY_OFF    = 41
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_ALTERNATES_ON        = 0,
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_ALTERNATES_OFF       = 1,
+  HB_AAT_LAYOUT_SELECTOR_SWASH_ALTERNATES_ON             = 2,
+  HB_AAT_LAYOUT_SELECTOR_SWASH_ALTERNATES_OFF            = 3,
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON  = 4,
+  HB_AAT_LAYOUT_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF = 5
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_DEFAULT_LOWER_CASE      = 0,
+  HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_SMALL_CAPS   = 1,
+  HB_AAT_LAYOUT_SELECTOR_LOWER_CASE_PETITE_CAPS  = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_DEFAULT_UPPER_CASE      = 0,
+  HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_SMALL_CAPS   = 1,
+  HB_AAT_LAYOUT_SELECTOR_UPPER_CASE_PETITE_CAPS  = 2
+};
+
+
+/*
+ * Selectors for HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE
+ *
+ * Since: REPLACEME
+ */
+enum
+{
+  HB_AAT_LAYOUT_SELECTOR_HALF_WIDTH_CJK_ROMAN    = 0,
+  HB_AAT_LAYOUT_SELECTOR_PROPORTIONAL_CJK_ROMAN  = 1,
+  HB_AAT_LAYOUT_SELECTOR_DEFAULT_CJK_ROMAN       = 2,
+  HB_AAT_LAYOUT_SELECTOR_FULL_WIDTH_CJK_ROMAN    = 3
+};
+
+
 /**
  * hb_aat_layout_feature_record_t:
  *