Restructure code

This commit is contained in:
Behdad Esfahbod 2019-06-19 16:36:09 -07:00
parent d2ff73b256
commit f642a5fa6c
1 changed files with 20 additions and 24 deletions

View File

@ -305,28 +305,24 @@ parse_private_use_subtag (const char *private_use_subtag,
const char *prefix,
unsigned char (*normalize) (unsigned char))
{
if (private_use_subtag && count && tags && *count)
{
const char *s = strstr (private_use_subtag, prefix);
if (s)
{
char tag[4];
int i;
s += strlen (prefix);
for (i = 0; i < 4 && ISALNUM (s[i]); i++)
tag[i] = normalize (s[i]);
if (i)
{
for (; i < 4; i++)
tag[i] = ' ';
tags[0] = HB_TAG (tag[0], tag[1], tag[2], tag[3]);
if ((tags[0] & 0xDFDFDFDF) == HB_OT_TAG_DEFAULT_SCRIPT)
tags[0] ^= ~0xDFDFDFDF;
*count = 1;
return false;
}
}
}
if (!(private_use_subtag && count && tags && *count)) return false;
const char *s = strstr (private_use_subtag, prefix);
if (!s) return false;
char tag[4];
int i;
s += strlen (prefix);
for (i = 0; i < 4 && ISALNUM (s[i]); i++)
tag[i] = normalize (s[i]);
if (!i) return false;
for (; i < 4; i++)
tag[i] = ' ';
tags[0] = HB_TAG (tag[0], tag[1], tag[2], tag[3]);
if ((tags[0] & 0xDFDFDFDF) == HB_OT_TAG_DEFAULT_SCRIPT)
tags[0] ^= ~0xDFDFDFDF;
*count = 1;
return true;
}
@ -394,8 +390,8 @@ hb_ot_tags_from_script_and_language (hb_script_t script,
limit = s;
}
needs_script = parse_private_use_subtag (private_use_subtag, script_count, script_tags, "-hbsc", TOLOWER);
needs_language = parse_private_use_subtag (private_use_subtag, language_count, language_tags, "-hbot", TOUPPER);
needs_script = !parse_private_use_subtag (private_use_subtag, script_count, script_tags, "-hbsc", TOLOWER);
needs_language = !parse_private_use_subtag (private_use_subtag, language_count, language_tags, "-hbot", TOUPPER);
if (needs_language && language_count && language_tags && *language_count)
hb_ot_tags_from_language (lang_str, limit, language_count, language_tags);