added missing 'Unknown' unicode Script

This commit is contained in:
Fabrice Bellard 2025-05-24 15:36:08 +02:00
parent dfc254af51
commit fc524f75ee
3 changed files with 14 additions and 12 deletions

View File

@ -3130,6 +3130,7 @@ typedef enum {
} UnicodeScriptEnum; } UnicodeScriptEnum;
static const char unicode_script_name_table[] = static const char unicode_script_name_table[] =
"Unknown,Zzzz" "\0"
"Adlam,Adlm" "\0" "Adlam,Adlm" "\0"
"Ahom,Ahom" "\0" "Ahom,Ahom" "\0"
"Anatolian_Hieroglyphs,Hluw" "\0" "Anatolian_Hieroglyphs,Hluw" "\0"

View File

@ -1285,8 +1285,6 @@ int unicode_script(CharRange *cr,
script_idx = unicode_find_name(unicode_script_name_table, script_name); script_idx = unicode_find_name(unicode_script_name_table, script_name);
if (script_idx < 0) if (script_idx < 0)
return -2; return -2;
/* Note: we remove the "Unknown" Script */
script_idx += UNICODE_SCRIPT_Unknown + 1;
is_common = (script_idx == UNICODE_SCRIPT_Common || is_common = (script_idx == UNICODE_SCRIPT_Common ||
script_idx == UNICODE_SCRIPT_Inherited); script_idx == UNICODE_SCRIPT_Inherited);
@ -1316,17 +1314,21 @@ int unicode_script(CharRange *cr,
n |= *p++; n |= *p++;
n += 96 + (1 << 12); n += 96 + (1 << 12);
} }
if (type == 0)
v = 0;
else
v = *p++;
c1 = c + n + 1; c1 = c + n + 1;
if (v == script_idx) { if (type != 0) {
if (cr_add_interval(cr1, c, c1)) v = *p++;
goto fail; if (v == script_idx || script_idx == UNICODE_SCRIPT_Unknown) {
if (cr_add_interval(cr1, c, c1))
goto fail;
}
} }
c = c1; c = c1;
} }
if (script_idx == UNICODE_SCRIPT_Unknown) {
/* Unknown is all the characters outside scripts */
if (cr_invert(cr1))
goto fail;
}
if (is_ext) { if (is_ext) {
/* add the script extensions */ /* add the script extensions */

View File

@ -2087,10 +2087,9 @@ void build_script_table(FILE *f)
fprintf(f, " UNICODE_SCRIPT_COUNT,\n"); fprintf(f, " UNICODE_SCRIPT_COUNT,\n");
fprintf(f, "} UnicodeScriptEnum;\n\n"); fprintf(f, "} UnicodeScriptEnum;\n\n");
i = 1;
dump_name_table(f, "unicode_script_name_table", dump_name_table(f, "unicode_script_name_table",
unicode_script_name + i, SCRIPT_COUNT - i, unicode_script_name, SCRIPT_COUNT,
unicode_script_short_name + i); unicode_script_short_name);
dbuf_init(dbuf); dbuf_init(dbuf);
#ifdef DUMP_TABLE_SIZE #ifdef DUMP_TABLE_SIZE