summaryrefslogtreecommitdiff
path: root/unicode_gen.c
diff options
context:
space:
mode:
authorFabrice Bellard <fabrice@bellard.org>2025-03-25 19:08:19 +0100
committerFabrice Bellard <fabrice@bellard.org>2025-03-25 19:08:19 +0100
commitb31bb20666c1563ec80788aa16beb4867f030712 (patch)
tree679b8208935249f0351bf58bc0108f47b759cf13 /unicode_gen.c
parent29630bcea6854123574f5c5d0bc18f479bac3f3e (diff)
downloadquickjs-b31bb20666c1563ec80788aa16beb4867f030712.tar.gz
quickjs-b31bb20666c1563ec80788aa16beb4867f030712.zip
updated to unicode 16.0.0 (bnoordhuis) - updated test262
Diffstat (limited to 'unicode_gen.c')
-rw-r--r--unicode_gen.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/unicode_gen.c b/unicode_gen.c
index 4f38052..0f11ef8 100644
--- a/unicode_gen.c
+++ b/unicode_gen.c
@@ -625,7 +625,7 @@ void parse_derived_core_properties(const char *filename)
p++;
p += strspn(p, " \t");
q = buf;
- while (*p != '\0' && *p != ' ' && *p != '#' && *p != '\t') {
+ while (*p != '\0' && *p != ' ' && *p != '#' && *p != '\t' && *p != ';') {
if ((q - buf) < sizeof(buf) - 1)
*q++ = *p;
p++;
@@ -1117,6 +1117,24 @@ void find_run_type(TableEntry *te, CCInfo *tab, int code)
te->ext_data[1] = ci->u_data[1];
te->ext_data[2] = ci->u_data[2];
te->ext_len = 3;
+ } else if (ci->u_len == 2 && ci->l_len == 0 && ci->f_len == 1) {
+ // U+FB05 LATIN SMALL LIGATURE LONG S T
+ assert(code == 0xFB05);
+ te->len = 1;
+ te->type = RUN_TYPE_UF_EXT2;
+ te->ext_data[0] = ci->u_data[0];
+ te->ext_data[1] = ci->u_data[1];
+ te->ext_len = 2;
+ } else if (ci->u_len == 3 && ci->l_len == 0 && ci->f_len == 1) {
+ // U+1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA or
+ // U+1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ assert(code == 0x1FD3 || code == 0x1FE3);
+ te->len = 1;
+ te->type = RUN_TYPE_UF_EXT3;
+ te->ext_data[0] = ci->u_data[0];
+ te->ext_data[1] = ci->u_data[1];
+ te->ext_data[2] = ci->u_data[2];
+ te->ext_len = 3;
} else {
printf("unsupported encoding case:\n");
dump_cc_info(ci, code);