[hb-info] Add --ot-script and --ot-language
This commit is contained in:
parent
edec8946ed
commit
ba4f5e9f22
|
@ -39,8 +39,10 @@ struct info_t
|
||||||
GOptionEntry misc_entries[] =
|
GOptionEntry misc_entries[] =
|
||||||
{
|
{
|
||||||
{"direction", 0, 0, G_OPTION_ARG_STRING, &this->direction_str, "Set direction (default: ltr)", "ltr/rtl/ttb/btt"},
|
{"direction", 0, 0, G_OPTION_ARG_STRING, &this->direction_str, "Set direction (default: ltr)", "ltr/rtl/ttb/btt"},
|
||||||
{"language", 0, 0, G_OPTION_ARG_STRING, &this->language_str, "Set language (default: $LANG)", "BCP 47 tag"},
|
{"script", 0, 0, G_OPTION_ARG_STRING, &this->script_str, "Set script (default: none)", "ISO-15924 tag, eg. 'Latn'"},
|
||||||
{"script", 0, 0, G_OPTION_ARG_STRING, &this->script_str, "Set script (default: none)", "ISO-15924 tag"},
|
{"language", 0, 0, G_OPTION_ARG_STRING, &this->language_str, "Set language (default: $LANG)", "BCP 47 tag, eg. 'en'"},
|
||||||
|
{"ot-script", 0, 0, G_OPTION_ARG_STRING, &this->ot_script_str, "Set OpenType script tag (default: none)","tag, eg. 'latn'"},
|
||||||
|
{"ot-language", 0, 0, G_OPTION_ARG_STRING, &this->ot_language_str, "Set OpenType language tag (default: none)", "tag, eg. 'ENG'"},
|
||||||
|
|
||||||
{nullptr}
|
{nullptr}
|
||||||
};
|
};
|
||||||
|
@ -103,6 +105,8 @@ struct info_t
|
||||||
hb_direction_t direction = HB_DIRECTION_LTR;
|
hb_direction_t direction = HB_DIRECTION_LTR;
|
||||||
hb_script_t script = HB_SCRIPT_INVALID;
|
hb_script_t script = HB_SCRIPT_INVALID;
|
||||||
hb_language_t language = HB_LANGUAGE_INVALID;
|
hb_language_t language = HB_LANGUAGE_INVALID;
|
||||||
|
char *ot_script_str = nullptr;
|
||||||
|
char *ot_language_str = nullptr;
|
||||||
|
|
||||||
hb_bool_t all = false;
|
hb_bool_t all = false;
|
||||||
|
|
||||||
|
@ -521,6 +525,11 @@ struct info_t
|
||||||
void
|
void
|
||||||
_list_features_no_script ()
|
_list_features_no_script ()
|
||||||
{
|
{
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
printf ("Showing all font features with duplicates removed.\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
hb_tag_t table_tags[] = {HB_OT_TAG_GSUB, HB_OT_TAG_GPOS, HB_TAG_NONE};
|
hb_tag_t table_tags[] = {HB_OT_TAG_GSUB, HB_OT_TAG_GPOS, HB_TAG_NONE};
|
||||||
|
|
||||||
hb_set_t *features = hb_set_create ();
|
hb_set_t *features = hb_set_create ();
|
||||||
|
@ -594,7 +603,7 @@ struct info_t
|
||||||
|
|
||||||
hb_tag_t table_tags[] = {HB_OT_TAG_GSUB, HB_OT_TAG_GPOS, HB_TAG_NONE};
|
hb_tag_t table_tags[] = {HB_OT_TAG_GSUB, HB_OT_TAG_GPOS, HB_TAG_NONE};
|
||||||
|
|
||||||
if (script == HB_SCRIPT_INVALID)
|
if (script == HB_SCRIPT_INVALID && !ot_script_str)
|
||||||
{
|
{
|
||||||
_list_features_no_script ();
|
_list_features_no_script ();
|
||||||
return;
|
return;
|
||||||
|
@ -616,16 +625,41 @@ struct info_t
|
||||||
&script_count, script_tags,
|
&script_count, script_tags,
|
||||||
&language_count, language_tags);
|
&language_count, language_tags);
|
||||||
|
|
||||||
|
if (ot_script_str)
|
||||||
|
{
|
||||||
|
script_tags[0] = hb_tag_from_string (ot_script_str, -1);
|
||||||
|
script_count = 1;
|
||||||
|
}
|
||||||
|
if (ot_language_str)
|
||||||
|
{
|
||||||
|
language_tags[0] = hb_tag_from_string (ot_language_str, -1);
|
||||||
|
language_count = 1;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned script_index;
|
unsigned script_index;
|
||||||
|
hb_tag_t chosen_script;
|
||||||
hb_ot_layout_table_select_script (face, table_tag,
|
hb_ot_layout_table_select_script (face, table_tag,
|
||||||
script_count, script_tags,
|
script_count, script_tags,
|
||||||
&script_index, nullptr);
|
&script_index, &chosen_script);
|
||||||
|
|
||||||
unsigned language_index;
|
unsigned language_index;
|
||||||
hb_ot_layout_script_select_language (face, table_tag,
|
hb_tag_t chosen_language;
|
||||||
|
hb_ot_layout_script_select_language2 (face, table_tag,
|
||||||
script_index,
|
script_index,
|
||||||
language_count, language_tags,
|
language_count, language_tags,
|
||||||
&language_index);
|
&language_index, &chosen_language);
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
if (chosen_script)
|
||||||
|
{
|
||||||
|
printf (" Script: %c%c%c%c\n", HB_UNTAG (chosen_script));
|
||||||
|
if (chosen_language)
|
||||||
|
printf (" Language: %c%c%c%c\n", HB_UNTAG (chosen_language));
|
||||||
|
else
|
||||||
|
printf (" Language: Default\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsigned feature_array[32];
|
unsigned feature_array[32];
|
||||||
unsigned feature_count = sizeof feature_array / sizeof feature_array[0];
|
unsigned feature_count = sizeof feature_array / sizeof feature_array[0];
|
||||||
|
|
Loading…
Reference in New Issue