gtk-demo: Avoid invalid OpenType feature tags

ss00 doesn't exist, and we use xxxx as placeholder
for 'default' choices in alternatives. Add a warning
in case we run across invalid OpenType feature tags
in fonts.

Fixes: #2962
This commit is contained in:
Matthias Clasen 2020-08-02 21:11:30 -04:00
parent 0d98bab82b
commit af07cfea5f

View File

@ -130,6 +130,10 @@ static const char *
get_feature_display_name (unsigned int tag) get_feature_display_name (unsigned int tag)
{ {
int i; int i;
static char buf[5] = { 0, };
if (tag == MAKE_TAG ('x', 'x', 'x', 'x'))
return _("Default");
for (i = 0; i < G_N_ELEMENTS (open_type_layout_features); i++) for (i = 0; i < G_N_ELEMENTS (open_type_layout_features); i++)
{ {
@ -137,7 +141,10 @@ get_feature_display_name (unsigned int tag)
return g_dpgettext2 (NULL, "OpenType layout", open_type_layout_features[i].name); return g_dpgettext2 (NULL, "OpenType layout", open_type_layout_features[i].name);
} }
return NULL; hb_tag_to_string (tag, buf);
g_warning ("unknown OpenType layout feature tag: %s", buf);
return buf;
} }
static void update_display (void); static void update_display (void);
@ -1285,8 +1292,7 @@ do_font_features (GtkWidget *do_widget)
"palt", "palt",
"twid", "twid",
"qwid", NULL }); "qwid", NULL });
add_check_group (feature_list, _("Alternative Stylistic Sets"), (const char *[]){ "ss00", add_check_group (feature_list, _("Alternative Stylistic Sets"), (const char *[]){ "ss01",
"ss01",
"ss02", "ss02",
"ss03", "ss03",
"ss04", "ss04",