[subset] In preperation for 3.0.0 release remove legacy subsetting api methods.
diff --git a/src/hb-subset-input.cc b/src/hb-subset-input.cc
index 498f92d..4885280 100644
--- a/src/hb-subset-input.cc
+++ b/src/hb-subset-input.cc
@@ -270,75 +270,6 @@
 }
 
 /**
- * hb_subset_input_nameid_set:
- * @input: a #hb_subset_input_t object.
- *
- * Gets the set of name table name IDs to retain, the caller should modify the
- * set as needed.
- *
- * Return value: (transfer none): pointer to the #hb_set_t of name IDs.
- *
- * Since: 2.9.0
- **/
-HB_EXTERN hb_set_t *
-hb_subset_input_nameid_set (hb_subset_input_t *input)
-{
-  return input->sets.name_ids;
-}
-
-/**
- * hb_subset_input_namelangid_set:
- * @input: a #hb_subset_input_t object.
- *
- * Gets the set of name table language IDs to retain, the caller should modify
- * the set as needed.
- *
- * Return value: (transfer none): pointer to the #hb_set_t of language IDs.
- *
- * Since: 2.9.0
- **/
-HB_EXTERN hb_set_t *
-hb_subset_input_namelangid_set (hb_subset_input_t *input)
-{
-  return input->sets.name_languages;
-}
-
-
-/**
- * hb_subset_input_layout_features_set:
- * @input: a #hb_subset_input_t object.
- *
- * Gets the set of layout feature tags to retain, the caller should modify the
- * set as needed.
- *
- * Return value: (transfer none): pointer to the #hb_set_t of feature tags.
- *
- * Since: 2.9.0
- **/
-HB_EXTERN hb_set_t *
-hb_subset_input_layout_features_set (hb_subset_input_t *input)
-{
-  return input->sets.layout_features;
-}
-
-/**
- * hb_subset_input_drop_tables_set:
- * @input: a #hb_subset_input_t object.
- *
- * Gets the set of table tags to drop, the caller should modify the set as
- * needed.
- *
- * Return value: (transfer none): pointer to the #hb_set_t of table tags.
- *
- * Since: 2.9.0
- **/
-HB_EXTERN hb_set_t *
-hb_subset_input_drop_tables_set (hb_subset_input_t *input)
-{
-  return input->sets.drop_tables;
-}
-
-/**
  * hb_subset_input_set:
  * @input: a #hb_subset_input_t object.
  * @set_type: a #hb_subset_sets_t set type.
@@ -356,24 +287,6 @@
 }
 
 /**
- * hb_subset_input_no_subset_tables_set:
- * @input: a #hb_subset_input_t object.
- *
- * Gets the set of table tags which specifies tables that should not be
- * subsetted, the caller should modify the set as needed.
- *
- * Return value: (transfer none): pointer to the #hb_set_t of table tags.
- *
- * Since: 2.9.0
- **/
-HB_EXTERN hb_set_t *
-hb_subset_input_no_subset_tables_set (hb_subset_input_t *input)
-{
-  return input->sets.no_subset_tables;
-}
-
-
-/**
  * hb_subset_input_get_flags:
  * @input: a #hb_subset_input_t object.
  *
@@ -448,118 +361,3 @@
 {
   return hb_object_get_user_data (input, key);
 }
-
-
-static void set_flag_value (hb_subset_input_t *input, hb_subset_flags_t flag, hb_bool_t value)
-{
-  hb_subset_input_set_flags (input,
-                             value
-                             ? hb_subset_input_get_flags (input) | flag
-                             : hb_subset_input_get_flags (input) & ~flag);
-}
-
-void
-hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
-				hb_bool_t drop_hints)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_NO_HINTING,
-                         drop_hints);
-}
-
-hb_bool_t
-hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NO_HINTING);
-}
-
-void
-hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input,
-				    hb_bool_t desubroutinize)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_DESUBROUTINIZE,
-                         desubroutinize);
-}
-
-hb_bool_t
-hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_DESUBROUTINIZE);
-}
-
-void
-hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input,
-				 hb_bool_t retain_gids)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_RETAIN_GIDS,
-                         retain_gids);
-}
-
-hb_bool_t
-hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_RETAIN_GIDS);
-}
-
-void
-hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input,
-				 hb_bool_t name_legacy)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_NAME_LEGACY,
-                         name_legacy);
-}
-
-hb_bool_t
-hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NAME_LEGACY);
-}
-
-void
-hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input,
-                                   hb_bool_t overlaps_flag)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG,
-                         overlaps_flag);
-}
-
-hb_bool_t
-hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG);
-}
-
-void
-hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
-                                    hb_bool_t notdef_outline)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_NOTDEF_OUTLINE,
-                         notdef_outline);
-}
-
-hb_bool_t
-hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NOTDEF_OUTLINE);
-}
-
-void
-hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input,
-                                             hb_bool_t no_prune_unicode_ranges)
-{
-  return set_flag_value (subset_input,
-                         HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES,
-                         no_prune_unicode_ranges);
-}
-
-
-hb_bool_t
-hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input)
-{
-  return (bool) (hb_subset_input_get_flags (subset_input) & HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES);
-}
diff --git a/src/hb-subset.cc b/src/hb-subset.cc
index 9c4d644..34f92e0 100644
--- a/src/hb-subset.cc
+++ b/src/hb-subset.cc
@@ -330,14 +330,6 @@
   }
 }
 
-hb_face_t *
-hb_subset (hb_face_t *source, hb_subset_input_t *input)
-{
-  hb_face_t* face = hb_subset_or_fail (source, input);
-  if (face) return face;
-  return hb_face_get_empty ();
-}
-
 /**
  * hb_subset_or_fail:
  * @source: font face data to be subset.
diff --git a/src/hb-subset.h b/src/hb-subset.h
index cd1e75c..1c65a4d 100644
--- a/src/hb-subset.h
+++ b/src/hb-subset.h
@@ -127,6 +127,12 @@
 			       hb_user_data_key_t	   *key);
 
 HB_EXTERN hb_set_t *
+hb_subset_input_unicode_set (hb_subset_input_t *input);
+
+HB_EXTERN hb_set_t *
+hb_subset_input_glyph_set (hb_subset_input_t *input);
+
+HB_EXTERN hb_set_t *
 hb_subset_input_set (hb_subset_input_t *input, hb_subset_sets_t set_type);
 
 HB_EXTERN hb_subset_flags_t
@@ -139,82 +145,6 @@
 HB_EXTERN hb_face_t *
 hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input);
 
-
-/*
- * ### Legacy API ###
- * The methods below are part of the legacy harfbuzz subsetting API and will be
- * Removed as of version 3.0.0
- */
-
-HB_EXTERN void
-hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
-				hb_bool_t drop_hints);
-HB_EXTERN hb_bool_t
-hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_desubroutinize (hb_subset_input_t *subset_input,
-				    hb_bool_t desubroutinize);
-HB_EXTERN hb_bool_t
-hb_subset_input_get_desubroutinize (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_retain_gids (hb_subset_input_t *subset_input,
-				 hb_bool_t retain_gids);
-HB_EXTERN hb_bool_t
-hb_subset_input_get_retain_gids (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_name_legacy (hb_subset_input_t *subset_input,
-				 hb_bool_t name_legacy);
-HB_EXTERN hb_bool_t
-hb_subset_input_get_name_legacy (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_overlaps_flag (hb_subset_input_t *subset_input,
-                                   hb_bool_t overlaps_flag);
-
-HB_EXTERN hb_bool_t
-hb_subset_input_get_overlaps_flag (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_notdef_outline (hb_subset_input_t *subset_input,
-                                    hb_bool_t notdef_outline);
-
-HB_EXTERN hb_bool_t
-hb_subset_input_get_notdef_outline (hb_subset_input_t *subset_input);
-
-HB_EXTERN void
-hb_subset_input_set_no_prune_unicode_ranges (hb_subset_input_t *subset_input,
-                                             hb_bool_t no_prune_unicode_ranges);
-
-HB_EXTERN hb_bool_t
-hb_subset_input_get_no_prune_unicode_ranges (hb_subset_input_t *subset_input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_unicode_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_glyph_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_nameid_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_namelangid_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_layout_features_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_no_subset_tables_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_set_t *
-hb_subset_input_drop_tables_set (hb_subset_input_t *input);
-
-HB_EXTERN hb_face_t *
-hb_subset (hb_face_t *source, hb_subset_input_t *input);
-
 HB_END_DECLS
 
 #endif /* HB_SUBSET_H */
diff --git a/test/api/hb-subset-test.h b/test/api/hb-subset-test.h
index a8db116..61a9260 100644
--- a/test/api/hb-subset-test.h
+++ b/test/api/hb-subset-test.h
@@ -69,10 +69,10 @@
 hb_subset_test_create_input_from_nameids (const hb_set_t *name_ids)
 {
   hb_subset_input_t *input = hb_subset_input_create_or_fail ();
-  hb_set_t * input_name_ids  = hb_subset_input_nameid_set (input);
+  hb_set_t * input_name_ids  = hb_subset_input_set (input, HB_SUBSET_SETS_NAME_ID);
   hb_set_set (input_name_ids, name_ids);
 
-  hb_set_t *name_langids = hb_subset_input_namelangid_set (input);
+  hb_set_t *name_langids = hb_subset_input_set (input, HB_SUBSET_SETS_NAME_LANG_ID);
   hb_set_add_range (name_langids, 0, 0x5FFF);
 
   hb_subset_input_set_flags (input,
diff --git a/test/api/test-subset-drop-tables.c b/test/api/test-subset-drop-tables.c
index b2c453a..327b17b 100644
--- a/test/api/test-subset-drop-tables.c
+++ b/test/api/test-subset-drop-tables.c
@@ -38,8 +38,8 @@
   hb_set_add (codepoints, 97);
   hb_set_add (codepoints, 99);
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
-  hb_set_add (hb_subset_input_drop_tables_set (input), HB_TAG ('h', 'd', 'm', 'x'));
-  hb_set_add (hb_subset_input_drop_tables_set (input), HB_TAG ('h', 'm', 't', 'x'));
+  hb_set_add (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG ('h', 'd', 'm', 'x'));
+  hb_set_add (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG ('h', 'm', 't', 'x'));
   hb_set_destroy (codepoints);
 
   hb_face_t* subset = hb_subset_or_fail (face, input);
diff --git a/test/api/test-subset-glyf.c b/test/api/test-subset-glyf.c
index 1e283dc..94670be 100644
--- a/test/api/test-subset-glyf.c
+++ b/test/api/test-subset-glyf.c
@@ -162,9 +162,9 @@
 
   input = hb_subset_test_create_input (codepoints);
   hb_set_destroy (codepoints);
-  hb_set_del (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'S', 'U', 'B'));
-  hb_set_del (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'P', 'O', 'S'));
-  hb_set_del (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'D', 'E', 'F'));
+  hb_set_del (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'S', 'U', 'B'));
+  hb_set_del (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'P', 'O', 'S'));
+  hb_set_del (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'D', 'E', 'F'));
 
   face_subset = hb_subset_test_create_subset (face_fil, input);
 
@@ -191,9 +191,9 @@
 
   input = hb_subset_test_create_input (codepoints);
   hb_set_destroy (codepoints);
-  hb_set_add (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'S', 'U', 'B'));
-  hb_set_add (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'P', 'O', 'S'));
-  hb_set_add (hb_subset_input_drop_tables_set (input), HB_TAG('G', 'D', 'E', 'F'));
+  hb_set_add (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'S', 'U', 'B'));
+  hb_set_add (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'P', 'O', 'S'));
+  hb_set_add (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG), HB_TAG('G', 'D', 'E', 'F'));
 
   face_subset = hb_subset_test_create_subset (face_fil, input);
 
diff --git a/test/api/test-subset-gpos.c b/test/api/test-subset-gpos.c
index e1b3d00..ff7defb 100644
--- a/test/api/test-subset-gpos.c
+++ b/test/api/test-subset-gpos.c
@@ -42,7 +42,8 @@
 
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
 
-  hb_set_del (hb_subset_input_drop_tables_set (input), HB_TAG ('G', 'P', 'O', 'S'));
+  hb_set_del (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG),
+              HB_TAG ('G', 'P', 'O', 'S'));
 
   face_pwa_subset = hb_subset_test_create_subset (face_pwa, input);
   hb_set_destroy (codepoints);
@@ -67,7 +68,8 @@
 
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
 
-  hb_set_del (hb_subset_input_drop_tables_set (input), HB_TAG ('G', 'P', 'O', 'S'));
+  hb_set_del (hb_subset_input_set (input, HB_SUBSET_SETS_DROP_TABLE_TAG),
+              HB_TAG ('G', 'P', 'O', 'S'));
 
   face_wav_subset = hb_subset_test_create_subset (face_wav, input);
   hb_set_destroy (codepoints);
diff --git a/test/api/test-subset.c b/test/api/test-subset.c
index 41017bc..27bf73c 100644
--- a/test/api/test-subset.c
+++ b/test/api/test-subset.c
@@ -148,63 +148,13 @@
   hb_set_clear (set);
 
   hb_set_add (set, 87);
-  g_assert (hb_set_is_equal (hb_subset_input_layout_features_set (input), set));
+  g_assert (hb_set_is_equal (hb_subset_input_set (input, HB_SUBSET_SETS_LAYOUT_FEATURE_TAG), set));
   hb_set_clear (set);
 
   hb_set_destroy (set);
   hb_subset_input_destroy (input);
 }
 
-
-static void
-test_subset_legacy_api (void)
-{
-  hb_subset_input_t *input = hb_subset_input_create_or_fail ();
-
-  g_assert (hb_subset_input_get_flags (input) == HB_SUBSET_FLAGS_DEFAULT);
-
-  hb_subset_input_set_flags (input,
-                             HB_SUBSET_FLAGS_NAME_LEGACY |
-                             HB_SUBSET_FLAGS_NOTDEF_OUTLINE);
-
-  g_assert (hb_subset_input_get_name_legacy (input));
-  g_assert (hb_subset_input_get_notdef_outline (input));
-  g_assert (!hb_subset_input_get_desubroutinize (input));
-  g_assert (!hb_subset_input_get_drop_hints (input));
-
-  hb_subset_input_set_drop_hints (input, true);
-  hb_subset_input_set_name_legacy (input, false);
-  g_assert (!hb_subset_input_get_name_legacy (input));
-  g_assert (hb_subset_input_get_notdef_outline (input));
-  g_assert (!hb_subset_input_get_desubroutinize (input));
-  g_assert (hb_subset_input_get_drop_hints (input));
-
-
-  hb_face_t *face_abc = hb_test_open_font_file ("fonts/Roboto-Regular.abc.ttf");
-
-  hb_set_t *codepoints = hb_set_create();
-  hb_set_add (codepoints, 97);
-  hb_set_add (codepoints, 99);
-  hb_set_union (hb_subset_input_unicode_set (input), codepoints);
-  hb_set_destroy (codepoints);
-
-  hb_face_t *face_abc_subset_new = hb_subset (face_abc, input);
-  hb_face_t *face_abc_subset_legacy = hb_subset_or_fail (face_abc, input);
-
-
-  hb_blob_t* a = hb_face_reference_blob (face_abc_subset_new);
-  hb_blob_t* b = hb_face_reference_blob (face_abc_subset_new);
-  hb_test_assert_blobs_equal (a, b);
-
-  hb_blob_destroy (a);
-  hb_blob_destroy (b);
-  hb_face_destroy (face_abc_subset_new);
-  hb_face_destroy (face_abc_subset_legacy);
-  hb_face_destroy (face_abc);
-
-  hb_subset_input_destroy (input);
-}
-
 int
 main (int argc, char **argv)
 {
@@ -215,7 +165,6 @@
   hb_test_add (test_subset_crash);
   hb_test_add (test_subset_set_flags);
   hb_test_add (test_subset_sets);
-  hb_test_add (test_subset_legacy_api);
 
   return hb_test_run();
 }
diff --git a/util/hb-subset.cc b/util/hb-subset.cc
index 1bf1ff5..ec76330 100644
--- a/util/hb-subset.cc
+++ b/util/hb-subset.cc
@@ -418,7 +418,7 @@
   subset_main_t *subset_main = (subset_main_t *) data;
   hb_bool_t is_remove = (name[strlen (name) - 1] == '-');
   hb_bool_t is_add = (name[strlen (name) - 1] == '+');
-  hb_set_t *name_ids = hb_subset_input_nameid_set (subset_main->input);
+  hb_set_t *name_ids = hb_subset_input_set (subset_main->input, HB_SUBSET_SETS_NAME_ID);
 
 
   if (!is_remove && !is_add) hb_set_clear (name_ids);
@@ -472,7 +472,7 @@
   subset_main_t *subset_main = (subset_main_t *) data;
   hb_bool_t is_remove = (name[strlen (name) - 1] == '-');
   hb_bool_t is_add = (name[strlen (name) - 1] == '+');
-  hb_set_t *name_languages = hb_subset_input_namelangid_set (subset_main->input);
+  hb_set_t *name_languages = hb_subset_input_set (subset_main->input, HB_SUBSET_SETS_NAME_LANG_ID);
 
   if (!is_remove && !is_add) hb_set_clear (name_languages);
 
@@ -540,7 +540,7 @@
   subset_main_t *subset_main = (subset_main_t *) data;
   hb_bool_t is_remove = (name[strlen (name) - 1] == '-');
   hb_bool_t is_add = (name[strlen (name) - 1] == '+');
-  hb_set_t *layout_features = hb_subset_input_layout_features_set (subset_main->input);
+  hb_set_t *layout_features = hb_subset_input_set (subset_main->input, HB_SUBSET_SETS_LAYOUT_FEATURE_TAG);
 
   if (!is_remove && !is_add) hb_set_clear (layout_features);
 
@@ -584,7 +584,7 @@
   subset_main_t *subset_main = (subset_main_t *) data;
   hb_bool_t is_remove = (name[strlen (name) - 1] == '-');
   hb_bool_t is_add = (name[strlen (name) - 1] == '+');
-  hb_set_t *drop_tables = hb_subset_input_drop_tables_set (subset_main->input);
+  hb_set_t *drop_tables = hb_subset_input_set (subset_main->input, HB_SUBSET_SETS_DROP_TABLE_TAG);
 
   if (!is_remove && !is_add) hb_set_clear (drop_tables);