{"gids-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_gids,"Specify glyph IDs or ranges to remove from the subset","list of glyph indices/ranges or *"},
{"gids+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_gids,"Specify glyph IDs or ranges to include in the subset","list of glyph indices/ranges or *"},
{"glyphs",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_glyphs,"Specify glyph names to include in the subset. Use --glyphs-=... to subtract glyphs from the current set.","list of glyph names or *"},
{"glyphs+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_glyphs,"Specify glyph names to include in the subset","list of glyph names"},
{"glyphs-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_glyphs,"Specify glyph names to remove from the subset","list of glyph names"},
{"text",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_text,"Specify text to include in the subset. Use --text-=... to subtract codepoints from the current set.","string"},
{"text-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_text,"Specify text to remove from the subset","string"},
{"text+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_text,"Specify text to include in the subset","string"},
{"unicodes-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_unicodes,"Specify Unicode codepoints or ranges to remove from the subset","list of hex numbers/ranges or *"},
{"unicodes+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_unicodes,"Specify Unicode codepoints or ranges to include in the subset","list of hex numbers/ranges or *"},
{"unicodes-file",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_file_for<parse_unicodes>,"Specify file to read Unicode codepoints or ranges from","filename"},
{"name-IDs",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_nameids,"Subset specified nameids. Use --name-IDs-=... to substract from the current set.","list of int numbers or *"},
{"name-IDs-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_nameids,"Subset specified nameids","list of int numbers or *"},
{"name-IDs+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_nameids,"Subset specified nameids","list of int numbers or *"},
{"name-languages",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_name_languages,"Subset nameRecords with specified language IDs. Use --name-languages-=... to substract from the current set.","list of int numbers or *"},
{"name-languages-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_name_languages,"Subset nameRecords with specified language IDs","list of int numbers or *"},
{"name-languages+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_name_languages,"Subset nameRecords with specified language IDs","list of int numbers or *"},
{"layout-features",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_features,"Specify set of layout feature tags that will be preserved. Use --layout-features-=... to substract from the current set.","list of string table tags or *"},
{"layout-features+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_features,"Specify set of layout feature tags that will be preserved","list of string tags or *"},
{"layout-features-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_features,"Specify set of layout feature tags that will be preserved","list of string tags or *"},
{"layout-scripts",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_scripts,"Specify set of layout script tags that will be preserved. Use --layout-scripts-=... to substract from the current set.","list of string table tags or *"},
{"layout-scripts+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_scripts,"Specify set of layout script tags that will be preserved","list of string tags or *"},
{"layout-scripts-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_layout_scripts,"Specify set of layout script tags that will be preserved","list of string tags or *"},
{"drop-tables",0,0,G_OPTION_ARG_CALLBACK,(gpointer)&parse_drop_tables,"Drop the specified tables. Use --drop-tables-=... to substract from the current set.","list of string table tags or *"},
{"drop-tables+",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_drop_tables,"Drop the specified tables.","list of string table tags or *"},
{"drop-tables-",0,G_OPTION_FLAG_HIDDEN,G_OPTION_ARG_CALLBACK,(gpointer)&parse_drop_tables,"Drop the specified tables.","list of string table tags or *"},
{"no-hinting",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_NO_HINTING>,"Whether to drop hints",nullptr},
{"retain-gids",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_RETAIN_GIDS>,"If set don't renumber glyph ids in the subset.",nullptr},
{"desubroutinize",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_DESUBROUTINIZE>,"Remove CFF/CFF2 use of subroutines",nullptr},
{"set-overlaps-flag",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG>,"Set the overlaps flag on each glyph.",nullptr},
{"notdef-outline",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_NOTDEF_OUTLINE>,"Keep the outline of \'.notdef\' glyph",nullptr},
{"no-prune-unicode-ranges",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES>,"Don't change the 'OS/2 ulUnicodeRange*' bits.",nullptr},
{"glyph-names",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_GLYPH_NAMES>,"Keep PS glyph names in TT-flavored fonts. ",nullptr},
{"passthrough-tables",0,G_OPTION_FLAG_NO_ARG,G_OPTION_ARG_CALLBACK,(gpointer)&set_flag<HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED>,"Do not drop tables that the tool does not know how to subset.",nullptr},