[layout] More prep work to memoize collect_features() work
This commit is contained in:
parent
e8e67503ff
commit
fe5520ddea
|
@ -718,29 +718,24 @@ langsys_collect_features (const OT::GSUBGPOS &g,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_hb_ot_layout_collect_features_languages (hb_face_t *face,
|
script_collect_features (const OT::GSUBGPOS &g,
|
||||||
hb_tag_t table_tag,
|
const OT::Script &s,
|
||||||
unsigned int script_index,
|
|
||||||
const hb_tag_t *languages,
|
const hb_tag_t *languages,
|
||||||
const hb_tag_t *features,
|
const hb_tag_t *features,
|
||||||
hb_set_t *feature_indexes /* OUT */)
|
hb_set_t *feature_indexes /* OUT */)
|
||||||
{
|
{
|
||||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
|
||||||
if (!languages)
|
if (!languages)
|
||||||
{
|
{
|
||||||
/* All languages. */
|
/* All languages. */
|
||||||
langsys_collect_features (g,
|
langsys_collect_features (g,
|
||||||
g.get_script (script_index).get_default_lang_sys (),
|
s.get_default_lang_sys (),
|
||||||
features,
|
features,
|
||||||
feature_indexes);
|
feature_indexes);
|
||||||
|
|
||||||
unsigned int count = hb_ot_layout_script_get_language_tags (face,
|
unsigned int count = s.get_lang_sys_count ();
|
||||||
table_tag,
|
|
||||||
script_index,
|
|
||||||
0, nullptr, nullptr);
|
|
||||||
for (unsigned int language_index = 0; language_index < count; language_index++)
|
for (unsigned int language_index = 0; language_index < count; language_index++)
|
||||||
langsys_collect_features (g,
|
langsys_collect_features (g,
|
||||||
g.get_script (script_index).get_lang_sys (language_index),
|
s.get_lang_sys (language_index),
|
||||||
features,
|
features,
|
||||||
feature_indexes);
|
feature_indexes);
|
||||||
}
|
}
|
||||||
|
@ -749,14 +744,9 @@ _hb_ot_layout_collect_features_languages (hb_face_t *face,
|
||||||
for (; *languages; languages++)
|
for (; *languages; languages++)
|
||||||
{
|
{
|
||||||
unsigned int language_index;
|
unsigned int language_index;
|
||||||
if (hb_ot_layout_script_select_language (face,
|
if (s.find_lang_sys_index (*languages, &language_index))
|
||||||
table_tag,
|
|
||||||
script_index,
|
|
||||||
1,
|
|
||||||
languages,
|
|
||||||
&language_index))
|
|
||||||
langsys_collect_features (g,
|
langsys_collect_features (g,
|
||||||
g.get_script (script_index).get_lang_sys (language_index),
|
s.get_lang_sys (language_index),
|
||||||
features,
|
features,
|
||||||
feature_indexes);
|
feature_indexes);
|
||||||
}
|
}
|
||||||
|
@ -776,16 +766,14 @@ hb_ot_layout_collect_features (hb_face_t *face,
|
||||||
const hb_tag_t *features,
|
const hb_tag_t *features,
|
||||||
hb_set_t *feature_indexes /* OUT */)
|
hb_set_t *feature_indexes /* OUT */)
|
||||||
{
|
{
|
||||||
|
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||||
if (!scripts)
|
if (!scripts)
|
||||||
{
|
{
|
||||||
/* All scripts. */
|
/* All scripts. */
|
||||||
unsigned int count = hb_ot_layout_table_get_script_tags (face,
|
unsigned int count = g.get_script_count ();
|
||||||
table_tag,
|
|
||||||
0, nullptr, nullptr);
|
|
||||||
for (unsigned int script_index = 0; script_index < count; script_index++)
|
for (unsigned int script_index = 0; script_index < count; script_index++)
|
||||||
_hb_ot_layout_collect_features_languages (face,
|
script_collect_features (g,
|
||||||
table_tag,
|
g.get_script (script_index),
|
||||||
script_index,
|
|
||||||
languages,
|
languages,
|
||||||
features,
|
features,
|
||||||
feature_indexes);
|
feature_indexes);
|
||||||
|
@ -795,13 +783,9 @@ hb_ot_layout_collect_features (hb_face_t *face,
|
||||||
for (; *scripts; scripts++)
|
for (; *scripts; scripts++)
|
||||||
{
|
{
|
||||||
unsigned int script_index;
|
unsigned int script_index;
|
||||||
if (hb_ot_layout_table_find_script (face,
|
if (g.find_script_index (*scripts, &script_index))
|
||||||
table_tag,
|
script_collect_features (g,
|
||||||
*scripts,
|
g.get_script (script_index),
|
||||||
&script_index))
|
|
||||||
_hb_ot_layout_collect_features_languages (face,
|
|
||||||
table_tag,
|
|
||||||
script_index,
|
|
||||||
languages,
|
languages,
|
||||||
features,
|
features,
|
||||||
feature_indexes);
|
feature_indexes);
|
||||||
|
|
Loading…
Reference in New Issue