On Fri, 2025-02-14 at 09:02 +0100, Peter Eisentraut wrote:
> This all looks quite reasonable to me. The code could obviously use
> a
> bit closer inspection, but the way you've structured it looked quite
> okay to me.
Attached a version that rebases both patches. In my patch, I added a
report_status().
Note that the Unicode update has a few test diffs for NORMALIZE(),
please check to see if the tests themselves need an update.
Regards,
Jeff Davis
From 41f75a242122fd5d9bd5fada24d97293a340f5fb Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <[email protected]>
Date: Mon, 11 Nov 2024 07:21:48 +0100
Subject: [PATCH v2 1/2] Update Unicode data to Unicode 16.0.0
---
src/Makefile.global.in | 2 +-
src/common/unicode/meson.build | 2 +-
src/include/common/unicode_case_table.h | 56 +-
src/include/common/unicode_category_table.h | 184 +++-
.../common/unicode_east_asian_fw_table.h | 20 +-
src/include/common/unicode_nonspacing_table.h | 18 +-
src/include/common/unicode_norm_table.h | 884 ++++++++++--------
src/include/common/unicode_version.h | 2 +-
src/test/regress/expected/unicode.out | 6 +-
9 files changed, 729 insertions(+), 445 deletions(-)
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index bbe11e75bf0..ebf2dd02eeb 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -357,7 +357,7 @@ DOWNLOAD = wget -O $@ --no-use-server-timestamps
# Pick a release from here: <https://www.unicode.org/Public/>. Note
# that the most recent release listed there is often a pre-release;
# don't pick that one, except for testing.
-UNICODE_VERSION = 15.1.0
+UNICODE_VERSION = 16.0.0
# Pick a release from here: <http://cldr.unicode.org/index/downloads>
CLDR_VERSION = 45
diff --git a/src/common/unicode/meson.build b/src/common/unicode/meson.build
index b98940de279..c6a4715ccc5 100644
--- a/src/common/unicode/meson.build
+++ b/src/common/unicode/meson.build
@@ -1,6 +1,6 @@
# Copyright (c) 2022-2025, PostgreSQL Global Development Group
-UNICODE_VERSION = '15.1.0'
+UNICODE_VERSION = '16.0.0'
unicode_data = {}
unicode_baseurl = 'https://www.unicode.org/Public/@0@/ucd/@1@'
diff --git a/src/include/common/unicode_case_table.h b/src/include/common/unicode_case_table.h
index 7ad284913d7..56493cc4463 100644
--- a/src/include/common/unicode_case_table.h
+++ b/src/include/common/unicode_case_table.h
@@ -174,7 +174,7 @@ static const pg_special_case special_case[106] =
* Case mapping table. Dense for codepoints < 0x80 (enabling fast lookup),
* sparse for higher codepoints (requiring scan or binary search).
*/
-static const pg_case_map case_map[3003] =
+static const pg_case_map case_map[3057] =
{
/* begin dense entries for codepoints < 0x80 */
{0x000000, {[CaseLower] = 0x000000,[CaseTitle] = 0x000000,[CaseUpper] = 0x000000,[CaseFold] = 0x000000}, NULL},
@@ -523,6 +523,7 @@ static const pg_case_map case_map[3003] =
{0x000198, {[CaseLower] = 0x000199,[CaseTitle] = 0x000198,[CaseUpper] = 0x000198,[CaseFold] = 0x000199}, NULL},
{0x000199, {[CaseLower] = 0x000199,[CaseTitle] = 0x000198,[CaseUpper] = 0x000198,[CaseFold] = 0x000199}, NULL},
{0x00019a, {[CaseLower] = 0x00019a,[CaseTitle] = 0x00023d,[CaseUpper] = 0x00023d,[CaseFold] = 0x00019a}, NULL},
+ {0x00019b, {[CaseLower] = 0x00019b,[CaseTitle] = 0x00a7dc,[CaseUpper] = 0x00a7dc,[CaseFold] = 0x00019b}, NULL},
{0x00019c, {[CaseLower] = 0x00026f,[CaseTitle] = 0x00019c,[CaseUpper] = 0x00019c,[CaseFold] = 0x00026f}, NULL},
{0x00019d, {[CaseLower] = 0x000272,[CaseTitle] = 0x00019d,[CaseUpper] = 0x00019d,[CaseFold] = 0x000272}, NULL},
{0x00019e, {[CaseLower] = 0x00019e,[CaseTitle] = 0x000220,[CaseUpper] = 0x000220,[CaseFold] = 0x00019e}, NULL},
@@ -700,6 +701,7 @@ static const pg_case_map case_map[3003] =
{0x000260, {[CaseLower] = 0x000260,[CaseTitle] = 0x000193,[CaseUpper] = 0x000193,[CaseFold] = 0x000260}, NULL},
{0x000261, {[CaseLower] = 0x000261,[CaseTitle] = 0x00a7ac,[CaseUpper] = 0x00a7ac,[CaseFold] = 0x000261}, NULL},
{0x000263, {[CaseLower] = 0x000263,[CaseTitle] = 0x000194,[CaseUpper] = 0x000194,[CaseFold] = 0x000263}, NULL},
+ {0x000264, {[CaseLower] = 0x000264,[CaseTitle] = 0x00a7cb,[CaseUpper] = 0x00a7cb,[CaseFold] = 0x000264}, NULL},
{0x000265, {[CaseLower] = 0x000265,[CaseTitle] = 0x00a78d,[CaseUpper] = 0x00a78d,[CaseFold] = 0x000265}, NULL},
{0x000266, {[CaseLower] = 0x000266,[CaseTitle] = 0x00a7aa,[CaseUpper] = 0x00a7aa,[CaseFold] = 0x000266}, NULL},
{0x000268, {[CaseLower] = 0x000268,[CaseTitle] = 0x000197,[CaseUpper] = 0x000197,[CaseFold] = 0x000268}, NULL},
@@ -1408,6 +1410,8 @@ static const pg_case_map case_map[3003] =
{0x001c86, {[CaseLower] = 0x001c86,[CaseTitle] = 0x00042a,[CaseUpper] = 0x00042a,[CaseFold] = 0x00044a}, NULL},
{0x001c87, {[CaseLower] = 0x001c87,[CaseTitle] = 0x000462,[CaseUpper] = 0x000462,[CaseFold] = 0x000463}, NULL},
{0x001c88, {[CaseLower] = 0x001c88,[CaseTitle] = 0x00a64a,[CaseUpper] = 0x00a64a,[CaseFold] = 0x00a64b}, NULL},
+ {0x001c89, {[CaseLower] = 0x001c8a,[CaseTitle] = 0x001c89,[CaseUpper] = 0x001c89,[CaseFold] = 0x001c8a}, NULL},
+ {0x001c8a, {[CaseLower] = 0x001c8a,[CaseTitle] = 0x001c89,[CaseUpper] = 0x001c89,[CaseFold] = 0x001c8a}, NULL},
{0x001c90, {[CaseLower] = 0x0010d0,[CaseTitle] = 0x001c90,[CaseUpper] = 0x001c90,[CaseFold] = 0x0010d0}, NULL},
{0x001c91, {[CaseLower] = 0x0010d1,[CaseTitle] = 0x001c91,[CaseUpper] = 0x001c91,[CaseFold] = 0x0010d1}, NULL},
{0x001c92, {[CaseLower] = 0x0010d2,[CaseTitle] = 0x001c92,[CaseUpper] = 0x001c92,[CaseFold] = 0x0010d2}, NULL},
@@ -2509,12 +2513,18 @@ static const pg_case_map case_map[3003] =
{0x00a7c8, {[CaseLower] = 0x00a7c8,[CaseTitle] = 0x00a7c7,[CaseUpper] = 0x00a7c7,[CaseFold] = 0x00a7c8}, NULL},
{0x00a7c9, {[CaseLower] = 0x00a7ca,[CaseTitle] = 0x00a7c9,[CaseUpper] = 0x00a7c9,[CaseFold] = 0x00a7ca}, NULL},
{0x00a7ca, {[CaseLower] = 0x00a7ca,[CaseTitle] = 0x00a7c9,[CaseUpper] = 0x00a7c9,[CaseFold] = 0x00a7ca}, NULL},
+ {0x00a7cb, {[CaseLower] = 0x000264,[CaseTitle] = 0x00a7cb,[CaseUpper] = 0x00a7cb,[CaseFold] = 0x000264}, NULL},
+ {0x00a7cc, {[CaseLower] = 0x00a7cd,[CaseTitle] = 0x00a7cc,[CaseUpper] = 0x00a7cc,[CaseFold] = 0x00a7cd}, NULL},
+ {0x00a7cd, {[CaseLower] = 0x00a7cd,[CaseTitle] = 0x00a7cc,[CaseUpper] = 0x00a7cc,[CaseFold] = 0x00a7cd}, NULL},
{0x00a7d0, {[CaseLower] = 0x00a7d1,[CaseTitle] = 0x00a7d0,[CaseUpper] = 0x00a7d0,[CaseFold] = 0x00a7d1}, NULL},
{0x00a7d1, {[CaseLower] = 0x00a7d1,[CaseTitle] = 0x00a7d0,[CaseUpper] = 0x00a7d0,[CaseFold] = 0x00a7d1}, NULL},
{0x00a7d6, {[CaseLower] = 0x00a7d7,[CaseTitle] = 0x00a7d6,[CaseUpper] = 0x00a7d6,[CaseFold] = 0x00a7d7}, NULL},
{0x00a7d7, {[CaseLower] = 0x00a7d7,[CaseTitle] = 0x00a7d6,[CaseUpper] = 0x00a7d6,[CaseFold] = 0x00a7d7}, NULL},
{0x00a7d8, {[CaseLower] = 0x00a7d9,[CaseTitle] = 0x00a7d8,[CaseUpper] = 0x00a7d8,[CaseFold] = 0x00a7d9}, NULL},
{0x00a7d9, {[CaseLower] = 0x00a7d9,[CaseTitle] = 0x00a7d8,[CaseUpper] = 0x00a7d8,[CaseFold] = 0x00a7d9}, NULL},
+ {0x00a7da, {[CaseLower] = 0x00a7db,[CaseTitle] = 0x00a7da,[CaseUpper] = 0x00a7da,[CaseFold] = 0x00a7db}, NULL},
+ {0x00a7db, {[CaseLower] = 0x00a7db,[CaseTitle] = 0x00a7da,[CaseUpper] = 0x00a7da,[CaseFold] = 0x00a7db}, NULL},
+ {0x00a7dc, {[CaseLower] = 0x00019b,[CaseTitle] = 0x00a7dc,[CaseUpper] = 0x00a7dc,[CaseFold] = 0x00019b}, NULL},
{0x00a7f5, {[CaseLower] = 0x00a7f6,[CaseTitle] = 0x00a7f5,[CaseUpper] = 0x00a7f5,[CaseFold] = 0x00a7f6}, NULL},
{0x00a7f6, {[CaseLower] = 0x00a7f6,[CaseTitle] = 0x00a7f5,[CaseUpper] = 0x00a7f5,[CaseFold] = 0x00a7f6}, NULL},
{0x00ab53, {[CaseLower] = 0x00ab53,[CaseTitle] = 0x00a7b3,[CaseUpper] = 0x00a7b3,[CaseFold] = 0x00ab53}, NULL},
@@ -2986,6 +2996,50 @@ static const pg_case_map case_map[3003] =
{0x010cf0, {[CaseLower] = 0x010cf0,[CaseTitle] = 0x010cb0,[CaseUpper] = 0x010cb0,[CaseFold] = 0x010cf0}, NULL},
{0x010cf1, {[CaseLower] = 0x010cf1,[CaseTitle] = 0x010cb1,[CaseUpper] = 0x010cb1,[CaseFold] = 0x010cf1}, NULL},
{0x010cf2, {[CaseLower] = 0x010cf2,[CaseTitle] = 0x010cb2,[CaseUpper] = 0x010cb2,[CaseFold] = 0x010cf2}, NULL},
+ {0x010d50, {[CaseLower] = 0x010d70,[CaseTitle] = 0x010d50,[CaseUpper] = 0x010d50,[CaseFold] = 0x010d70}, NULL},
+ {0x010d51, {[CaseLower] = 0x010d71,[CaseTitle] = 0x010d51,[CaseUpper] = 0x010d51,[CaseFold] = 0x010d71}, NULL},
+ {0x010d52, {[CaseLower] = 0x010d72,[CaseTitle] = 0x010d52,[CaseUpper] = 0x010d52,[CaseFold] = 0x010d72}, NULL},
+ {0x010d53, {[CaseLower] = 0x010d73,[CaseTitle] = 0x010d53,[CaseUpper] = 0x010d53,[CaseFold] = 0x010d73}, NULL},
+ {0x010d54, {[CaseLower] = 0x010d74,[CaseTitle] = 0x010d54,[CaseUpper] = 0x010d54,[CaseFold] = 0x010d74}, NULL},
+ {0x010d55, {[CaseLower] = 0x010d75,[CaseTitle] = 0x010d55,[CaseUpper] = 0x010d55,[CaseFold] = 0x010d75}, NULL},
+ {0x010d56, {[CaseLower] = 0x010d76,[CaseTitle] = 0x010d56,[CaseUpper] = 0x010d56,[CaseFold] = 0x010d76}, NULL},
+ {0x010d57, {[CaseLower] = 0x010d77,[CaseTitle] = 0x010d57,[CaseUpper] = 0x010d57,[CaseFold] = 0x010d77}, NULL},
+ {0x010d58, {[CaseLower] = 0x010d78,[CaseTitle] = 0x010d58,[CaseUpper] = 0x010d58,[CaseFold] = 0x010d78}, NULL},
+ {0x010d59, {[CaseLower] = 0x010d79,[CaseTitle] = 0x010d59,[CaseUpper] = 0x010d59,[CaseFold] = 0x010d79}, NULL},
+ {0x010d5a, {[CaseLower] = 0x010d7a,[CaseTitle] = 0x010d5a,[CaseUpper] = 0x010d5a,[CaseFold] = 0x010d7a}, NULL},
+ {0x010d5b, {[CaseLower] = 0x010d7b,[CaseTitle] = 0x010d5b,[CaseUpper] = 0x010d5b,[CaseFold] = 0x010d7b}, NULL},
+ {0x010d5c, {[CaseLower] = 0x010d7c,[CaseTitle] = 0x010d5c,[CaseUpper] = 0x010d5c,[CaseFold] = 0x010d7c}, NULL},
+ {0x010d5d, {[CaseLower] = 0x010d7d,[CaseTitle] = 0x010d5d,[CaseUpper] = 0x010d5d,[CaseFold] = 0x010d7d}, NULL},
+ {0x010d5e, {[CaseLower] = 0x010d7e,[CaseTitle] = 0x010d5e,[CaseUpper] = 0x010d5e,[CaseFold] = 0x010d7e}, NULL},
+ {0x010d5f, {[CaseLower] = 0x010d7f,[CaseTitle] = 0x010d5f,[CaseUpper] = 0x010d5f,[CaseFold] = 0x010d7f}, NULL},
+ {0x010d60, {[CaseLower] = 0x010d80,[CaseTitle] = 0x010d60,[CaseUpper] = 0x010d60,[CaseFold] = 0x010d80}, NULL},
+ {0x010d61, {[CaseLower] = 0x010d81,[CaseTitle] = 0x010d61,[CaseUpper] = 0x010d61,[CaseFold] = 0x010d81}, NULL},
+ {0x010d62, {[CaseLower] = 0x010d82,[CaseTitle] = 0x010d62,[CaseUpper] = 0x010d62,[CaseFold] = 0x010d82}, NULL},
+ {0x010d63, {[CaseLower] = 0x010d83,[CaseTitle] = 0x010d63,[CaseUpper] = 0x010d63,[CaseFold] = 0x010d83}, NULL},
+ {0x010d64, {[CaseLower] = 0x010d84,[CaseTitle] = 0x010d64,[CaseUpper] = 0x010d64,[CaseFold] = 0x010d84}, NULL},
+ {0x010d65, {[CaseLower] = 0x010d85,[CaseTitle] = 0x010d65,[CaseUpper] = 0x010d65,[CaseFold] = 0x010d85}, NULL},
+ {0x010d70, {[CaseLower] = 0x010d70,[CaseTitle] = 0x010d50,[CaseUpper] = 0x010d50,[CaseFold] = 0x010d70}, NULL},
+ {0x010d71, {[CaseLower] = 0x010d71,[CaseTitle] = 0x010d51,[CaseUpper] = 0x010d51,[CaseFold] = 0x010d71}, NULL},
+ {0x010d72, {[CaseLower] = 0x010d72,[CaseTitle] = 0x010d52,[CaseUpper] = 0x010d52,[CaseFold] = 0x010d72}, NULL},
+ {0x010d73, {[CaseLower] = 0x010d73,[CaseTitle] = 0x010d53,[CaseUpper] = 0x010d53,[CaseFold] = 0x010d73}, NULL},
+ {0x010d74, {[CaseLower] = 0x010d74,[CaseTitle] = 0x010d54,[CaseUpper] = 0x010d54,[CaseFold] = 0x010d74}, NULL},
+ {0x010d75, {[CaseLower] = 0x010d75,[CaseTitle] = 0x010d55,[CaseUpper] = 0x010d55,[CaseFold] = 0x010d75}, NULL},
+ {0x010d76, {[CaseLower] = 0x010d76,[CaseTitle] = 0x010d56,[CaseUpper] = 0x010d56,[CaseFold] = 0x010d76}, NULL},
+ {0x010d77, {[CaseLower] = 0x010d77,[CaseTitle] = 0x010d57,[CaseUpper] = 0x010d57,[CaseFold] = 0x010d77}, NULL},
+ {0x010d78, {[CaseLower] = 0x010d78,[CaseTitle] = 0x010d58,[CaseUpper] = 0x010d58,[CaseFold] = 0x010d78}, NULL},
+ {0x010d79, {[CaseLower] = 0x010d79,[CaseTitle] = 0x010d59,[CaseUpper] = 0x010d59,[CaseFold] = 0x010d79}, NULL},
+ {0x010d7a, {[CaseLower] = 0x010d7a,[CaseTitle] = 0x010d5a,[CaseUpper] = 0x010d5a,[CaseFold] = 0x010d7a}, NULL},
+ {0x010d7b, {[CaseLower] = 0x010d7b,[CaseTitle] = 0x010d5b,[CaseUpper] = 0x010d5b,[CaseFold] = 0x010d7b}, NULL},
+ {0x010d7c, {[CaseLower] = 0x010d7c,[CaseTitle] = 0x010d5c,[CaseUpper] = 0x010d5c,[CaseFold] = 0x010d7c}, NULL},
+ {0x010d7d, {[CaseLower] = 0x010d7d,[CaseTitle] = 0x010d5d,[CaseUpper] = 0x010d5d,[CaseFold] = 0x010d7d}, NULL},
+ {0x010d7e, {[CaseLower] = 0x010d7e,[CaseTitle] = 0x010d5e,[CaseUpper] = 0x010d5e,[CaseFold] = 0x010d7e}, NULL},
+ {0x010d7f, {[CaseLower] = 0x010d7f,[CaseTitle] = 0x010d5f,[CaseUpper] = 0x010d5f,[CaseFold] = 0x010d7f}, NULL},
+ {0x010d80, {[CaseLower] = 0x010d80,[CaseTitle] = 0x010d60,[CaseUpper] = 0x010d60,[CaseFold] = 0x010d80}, NULL},
+ {0x010d81, {[CaseLower] = 0x010d81,[CaseTitle] = 0x010d61,[CaseUpper] = 0x010d61,[CaseFold] = 0x010d81}, NULL},
+ {0x010d82, {[CaseLower] = 0x010d82,[CaseTitle] = 0x010d62,[CaseUpper] = 0x010d62,[CaseFold] = 0x010d82}, NULL},
+ {0x010d83, {[CaseLower] = 0x010d83,[CaseTitle] = 0x010d63,[CaseUpper] = 0x010d63,[CaseFold] = 0x010d83}, NULL},
+ {0x010d84, {[CaseLower] = 0x010d84,[CaseTitle] = 0x010d64,[CaseUpper] = 0x010d64,[CaseFold] = 0x010d84}, NULL},
+ {0x010d85, {[CaseLower] = 0x010d85,[CaseTitle] = 0x010d65,[CaseUpper] = 0x010d65,[CaseFold] = 0x010d85}, NULL},
{0x0118a0, {[CaseLower] = 0x0118c0,[CaseTitle] = 0x0118a0,[CaseUpper] = 0x0118a0,[CaseFold] = 0x0118c0}, NULL},
{0x0118a1, {[CaseLower] = 0x0118c1,[CaseTitle] = 0x0118a1,[CaseUpper] = 0x0118a1,[CaseFold] = 0x0118c1}, NULL},
{0x0118a2, {[CaseLower] = 0x0118c2,[CaseTitle] = 0x0118a2,[CaseUpper] = 0x0118a2,[CaseFold] = 0x0118c2}, NULL},
diff --git a/src/include/common/unicode_category_table.h b/src/include/common/unicode_category_table.h
index d3f468a1ebc..95a1c65da7e 100644
--- a/src/include/common/unicode_category_table.h
+++ b/src/include/common/unicode_category_table.h
@@ -696,7 +696,7 @@ static const pg_unicode_properties unicode_opt_ascii[128] =
};
/* table of Unicode codepoint ranges and their categories */
-static const pg_category_range unicode_categories[3302] =
+static const pg_category_range unicode_categories[3368] =
{
{0x000000, 0x00001f, PG_U_CONTROL},
{0x000020, 0x000020, PG_U_SPACE_SEPARATOR},
@@ -1408,7 +1408,7 @@ static const pg_category_range unicode_categories[3302] =
{0x000888, 0x000888, PG_U_MODIFIER_SYMBOL},
{0x000889, 0x00088e, PG_U_OTHER_LETTER},
{0x000890, 0x000891, PG_U_FORMAT},
- {0x000898, 0x00089f, PG_U_NONSPACING_MARK},
+ {0x000897, 0x00089f, PG_U_NONSPACING_MARK},
{0x0008a0, 0x0008c8, PG_U_OTHER_LETTER},
{0x0008c9, 0x0008c9, PG_U_MODIFIER_LETTER},
{0x0008ca, 0x0008e1, PG_U_NONSPACING_MARK},
@@ -1887,12 +1887,13 @@ static const pg_category_range unicode_categories[3302] =
{0x001b42, 0x001b42, PG_U_NONSPACING_MARK},
{0x001b43, 0x001b44, PG_U_SPACING_MARK},
{0x001b45, 0x001b4c, PG_U_OTHER_LETTER},
+ {0x001b4e, 0x001b4f, PG_U_OTHER_PUNCTUATION},
{0x001b50, 0x001b59, PG_U_DECIMAL_NUMBER},
{0x001b5a, 0x001b60, PG_U_OTHER_PUNCTUATION},
{0x001b61, 0x001b6a, PG_U_OTHER_SYMBOL},
{0x001b6b, 0x001b73, PG_U_NONSPACING_MARK},
{0x001b74, 0x001b7c, PG_U_OTHER_SYMBOL},
- {0x001b7d, 0x001b7e, PG_U_OTHER_PUNCTUATION},
+ {0x001b7d, 0x001b7f, PG_U_OTHER_PUNCTUATION},
{0x001b80, 0x001b81, PG_U_NONSPACING_MARK},
{0x001b82, 0x001b82, PG_U_SPACING_MARK},
{0x001b83, 0x001ba0, PG_U_OTHER_LETTER},
@@ -1927,6 +1928,8 @@ static const pg_category_range unicode_categories[3302] =
{0x001c78, 0x001c7d, PG_U_MODIFIER_LETTER},
{0x001c7e, 0x001c7f, PG_U_OTHER_PUNCTUATION},
{0x001c80, 0x001c88, PG_U_LOWERCASE_LETTER},
+ {0x001c89, 0x001c89, PG_U_UPPERCASE_LETTER},
+ {0x001c8a, 0x001c8a, PG_U_LOWERCASE_LETTER},
{0x001c90, 0x001cba, PG_U_UPPERCASE_LETTER},
{0x001cbd, 0x001cbf, PG_U_UPPERCASE_LETTER},
{0x001cc0, 0x001cc7, PG_U_OTHER_PUNCTUATION},
@@ -2378,7 +2381,7 @@ static const pg_category_range unicode_categories[3302] =
{0x00239b, 0x0023b3, PG_U_MATH_SYMBOL},
{0x0023b4, 0x0023db, PG_U_OTHER_SYMBOL},
{0x0023dc, 0x0023e1, PG_U_MATH_SYMBOL},
- {0x0023e2, 0x002426, PG_U_OTHER_SYMBOL},
+ {0x0023e2, 0x002429, PG_U_OTHER_SYMBOL},
{0x002440, 0x00244a, PG_U_OTHER_SYMBOL},
{0x002460, 0x00249b, PG_U_OTHER_NUMBER},
{0x00249c, 0x0024e9, PG_U_OTHER_SYMBOL},
@@ -2719,7 +2722,7 @@ static const pg_category_range unicode_categories[3302] =
{0x003192, 0x003195, PG_U_OTHER_NUMBER},
{0x003196, 0x00319f, PG_U_OTHER_SYMBOL},
{0x0031a0, 0x0031bf, PG_U_OTHER_LETTER},
- {0x0031c0, 0x0031e3, PG_U_OTHER_SYMBOL},
+ {0x0031c0, 0x0031e5, PG_U_OTHER_SYMBOL},
{0x0031ef, 0x0031ef, PG_U_OTHER_SYMBOL},
{0x0031f0, 0x0031ff, PG_U_OTHER_LETTER},
{0x003200, 0x00321e, PG_U_OTHER_SYMBOL},
@@ -2983,6 +2986,8 @@ static const pg_category_range unicode_categories[3302] =
{0x00a7c8, 0x00a7c8, PG_U_LOWERCASE_LETTER},
{0x00a7c9, 0x00a7c9, PG_U_UPPERCASE_LETTER},
{0x00a7ca, 0x00a7ca, PG_U_LOWERCASE_LETTER},
+ {0x00a7cb, 0x00a7cc, PG_U_UPPERCASE_LETTER},
+ {0x00a7cd, 0x00a7cd, PG_U_LOWERCASE_LETTER},
{0x00a7d0, 0x00a7d0, PG_U_UPPERCASE_LETTER},
{0x00a7d1, 0x00a7d1, PG_U_LOWERCASE_LETTER},
{0x00a7d3, 0x00a7d3, PG_U_LOWERCASE_LETTER},
@@ -2991,6 +2996,9 @@ static const pg_category_range unicode_categories[3302] =
{0x00a7d7, 0x00a7d7, PG_U_LOWERCASE_LETTER},
{0x00a7d8, 0x00a7d8, PG_U_UPPERCASE_LETTER},
{0x00a7d9, 0x00a7d9, PG_U_LOWERCASE_LETTER},
+ {0x00a7da, 0x00a7da, PG_U_UPPERCASE_LETTER},
+ {0x00a7db, 0x00a7db, PG_U_LOWERCASE_LETTER},
+ {0x00a7dc, 0x00a7dc, PG_U_UPPERCASE_LETTER},
{0x00a7f2, 0x00a7f4, PG_U_MODIFIER_LETTER},
{0x00a7f5, 0x00a7f5, PG_U_UPPERCASE_LETTER},
{0x00a7f6, 0x00a7f6, PG_U_LOWERCASE_LETTER},
@@ -3306,6 +3314,7 @@ static const pg_category_range unicode_categories[3302] =
{0x0105a3, 0x0105b1, PG_U_LOWERCASE_LETTER},
{0x0105b3, 0x0105b9, PG_U_LOWERCASE_LETTER},
{0x0105bb, 0x0105bc, PG_U_LOWERCASE_LETTER},
+ {0x0105c0, 0x0105f3, PG_U_OTHER_LETTER},
{0x010600, 0x010736, PG_U_OTHER_LETTER},
{0x010740, 0x010755, PG_U_OTHER_LETTER},
{0x010760, 0x010767, PG_U_OTHER_LETTER},
@@ -3376,12 +3385,23 @@ static const pg_category_range unicode_categories[3302] =
{0x010d00, 0x010d23, PG_U_OTHER_LETTER},
{0x010d24, 0x010d27, PG_U_NONSPACING_MARK},
{0x010d30, 0x010d39, PG_U_DECIMAL_NUMBER},
+ {0x010d40, 0x010d49, PG_U_DECIMAL_NUMBER},
+ {0x010d4a, 0x010d4d, PG_U_OTHER_LETTER},
+ {0x010d4e, 0x010d4e, PG_U_MODIFIER_LETTER},
+ {0x010d4f, 0x010d4f, PG_U_OTHER_LETTER},
+ {0x010d50, 0x010d65, PG_U_UPPERCASE_LETTER},
+ {0x010d69, 0x010d6d, PG_U_NONSPACING_MARK},
+ {0x010d6e, 0x010d6e, PG_U_DASH_PUNCTUATION},
+ {0x010d6f, 0x010d6f, PG_U_MODIFIER_LETTER},
+ {0x010d70, 0x010d85, PG_U_LOWERCASE_LETTER},
+ {0x010d8e, 0x010d8f, PG_U_MATH_SYMBOL},
{0x010e60, 0x010e7e, PG_U_OTHER_NUMBER},
{0x010e80, 0x010ea9, PG_U_OTHER_LETTER},
{0x010eab, 0x010eac, PG_U_NONSPACING_MARK},
{0x010ead, 0x010ead, PG_U_DASH_PUNCTUATION},
{0x010eb0, 0x010eb1, PG_U_OTHER_LETTER},
- {0x010efd, 0x010eff, PG_U_NONSPACING_MARK},
+ {0x010ec2, 0x010ec4, PG_U_OTHER_LETTER},
+ {0x010efc, 0x010eff, PG_U_NONSPACING_MARK},
{0x010f00, 0x010f1c, PG_U_OTHER_LETTER},
{0x010f1d, 0x010f26, PG_U_OTHER_NUMBER},
{0x010f27, 0x010f27, PG_U_OTHER_LETTER},
@@ -3497,6 +3517,26 @@ static const pg_category_range unicode_categories[3302] =
{0x011362, 0x011363, PG_U_SPACING_MARK},
{0x011366, 0x01136c, PG_U_NONSPACING_MARK},
{0x011370, 0x011374, PG_U_NONSPACING_MARK},
+ {0x011380, 0x011389, PG_U_OTHER_LETTER},
+ {0x01138b, 0x01138b, PG_U_OTHER_LETTER},
+ {0x01138e, 0x01138e, PG_U_OTHER_LETTER},
+ {0x011390, 0x0113b5, PG_U_OTHER_LETTER},
+ {0x0113b7, 0x0113b7, PG_U_OTHER_LETTER},
+ {0x0113b8, 0x0113ba, PG_U_SPACING_MARK},
+ {0x0113bb, 0x0113c0, PG_U_NONSPACING_MARK},
+ {0x0113c2, 0x0113c2, PG_U_SPACING_MARK},
+ {0x0113c5, 0x0113c5, PG_U_SPACING_MARK},
+ {0x0113c7, 0x0113ca, PG_U_SPACING_MARK},
+ {0x0113cc, 0x0113cd, PG_U_SPACING_MARK},
+ {0x0113ce, 0x0113ce, PG_U_NONSPACING_MARK},
+ {0x0113cf, 0x0113cf, PG_U_SPACING_MARK},
+ {0x0113d0, 0x0113d0, PG_U_NONSPACING_MARK},
+ {0x0113d1, 0x0113d1, PG_U_OTHER_LETTER},
+ {0x0113d2, 0x0113d2, PG_U_NONSPACING_MARK},
+ {0x0113d3, 0x0113d3, PG_U_OTHER_LETTER},
+ {0x0113d4, 0x0113d5, PG_U_OTHER_PUNCTUATION},
+ {0x0113d7, 0x0113d8, PG_U_OTHER_PUNCTUATION},
+ {0x0113e1, 0x0113e2, PG_U_NONSPACING_MARK},
{0x011400, 0x011434, PG_U_OTHER_LETTER},
{0x011435, 0x011437, PG_U_SPACING_MARK},
{0x011438, 0x01143f, PG_U_NONSPACING_MARK},
@@ -3556,8 +3596,11 @@ static const pg_category_range unicode_categories[3302] =
{0x0116b8, 0x0116b8, PG_U_OTHER_LETTER},
{0x0116b9, 0x0116b9, PG_U_OTHER_PUNCTUATION},
{0x0116c0, 0x0116c9, PG_U_DECIMAL_NUMBER},
+ {0x0116d0, 0x0116e3, PG_U_DECIMAL_NUMBER},
{0x011700, 0x01171a, PG_U_OTHER_LETTER},
- {0x01171d, 0x01171f, PG_U_NONSPACING_MARK},
+ {0x01171d, 0x01171d, PG_U_NONSPACING_MARK},
+ {0x01171e, 0x01171e, PG_U_SPACING_MARK},
+ {0x01171f, 0x01171f, PG_U_NONSPACING_MARK},
{0x011720, 0x011721, PG_U_SPACING_MARK},
{0x011722, 0x011725, PG_U_NONSPACING_MARK},
{0x011726, 0x011726, PG_U_SPACING_MARK},
@@ -3627,6 +3670,9 @@ static const pg_category_range unicode_categories[3302] =
{0x011a9e, 0x011aa2, PG_U_OTHER_PUNCTUATION},
{0x011ab0, 0x011af8, PG_U_OTHER_LETTER},
{0x011b00, 0x011b09, PG_U_OTHER_PUNCTUATION},
+ {0x011bc0, 0x011be0, PG_U_OTHER_LETTER},
+ {0x011be1, 0x011be1, PG_U_OTHER_PUNCTUATION},
+ {0x011bf0, 0x011bf9, PG_U_DECIMAL_NUMBER},
{0x011c00, 0x011c08, PG_U_OTHER_LETTER},
{0x011c0a, 0x011c2e, PG_U_OTHER_LETTER},
{0x011c2f, 0x011c2f, PG_U_SPACING_MARK},
@@ -3685,6 +3731,7 @@ static const pg_category_range unicode_categories[3302] =
{0x011f42, 0x011f42, PG_U_NONSPACING_MARK},
{0x011f43, 0x011f4f, PG_U_OTHER_PUNCTUATION},
{0x011f50, 0x011f59, PG_U_DECIMAL_NUMBER},
+ {0x011f5a, 0x011f5a, PG_U_NONSPACING_MARK},
{0x011fb0, 0x011fb0, PG_U_OTHER_LETTER},
{0x011fc0, 0x011fd4, PG_U_OTHER_NUMBER},
{0x011fd5, 0x011fdc, PG_U_OTHER_SYMBOL},
@@ -3702,7 +3749,13 @@ static const pg_category_range unicode_categories[3302] =
{0x013440, 0x013440, PG_U_NONSPACING_MARK},
{0x013441, 0x013446, PG_U_OTHER_LETTER},
{0x013447, 0x013455, PG_U_NONSPACING_MARK},
+ {0x013460, 0x0143fa, PG_U_OTHER_LETTER},
{0x014400, 0x014646, PG_U_OTHER_LETTER},
+ {0x016100, 0x01611d, PG_U_OTHER_LETTER},
+ {0x01611e, 0x016129, PG_U_NONSPACING_MARK},
+ {0x01612a, 0x01612c, PG_U_SPACING_MARK},
+ {0x01612d, 0x01612f, PG_U_NONSPACING_MARK},
+ {0x016130, 0x016139, PG_U_DECIMAL_NUMBER},
{0x016800, 0x016a38, PG_U_OTHER_LETTER},
{0x016a40, 0x016a5e, PG_U_OTHER_LETTER},
{0x016a60, 0x016a69, PG_U_DECIMAL_NUMBER},
@@ -3723,6 +3776,11 @@ static const pg_category_range unicode_categories[3302] =
{0x016b5b, 0x016b61, PG_U_OTHER_NUMBER},
{0x016b63, 0x016b77, PG_U_OTHER_LETTER},
{0x016b7d, 0x016b8f, PG_U_OTHER_LETTER},
+ {0x016d40, 0x016d42, PG_U_MODIFIER_LETTER},
+ {0x016d43, 0x016d6a, PG_U_OTHER_LETTER},
+ {0x016d6b, 0x016d6c, PG_U_MODIFIER_LETTER},
+ {0x016d6d, 0x016d6f, PG_U_OTHER_PUNCTUATION},
+ {0x016d70, 0x016d79, PG_U_DECIMAL_NUMBER},
{0x016e40, 0x016e5f, PG_U_UPPERCASE_LETTER},
{0x016e60, 0x016e7f, PG_U_LOWERCASE_LETTER},
{0x016e80, 0x016e96, PG_U_OTHER_NUMBER},
@@ -3740,7 +3798,7 @@ static const pg_category_range unicode_categories[3302] =
{0x016ff0, 0x016ff1, PG_U_SPACING_MARK},
{0x017000, 0x0187f7, PG_U_OTHER_LETTER},
{0x018800, 0x018cd5, PG_U_OTHER_LETTER},
- {0x018d00, 0x018d08, PG_U_OTHER_LETTER},
+ {0x018cff, 0x018d08, PG_U_OTHER_LETTER},
{0x01aff0, 0x01aff3, PG_U_MODIFIER_LETTER},
{0x01aff5, 0x01affb, PG_U_MODIFIER_LETTER},
{0x01affd, 0x01affe, PG_U_MODIFIER_LETTER},
@@ -3758,6 +3816,9 @@ static const pg_category_range unicode_categories[3302] =
{0x01bc9d, 0x01bc9e, PG_U_NONSPACING_MARK},
{0x01bc9f, 0x01bc9f, PG_U_OTHER_PUNCTUATION},
{0x01bca0, 0x01bca3, PG_U_FORMAT},
+ {0x01cc00, 0x01ccef, PG_U_OTHER_SYMBOL},
+ {0x01ccf0, 0x01ccf9, PG_U_DECIMAL_NUMBER},
+ {0x01cd00, 0x01ceb3, PG_U_OTHER_SYMBOL},
{0x01cf00, 0x01cf2d, PG_U_NONSPACING_MARK},
{0x01cf30, 0x01cf46, PG_U_NONSPACING_MARK},
{0x01cf50, 0x01cfc3, PG_U_OTHER_SYMBOL},
@@ -3891,6 +3952,11 @@ static const pg_category_range unicode_categories[3302] =
{0x01e4eb, 0x01e4eb, PG_U_MODIFIER_LETTER},
{0x01e4ec, 0x01e4ef, PG_U_NONSPACING_MARK},
{0x01e4f0, 0x01e4f9, PG_U_DECIMAL_NUMBER},
+ {0x01e5d0, 0x01e5ed, PG_U_OTHER_LETTER},
+ {0x01e5ee, 0x01e5ef, PG_U_NONSPACING_MARK},
+ {0x01e5f0, 0x01e5f0, PG_U_OTHER_LETTER},
+ {0x01e5f1, 0x01e5fa, PG_U_DECIMAL_NUMBER},
+ {0x01e5ff, 0x01e5ff, PG_U_OTHER_PUNCTUATION},
{0x01e7e0, 0x01e7e6, PG_U_OTHER_LETTER},
{0x01e7e8, 0x01e7eb, PG_U_OTHER_LETTER},
{0x01e7ed, 0x01e7ee, PG_U_OTHER_LETTER},
@@ -3973,18 +4039,18 @@ static const pg_category_range unicode_categories[3302] =
{0x01f850, 0x01f859, PG_U_OTHER_SYMBOL},
{0x01f860, 0x01f887, PG_U_OTHER_SYMBOL},
{0x01f890, 0x01f8ad, PG_U_OTHER_SYMBOL},
- {0x01f8b0, 0x01f8b1, PG_U_OTHER_SYMBOL},
+ {0x01f8b0, 0x01f8bb, PG_U_OTHER_SYMBOL},
+ {0x01f8c0, 0x01f8c1, PG_U_OTHER_SYMBOL},
{0x01f900, 0x01fa53, PG_U_OTHER_SYMBOL},
{0x01fa60, 0x01fa6d, PG_U_OTHER_SYMBOL},
{0x01fa70, 0x01fa7c, PG_U_OTHER_SYMBOL},
- {0x01fa80, 0x01fa88, PG_U_OTHER_SYMBOL},
- {0x01fa90, 0x01fabd, PG_U_OTHER_SYMBOL},
- {0x01fabf, 0x01fac5, PG_U_OTHER_SYMBOL},
- {0x01face, 0x01fadb, PG_U_OTHER_SYMBOL},
- {0x01fae0, 0x01fae8, PG_U_OTHER_SYMBOL},
+ {0x01fa80, 0x01fa89, PG_U_OTHER_SYMBOL},
+ {0x01fa8f, 0x01fac6, PG_U_OTHER_SYMBOL},
+ {0x01face, 0x01fadc, PG_U_OTHER_SYMBOL},
+ {0x01fadf, 0x01fae9, PG_U_OTHER_SYMBOL},
{0x01faf0, 0x01faf8, PG_U_OTHER_SYMBOL},
{0x01fb00, 0x01fb92, PG_U_OTHER_SYMBOL},
- {0x01fb94, 0x01fbca, PG_U_OTHER_SYMBOL},
+ {0x01fb94, 0x01fbef, PG_U_OTHER_SYMBOL},
{0x01fbf0, 0x01fbf9, PG_U_DECIMAL_NUMBER},
{0x020000, 0x02a6df, PG_U_OTHER_LETTER},
{0x02a700, 0x02b739, PG_U_OTHER_LETTER},
@@ -4003,7 +4069,7 @@ static const pg_category_range unicode_categories[3302] =
};
/* table of Unicode codepoint ranges of Alphabetic characters */
-static const pg_unicode_range unicode_alphabetic[1141] =
+static const pg_unicode_range unicode_alphabetic[1179] =
{
{0x000041, 0x00005a},
{0x000061, 0x00007a},
@@ -4025,6 +4091,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x0002ec, 0x0002ec},
{0x0002ee, 0x0002ee},
{0x000345, 0x000345},
+ {0x000363, 0x00036f},
{0x000370, 0x000373},
{0x000374, 0x000374},
{0x000376, 0x000377},
@@ -4088,6 +4155,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x000860, 0x00086a},
{0x000870, 0x000887},
{0x000889, 0x00088e},
+ {0x000897, 0x000897},
{0x0008a0, 0x0008c8},
{0x0008c9, 0x0008c9},
{0x0008d4, 0x0008df},
@@ -4455,7 +4523,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x001c4d, 0x001c4f},
{0x001c5a, 0x001c77},
{0x001c78, 0x001c7d},
- {0x001c80, 0x001c88},
+ {0x001c80, 0x001c8a},
{0x001c90, 0x001cba},
{0x001cbd, 0x001cbf},
{0x001ce9, 0x001cec},
@@ -4468,7 +4536,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x001d78, 0x001d78},
{0x001d79, 0x001d9a},
{0x001d9b, 0x001dbf},
- {0x001de7, 0x001df4},
+ {0x001dd3, 0x001df4},
{0x001e00, 0x001f15},
{0x001f18, 0x001f1d},
{0x001f20, 0x001f45},
@@ -4575,10 +4643,10 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x00a788, 0x00a788},
{0x00a78b, 0x00a78e},
{0x00a78f, 0x00a78f},
- {0x00a790, 0x00a7ca},
+ {0x00a790, 0x00a7cd},
{0x00a7d0, 0x00a7d1},
{0x00a7d3, 0x00a7d3},
- {0x00a7d5, 0x00a7d9},
+ {0x00a7d5, 0x00a7dc},
{0x00a7f2, 0x00a7f4},
{0x00a7f5, 0x00a7f6},
{0x00a7f7, 0x00a7f7},
@@ -4743,6 +4811,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x0105a3, 0x0105b1},
{0x0105b3, 0x0105b9},
{0x0105bb, 0x0105bc},
+ {0x0105c0, 0x0105f3},
{0x010600, 0x010736},
{0x010740, 0x010755},
{0x010760, 0x010767},
@@ -4783,9 +4852,18 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x010cc0, 0x010cf2},
{0x010d00, 0x010d23},
{0x010d24, 0x010d27},
+ {0x010d4a, 0x010d4d},
+ {0x010d4e, 0x010d4e},
+ {0x010d4f, 0x010d4f},
+ {0x010d50, 0x010d65},
+ {0x010d69, 0x010d69},
+ {0x010d6f, 0x010d6f},
+ {0x010d70, 0x010d85},
{0x010e80, 0x010ea9},
{0x010eab, 0x010eac},
{0x010eb0, 0x010eb1},
+ {0x010ec2, 0x010ec4},
+ {0x010efc, 0x010efc},
{0x010f00, 0x010f1c},
{0x010f27, 0x010f27},
{0x010f30, 0x010f45},
@@ -4866,6 +4944,19 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x011357, 0x011357},
{0x01135d, 0x011361},
{0x011362, 0x011363},
+ {0x011380, 0x011389},
+ {0x01138b, 0x01138b},
+ {0x01138e, 0x01138e},
+ {0x011390, 0x0113b5},
+ {0x0113b7, 0x0113b7},
+ {0x0113b8, 0x0113ba},
+ {0x0113bb, 0x0113c0},
+ {0x0113c2, 0x0113c2},
+ {0x0113c5, 0x0113c5},
+ {0x0113c7, 0x0113ca},
+ {0x0113cc, 0x0113cd},
+ {0x0113d1, 0x0113d1},
+ {0x0113d3, 0x0113d3},
{0x011400, 0x011434},
{0x011435, 0x011437},
{0x011438, 0x01143f},
@@ -4908,7 +4999,9 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x0116b0, 0x0116b5},
{0x0116b8, 0x0116b8},
{0x011700, 0x01171a},
- {0x01171d, 0x01171f},
+ {0x01171d, 0x01171d},
+ {0x01171e, 0x01171e},
+ {0x01171f, 0x01171f},
{0x011720, 0x011721},
{0x011722, 0x011725},
{0x011726, 0x011726},
@@ -4956,6 +5049,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x011a97, 0x011a97},
{0x011a9d, 0x011a9d},
{0x011ab0, 0x011af8},
+ {0x011bc0, 0x011be0},
{0x011c00, 0x011c08},
{0x011c0a, 0x011c2e},
{0x011c2f, 0x011c2f},
@@ -5009,7 +5103,12 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x012f90, 0x012ff0},
{0x013000, 0x01342f},
{0x013441, 0x013446},
+ {0x013460, 0x0143fa},
{0x014400, 0x014646},
+ {0x016100, 0x01611d},
+ {0x01611e, 0x016129},
+ {0x01612a, 0x01612c},
+ {0x01612d, 0x01612e},
{0x016800, 0x016a38},
{0x016a40, 0x016a5e},
{0x016a70, 0x016abe},
@@ -5018,6 +5117,9 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x016b40, 0x016b43},
{0x016b63, 0x016b77},
{0x016b7d, 0x016b8f},
+ {0x016d40, 0x016d42},
+ {0x016d43, 0x016d6a},
+ {0x016d6b, 0x016d6c},
{0x016e40, 0x016e7f},
{0x016f00, 0x016f4a},
{0x016f4f, 0x016f4f},
@@ -5030,7 +5132,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x016ff0, 0x016ff1},
{0x017000, 0x0187f7},
{0x018800, 0x018cd5},
- {0x018d00, 0x018d08},
+ {0x018cff, 0x018d08},
{0x01aff0, 0x01aff3},
{0x01aff5, 0x01affb},
{0x01affd, 0x01affe},
@@ -5093,6 +5195,8 @@ static const pg_unicode_range unicode_alphabetic[1141] =
{0x01e2c0, 0x01e2eb},
{0x01e4d0, 0x01e4ea},
{0x01e4eb, 0x01e4eb},
+ {0x01e5d0, 0x01e5ed},
+ {0x01e5f0, 0x01e5f0},
{0x01e7e0, 0x01e7e6},
{0x01e7e8, 0x01e7eb},
{0x01e7ed, 0x01e7ee},
@@ -5149,7 +5253,7 @@ static const pg_unicode_range unicode_alphabetic[1141] =
};
/* table of Unicode codepoint ranges of Lowercase characters */
-static const pg_unicode_range unicode_lowercase[686] =
+static const pg_unicode_range unicode_lowercase[690] =
{
{0x000061, 0x00007a},
{0x0000aa, 0x0000aa},
@@ -5433,6 +5537,7 @@ static const pg_unicode_range unicode_lowercase[686] =
{0x0010fd, 0x0010ff},
{0x0013f8, 0x0013fd},
{0x001c80, 0x001c88},
+ {0x001c8a, 0x001c8a},
{0x001d00, 0x001d2b},
{0x001d2c, 0x001d6a},
{0x001d6b, 0x001d77},
@@ -5774,11 +5879,13 @@ static const pg_unicode_range unicode_lowercase[686] =
{0x00a7c3, 0x00a7c3},
{0x00a7c8, 0x00a7c8},
{0x00a7ca, 0x00a7ca},
+ {0x00a7cd, 0x00a7cd},
{0x00a7d1, 0x00a7d1},
{0x00a7d3, 0x00a7d3},
{0x00a7d5, 0x00a7d5},
{0x00a7d7, 0x00a7d7},
{0x00a7d9, 0x00a7d9},
+ {0x00a7db, 0x00a7db},
{0x00a7f2, 0x00a7f4},
{0x00a7f6, 0x00a7f6},
{0x00a7f8, 0x00a7f9},
@@ -5802,6 +5909,7 @@ static const pg_unicode_range unicode_lowercase[686] =
{0x010787, 0x0107b0},
{0x0107b2, 0x0107ba},
{0x010cc0, 0x010cf2},
+ {0x010d70, 0x010d85},
{0x0118c0, 0x0118df},
{0x016e60, 0x016e7f},
{0x01d41a, 0x01d433},
@@ -5840,7 +5948,7 @@ static const pg_unicode_range unicode_lowercase[686] =
};
/* table of Unicode codepoint ranges of Uppercase characters */
-static const pg_unicode_range unicode_uppercase[651] =
+static const pg_unicode_range unicode_uppercase[656] =
{
{0x000041, 0x00005a},
{0x0000c0, 0x0000d6},
@@ -6118,6 +6226,7 @@ static const pg_unicode_range unicode_uppercase[651] =
{0x0010c7, 0x0010c7},
{0x0010cd, 0x0010cd},
{0x0013a0, 0x0013f5},
+ {0x001c89, 0x001c89},
{0x001c90, 0x001cba},
{0x001cbd, 0x001cbf},
{0x001e00, 0x001e00},
@@ -6444,9 +6553,12 @@ static const pg_unicode_range unicode_uppercase[651] =
{0x00a7c2, 0x00a7c2},
{0x00a7c4, 0x00a7c7},
{0x00a7c9, 0x00a7c9},
+ {0x00a7cb, 0x00a7cc},
{0x00a7d0, 0x00a7d0},
{0x00a7d6, 0x00a7d6},
{0x00a7d8, 0x00a7d8},
+ {0x00a7da, 0x00a7da},
+ {0x00a7dc, 0x00a7dc},
{0x00a7f5, 0x00a7f5},
{0x00ff21, 0x00ff3a},
{0x010400, 0x010427},
@@ -6456,6 +6568,7 @@ static const pg_unicode_range unicode_uppercase[651] =
{0x01058c, 0x010592},
{0x010594, 0x010595},
{0x010c80, 0x010cb2},
+ {0x010d50, 0x010d65},
{0x0118a0, 0x0118bf},
{0x016e40, 0x016e5f},
{0x01d400, 0x01d419},
@@ -6496,7 +6609,7 @@ static const pg_unicode_range unicode_uppercase[651] =
};
/* table of Unicode codepoint ranges of Case_Ignorable characters */
-static const pg_unicode_range unicode_case_ignorable[491] =
+static const pg_unicode_range unicode_case_ignorable[506] =
{
{0x000027, 0x000027},
{0x00002e, 0x00002e},
@@ -6565,7 +6678,7 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x000859, 0x00085b},
{0x000888, 0x000888},
{0x000890, 0x000891},
- {0x000898, 0x00089f},
+ {0x000897, 0x00089f},
{0x0008c9, 0x0008c9},
{0x0008ca, 0x0008e1},
{0x0008e2, 0x0008e2},
@@ -6846,8 +6959,11 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x010a3f, 0x010a3f},
{0x010ae5, 0x010ae6},
{0x010d24, 0x010d27},
+ {0x010d4e, 0x010d4e},
+ {0x010d69, 0x010d6d},
+ {0x010d6f, 0x010d6f},
{0x010eab, 0x010eac},
- {0x010efd, 0x010eff},
+ {0x010efc, 0x010eff},
{0x010f46, 0x010f50},
{0x010f82, 0x010f85},
{0x011001, 0x011001},
@@ -6880,6 +6996,11 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x011340, 0x011340},
{0x011366, 0x01136c},
{0x011370, 0x011374},
+ {0x0113bb, 0x0113c0},
+ {0x0113ce, 0x0113ce},
+ {0x0113d0, 0x0113d0},
+ {0x0113d2, 0x0113d2},
+ {0x0113e1, 0x0113e2},
{0x011438, 0x01143f},
{0x011442, 0x011444},
{0x011446, 0x011446},
@@ -6899,7 +7020,8 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x0116ad, 0x0116ad},
{0x0116b0, 0x0116b5},
{0x0116b7, 0x0116b7},
- {0x01171d, 0x01171f},
+ {0x01171d, 0x01171d},
+ {0x01171f, 0x01171f},
{0x011722, 0x011725},
{0x011727, 0x01172b},
{0x01182f, 0x011837},
@@ -6938,12 +7060,17 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x011f36, 0x011f3a},
{0x011f40, 0x011f40},
{0x011f42, 0x011f42},
+ {0x011f5a, 0x011f5a},
{0x013430, 0x01343f},
{0x013440, 0x013440},
{0x013447, 0x013455},
+ {0x01611e, 0x016129},
+ {0x01612d, 0x01612f},
{0x016af0, 0x016af4},
{0x016b30, 0x016b36},
{0x016b40, 0x016b43},
+ {0x016d40, 0x016d42},
+ {0x016d6b, 0x016d6c},
{0x016f4f, 0x016f4f},
{0x016f8f, 0x016f92},
{0x016f93, 0x016f9f},
@@ -6982,6 +7109,7 @@ static const pg_unicode_range unicode_case_ignorable[491] =
{0x01e2ec, 0x01e2ef},
{0x01e4eb, 0x01e4eb},
{0x01e4ec, 0x01e4ef},
+ {0x01e5ee, 0x01e5ef},
{0x01e8d0, 0x01e8d6},
{0x01e944, 0x01e94a},
{0x01e94b, 0x01e94b},
diff --git a/src/include/common/unicode_east_asian_fw_table.h b/src/include/common/unicode_east_asian_fw_table.h
index dcd1f136eb7..db8bd0ad897 100644
--- a/src/include/common/unicode_east_asian_fw_table.h
+++ b/src/include/common/unicode_east_asian_fw_table.h
@@ -9,8 +9,10 @@ static const struct mbinterval east_asian_fw[] = {
{0x23F3, 0x23F3},
{0x25FD, 0x25FE},
{0x2614, 0x2615},
+ {0x2630, 0x2637},
{0x2648, 0x2653},
{0x267F, 0x267F},
+ {0x268A, 0x268F},
{0x2693, 0x2693},
{0x26A1, 0x26A1},
{0x26AA, 0x26AB},
@@ -44,11 +46,10 @@ static const struct mbinterval east_asian_fw[] = {
{0x3099, 0x30FF},
{0x3105, 0x312F},
{0x3131, 0x318E},
- {0x3190, 0x31E3},
+ {0x3190, 0x31E5},
{0x31EF, 0x321E},
{0x3220, 0x3247},
- {0x3250, 0x4DBF},
- {0x4E00, 0xA48C},
+ {0x3250, 0xA48C},
{0xA490, 0xA4C6},
{0xA960, 0xA97C},
{0xAC00, 0xD7A3},
@@ -63,7 +64,7 @@ static const struct mbinterval east_asian_fw[] = {
{0x16FF0, 0x16FF1},
{0x17000, 0x187F7},
{0x18800, 0x18CD5},
- {0x18D00, 0x18D08},
+ {0x18CFF, 0x18D08},
{0x1AFF0, 0x1AFF3},
{0x1AFF5, 0x1AFFB},
{0x1AFFD, 0x1AFFE},
@@ -73,6 +74,8 @@ static const struct mbinterval east_asian_fw[] = {
{0x1B155, 0x1B155},
{0x1B164, 0x1B167},
{0x1B170, 0x1B2FB},
+ {0x1D300, 0x1D356},
+ {0x1D360, 0x1D376},
{0x1F004, 0x1F004},
{0x1F0CF, 0x1F0CF},
{0x1F18E, 0x1F18E},
@@ -113,11 +116,10 @@ static const struct mbinterval east_asian_fw[] = {
{0x1F93C, 0x1F945},
{0x1F947, 0x1F9FF},
{0x1FA70, 0x1FA7C},
- {0x1FA80, 0x1FA88},
- {0x1FA90, 0x1FABD},
- {0x1FABF, 0x1FAC5},
- {0x1FACE, 0x1FADB},
- {0x1FAE0, 0x1FAE8},
+ {0x1FA80, 0x1FA89},
+ {0x1FA8F, 0x1FAC6},
+ {0x1FACE, 0x1FADC},
+ {0x1FADF, 0x1FAE9},
{0x1FAF0, 0x1FAF8},
{0x20000, 0x2FFFD},
{0x30000, 0x3FFFD},
diff --git a/src/include/common/unicode_nonspacing_table.h b/src/include/common/unicode_nonspacing_table.h
index 8d00e127fcd..d67f5b3f281 100644
--- a/src/include/common/unicode_nonspacing_table.h
+++ b/src/include/common/unicode_nonspacing_table.h
@@ -210,8 +210,9 @@ static const struct mbinterval nonspacing[] = {
{0x10A38, 0x10A3F},
{0x10AE5, 0x10AE6},
{0x10D24, 0x10D27},
+ {0x10D69, 0x10D6D},
{0x10EAB, 0x10EAC},
- {0x10EFD, 0x10EFF},
+ {0x10EFC, 0x10EFF},
{0x10F46, 0x10F50},
{0x10F82, 0x10F85},
{0x11001, 0x11001},
@@ -242,6 +243,11 @@ static const struct mbinterval nonspacing[] = {
{0x1133B, 0x1133C},
{0x11340, 0x11340},
{0x11366, 0x11374},
+ {0x113BB, 0x113C0},
+ {0x113CE, 0x113CE},
+ {0x113D0, 0x113D0},
+ {0x113D2, 0x113D2},
+ {0x113E1, 0x113E2},
{0x11438, 0x1143F},
{0x11442, 0x11444},
{0x11446, 0x11446},
@@ -261,7 +267,8 @@ static const struct mbinterval nonspacing[] = {
{0x116AD, 0x116AD},
{0x116B0, 0x116B5},
{0x116B7, 0x116B7},
- {0x1171D, 0x1171F},
+ {0x1171D, 0x1171D},
+ {0x1171F, 0x1171F},
{0x11722, 0x11725},
{0x11727, 0x1172B},
{0x1182F, 0x11837},
@@ -295,15 +302,19 @@ static const struct mbinterval nonspacing[] = {
{0x11F36, 0x11F3A},
{0x11F40, 0x11F40},
{0x11F42, 0x11F42},
+ {0x11F5A, 0x11F5A},
{0x13430, 0x13440},
{0x13447, 0x13455},
+ {0x1611E, 0x16129},
+ {0x1612D, 0x1612F},
{0x16AF0, 0x16AF4},
{0x16B30, 0x16B36},
{0x16F4F, 0x16F4F},
{0x16F8F, 0x16F92},
{0x16FE4, 0x16FE4},
{0x1BC9D, 0x1BC9E},
- {0x1BCA0, 0x1CF46},
+ {0x1BCA0, 0x1BCA3},
+ {0x1CF00, 0x1CF46},
{0x1D167, 0x1D169},
{0x1D173, 0x1D182},
{0x1D185, 0x1D18B},
@@ -320,6 +331,7 @@ static const struct mbinterval nonspacing[] = {
{0x1E2AE, 0x1E2AE},
{0x1E2EC, 0x1E2EF},
{0x1E4EC, 0x1E4EF},
+ {0x1E5EE, 0x1E5EF},
{0x1E8D0, 0x1E8D6},
{0x1E944, 0x1E94A},
{0xE0001, 0xE01EF},
diff --git a/src/include/common/unicode_norm_table.h b/src/include/common/unicode_norm_table.h
index 7aff822b7cd..6c983135996 100644
--- a/src/include/common/unicode_norm_table.h
+++ b/src/include/common/unicode_norm_table.h
@@ -36,7 +36,7 @@ typedef struct
#define DECOMPOSITION_IS_COMPAT(x) (((x)->dec_size_flags & DECOMP_COMPAT) != 0)
/* Table of Unicode codepoints and their decompositions */
-static const pg_unicode_decomposition UnicodeDecompMain[6775] =
+static const pg_unicode_decomposition UnicodeDecompMain[6843] =
{
{0x00A0, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0020},
{0x00A8, 0, 2 | DECOMP_COMPAT, 0},
@@ -727,6 +727,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x0859, 220, 0, 0},
{0x085A, 220, 0, 0},
{0x085B, 220, 0, 0},
+ {0x0897, 230, 0, 0},
{0x0898, 230, 0, 0},
{0x0899, 220, 0, 0},
{0x089A, 220, 0, 0},
@@ -4636,6 +4637,8 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x10378, 230, 0, 0},
{0x10379, 230, 0, 0},
{0x1037A, 230, 0, 0},
+ {0x105C9, 0, 2, 4776},
+ {0x105E4, 0, 2, 4778},
{0x10781, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x02D0},
{0x10782, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x02D1},
{0x10783, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x00E6},
@@ -4662,18 +4665,18 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x10799, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x02AA},
{0x1079A, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x02AB},
{0x1079B, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x026C},
- {0x1079C, 0, 1 | DECOMP_COMPAT, 4776},
+ {0x1079C, 0, 1 | DECOMP_COMPAT, 4780},
{0x1079D, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0xA78E},
{0x1079E, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x026E},
- {0x1079F, 0, 1 | DECOMP_COMPAT, 4777},
+ {0x1079F, 0, 1 | DECOMP_COMPAT, 4781},
{0x107A0, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x028E},
- {0x107A1, 0, 1 | DECOMP_COMPAT, 4778},
+ {0x107A1, 0, 1 | DECOMP_COMPAT, 4782},
{0x107A2, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x00F8},
{0x107A3, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0276},
{0x107A4, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0277},
{0x107A5, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0071},
{0x107A6, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x027A},
- {0x107A7, 0, 1 | DECOMP_COMPAT, 4779},
+ {0x107A7, 0, 1 | DECOMP_COMPAT, 4783},
{0x107A8, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x027D},
{0x107A9, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x027E},
{0x107AA, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0280},
@@ -4690,8 +4693,8 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x107B6, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x01C0},
{0x107B7, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x01C1},
{0x107B8, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x01C2},
- {0x107B9, 0, 1 | DECOMP_COMPAT, 4780},
- {0x107BA, 0, 1 | DECOMP_COMPAT, 4781},
+ {0x107B9, 0, 1 | DECOMP_COMPAT, 4784},
+ {0x107BA, 0, 1 | DECOMP_COMPAT, 4785},
{0x10A0D, 220, 0, 0},
{0x10A0F, 230, 0, 0},
{0x10A38, 230, 0, 0},
@@ -4704,6 +4707,11 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x10D25, 230, 0, 0},
{0x10D26, 230, 0, 0},
{0x10D27, 230, 0, 0},
+ {0x10D69, 230, 0, 0},
+ {0x10D6A, 230, 0, 0},
+ {0x10D6B, 230, 0, 0},
+ {0x10D6C, 230, 0, 0},
+ {0x10D6D, 230, 0, 0},
{0x10EAB, 230, 0, 0},
{0x10EAC, 230, 0, 0},
{0x10EFD, 220, 0, 0},
@@ -4727,16 +4735,16 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x11046, 9, 0, 0},
{0x11070, 9, 0, 0},
{0x1107F, 9, 0, 0},
- {0x1109A, 0, 2, 4782},
- {0x1109C, 0, 2, 4784},
- {0x110AB, 0, 2, 4786},
+ {0x1109A, 0, 2, 4786},
+ {0x1109C, 0, 2, 4788},
+ {0x110AB, 0, 2, 4790},
{0x110B9, 9, 0, 0},
{0x110BA, 7, 0, 0},
{0x11100, 230, 0, 0},
{0x11101, 230, 0, 0},
{0x11102, 230, 0, 0},
- {0x1112E, 0, 2, 4788},
- {0x1112F, 0, 2, 4790},
+ {0x1112E, 0, 2, 4792},
+ {0x1112F, 0, 2, 4794},
{0x11133, 9, 0, 0},
{0x11134, 9, 0, 0},
{0x11173, 7, 0, 0},
@@ -4748,8 +4756,8 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x112EA, 9, 0, 0},
{0x1133B, 7, 0, 0},
{0x1133C, 7, 0, 0},
- {0x1134B, 0, 2, 4792},
- {0x1134C, 0, 2, 4794},
+ {0x1134B, 0, 2, 4796},
+ {0x1134C, 0, 2, 4798},
{0x1134D, 9, 0, 0},
{0x11366, 230, 0, 0},
{0x11367, 230, 0, 0},
@@ -4763,16 +4771,26 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x11372, 230, 0, 0},
{0x11373, 230, 0, 0},
{0x11374, 230, 0, 0},
+ {0x11383, 0, 2, 4800},
+ {0x11385, 0, 2, 4802},
+ {0x1138E, 0, 2, 4804},
+ {0x11391, 0, 2, 4806},
+ {0x113C5, 0, 2, 4808},
+ {0x113C7, 0, 2, 4810},
+ {0x113C8, 0, 2, 4812},
+ {0x113CE, 9, 0, 0},
+ {0x113CF, 9, 0, 0},
+ {0x113D0, 9, 0, 0},
{0x11442, 9, 0, 0},
{0x11446, 7, 0, 0},
{0x1145E, 230, 0, 0},
- {0x114BB, 0, 2, 4796},
- {0x114BC, 0, 2, 4798},
- {0x114BE, 0, 2, 4800},
+ {0x114BB, 0, 2, 4814},
+ {0x114BC, 0, 2, 4816},
+ {0x114BE, 0, 2, 4818},
{0x114C2, 9, 0, 0},
{0x114C3, 7, 0, 0},
- {0x115BA, 0, 2, 4802},
- {0x115BB, 0, 2, 4804},
+ {0x115BA, 0, 2, 4820},
+ {0x115BB, 0, 2, 4822},
{0x115BF, 9, 0, 0},
{0x115C0, 7, 0, 0},
{0x1163F, 9, 0, 0},
@@ -4781,7 +4799,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1172B, 9, 0, 0},
{0x11839, 9, 0, 0},
{0x1183A, 7, 0, 0},
- {0x11938, 0, 2, 4806},
+ {0x11938, 0, 2, 4824},
{0x1193D, 9, 0, 0},
{0x1193E, 9, 0, 0},
{0x11943, 7, 0, 0},
@@ -4796,6 +4814,15 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x11D97, 9, 0, 0},
{0x11F41, 9, 0, 0},
{0x11F42, 9, 0, 0},
+ {0x16121, 0, 2, 4826},
+ {0x16122, 0, 2, 4828},
+ {0x16123, 0, 2, 4830},
+ {0x16124, 0, 2, 4832},
+ {0x16125, 0, 2, 4834},
+ {0x16126, 0, 2, 4836},
+ {0x16127, 0, 2, 4838},
+ {0x16128, 0, 2, 4840},
+ {0x1612F, 9, 0, 0},
{0x16AF0, 1, 0, 0},
{0x16AF1, 1, 0, 0},
{0x16AF2, 1, 0, 0},
@@ -4808,16 +4835,55 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x16B34, 230, 0, 0},
{0x16B35, 230, 0, 0},
{0x16B36, 230, 0, 0},
+ {0x16D68, 0, 2, 4842},
+ {0x16D69, 0, 2, 4844},
+ {0x16D6A, 0, 2, 4846},
{0x16FF0, 6, 0, 0},
{0x16FF1, 6, 0, 0},
{0x1BC9E, 1, 0, 0},
- {0x1D15E, 0, 2 | DECOMP_NO_COMPOSE, 4808}, /* in exclusion list */
- {0x1D15F, 0, 2 | DECOMP_NO_COMPOSE, 4810}, /* in exclusion list */
- {0x1D160, 0, 2 | DECOMP_NO_COMPOSE, 4812}, /* in exclusion list */
- {0x1D161, 0, 2 | DECOMP_NO_COMPOSE, 4814}, /* in exclusion list */
- {0x1D162, 0, 2 | DECOMP_NO_COMPOSE, 4816}, /* in exclusion list */
- {0x1D163, 0, 2 | DECOMP_NO_COMPOSE, 4818}, /* in exclusion list */
- {0x1D164, 0, 2 | DECOMP_NO_COMPOSE, 4820}, /* in exclusion list */
+ {0x1CCD6, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0041},
+ {0x1CCD7, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0042},
+ {0x1CCD8, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0043},
+ {0x1CCD9, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0044},
+ {0x1CCDA, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0045},
+ {0x1CCDB, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0046},
+ {0x1CCDC, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0047},
+ {0x1CCDD, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0048},
+ {0x1CCDE, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0049},
+ {0x1CCDF, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004A},
+ {0x1CCE0, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004B},
+ {0x1CCE1, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004C},
+ {0x1CCE2, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004D},
+ {0x1CCE3, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004E},
+ {0x1CCE4, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x004F},
+ {0x1CCE5, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0050},
+ {0x1CCE6, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0051},
+ {0x1CCE7, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0052},
+ {0x1CCE8, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0053},
+ {0x1CCE9, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0054},
+ {0x1CCEA, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0055},
+ {0x1CCEB, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0056},
+ {0x1CCEC, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0057},
+ {0x1CCED, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0058},
+ {0x1CCEE, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0059},
+ {0x1CCEF, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x005A},
+ {0x1CCF0, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0030},
+ {0x1CCF1, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0031},
+ {0x1CCF2, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0032},
+ {0x1CCF3, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0033},
+ {0x1CCF4, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0034},
+ {0x1CCF5, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0035},
+ {0x1CCF6, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0036},
+ {0x1CCF7, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0037},
+ {0x1CCF8, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0038},
+ {0x1CCF9, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0039},
+ {0x1D15E, 0, 2 | DECOMP_NO_COMPOSE, 4848}, /* in exclusion list */
+ {0x1D15F, 0, 2 | DECOMP_NO_COMPOSE, 4850}, /* in exclusion list */
+ {0x1D160, 0, 2 | DECOMP_NO_COMPOSE, 4852}, /* in exclusion list */
+ {0x1D161, 0, 2 | DECOMP_NO_COMPOSE, 4854}, /* in exclusion list */
+ {0x1D162, 0, 2 | DECOMP_NO_COMPOSE, 4856}, /* in exclusion list */
+ {0x1D163, 0, 2 | DECOMP_NO_COMPOSE, 4858}, /* in exclusion list */
+ {0x1D164, 0, 2 | DECOMP_NO_COMPOSE, 4860}, /* in exclusion list */
{0x1D165, 216, 0, 0},
{0x1D166, 216, 0, 0},
{0x1D167, 1, 0, 0},
@@ -4848,12 +4914,12 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1D1AB, 230, 0, 0},
{0x1D1AC, 230, 0, 0},
{0x1D1AD, 230, 0, 0},
- {0x1D1BB, 0, 2 | DECOMP_NO_COMPOSE, 4822}, /* in exclusion list */
- {0x1D1BC, 0, 2 | DECOMP_NO_COMPOSE, 4824}, /* in exclusion list */
- {0x1D1BD, 0, 2 | DECOMP_NO_COMPOSE, 4826}, /* in exclusion list */
- {0x1D1BE, 0, 2 | DECOMP_NO_COMPOSE, 4828}, /* in exclusion list */
- {0x1D1BF, 0, 2 | DECOMP_NO_COMPOSE, 4830}, /* in exclusion list */
- {0x1D1C0, 0, 2 | DECOMP_NO_COMPOSE, 4832}, /* in exclusion list */
+ {0x1D1BB, 0, 2 | DECOMP_NO_COMPOSE, 4862}, /* in exclusion list */
+ {0x1D1BC, 0, 2 | DECOMP_NO_COMPOSE, 4864}, /* in exclusion list */
+ {0x1D1BD, 0, 2 | DECOMP_NO_COMPOSE, 4866}, /* in exclusion list */
+ {0x1D1BE, 0, 2 | DECOMP_NO_COMPOSE, 4868}, /* in exclusion list */
+ {0x1D1BF, 0, 2 | DECOMP_NO_COMPOSE, 4870}, /* in exclusion list */
+ {0x1D1C0, 0, 2 | DECOMP_NO_COMPOSE, 4872}, /* in exclusion list */
{0x1D242, 230, 0, 0},
{0x1D243, 230, 0, 0},
{0x1D244, 230, 0, 0},
@@ -5970,6 +6036,8 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1E4ED, 232, 0, 0},
{0x1E4EE, 220, 0, 0},
{0x1E4EF, 230, 0, 0},
+ {0x1E5EE, 230, 0, 0},
+ {0x1E5EF, 220, 0, 0},
{0x1E8D0, 220, 0, 0},
{0x1E8D1, 220, 0, 0},
{0x1E8D2, 220, 0, 0},
@@ -6125,48 +6193,48 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1EEB9, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0636},
{0x1EEBA, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0638},
{0x1EEBB, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x063A},
- {0x1F100, 0, 2 | DECOMP_COMPAT, 4834},
- {0x1F101, 0, 2 | DECOMP_COMPAT, 4836},
- {0x1F102, 0, 2 | DECOMP_COMPAT, 4838},
- {0x1F103, 0, 2 | DECOMP_COMPAT, 4840},
- {0x1F104, 0, 2 | DECOMP_COMPAT, 4842},
- {0x1F105, 0, 2 | DECOMP_COMPAT, 4844},
- {0x1F106, 0, 2 | DECOMP_COMPAT, 4846},
- {0x1F107, 0, 2 | DECOMP_COMPAT, 4848},
- {0x1F108, 0, 2 | DECOMP_COMPAT, 4850},
- {0x1F109, 0, 2 | DECOMP_COMPAT, 4852},
- {0x1F10A, 0, 2 | DECOMP_COMPAT, 4854},
- {0x1F110, 0, 3 | DECOMP_COMPAT, 4856},
- {0x1F111, 0, 3 | DECOMP_COMPAT, 4859},
- {0x1F112, 0, 3 | DECOMP_COMPAT, 4862},
- {0x1F113, 0, 3 | DECOMP_COMPAT, 4865},
- {0x1F114, 0, 3 | DECOMP_COMPAT, 4868},
- {0x1F115, 0, 3 | DECOMP_COMPAT, 4871},
- {0x1F116, 0, 3 | DECOMP_COMPAT, 4874},
- {0x1F117, 0, 3 | DECOMP_COMPAT, 4877},
- {0x1F118, 0, 3 | DECOMP_COMPAT, 4880},
- {0x1F119, 0, 3 | DECOMP_COMPAT, 4883},
- {0x1F11A, 0, 3 | DECOMP_COMPAT, 4886},
- {0x1F11B, 0, 3 | DECOMP_COMPAT, 4889},
- {0x1F11C, 0, 3 | DECOMP_COMPAT, 4892},
- {0x1F11D, 0, 3 | DECOMP_COMPAT, 4895},
- {0x1F11E, 0, 3 | DECOMP_COMPAT, 4898},
- {0x1F11F, 0, 3 | DECOMP_COMPAT, 4901},
- {0x1F120, 0, 3 | DECOMP_COMPAT, 4904},
- {0x1F121, 0, 3 | DECOMP_COMPAT, 4907},
- {0x1F122, 0, 3 | DECOMP_COMPAT, 4910},
- {0x1F123, 0, 3 | DECOMP_COMPAT, 4913},
- {0x1F124, 0, 3 | DECOMP_COMPAT, 4916},
- {0x1F125, 0, 3 | DECOMP_COMPAT, 4919},
- {0x1F126, 0, 3 | DECOMP_COMPAT, 4922},
- {0x1F127, 0, 3 | DECOMP_COMPAT, 4925},
- {0x1F128, 0, 3 | DECOMP_COMPAT, 4928},
- {0x1F129, 0, 3 | DECOMP_COMPAT, 4931},
- {0x1F12A, 0, 3 | DECOMP_COMPAT, 4934},
+ {0x1F100, 0, 2 | DECOMP_COMPAT, 4874},
+ {0x1F101, 0, 2 | DECOMP_COMPAT, 4876},
+ {0x1F102, 0, 2 | DECOMP_COMPAT, 4878},
+ {0x1F103, 0, 2 | DECOMP_COMPAT, 4880},
+ {0x1F104, 0, 2 | DECOMP_COMPAT, 4882},
+ {0x1F105, 0, 2 | DECOMP_COMPAT, 4884},
+ {0x1F106, 0, 2 | DECOMP_COMPAT, 4886},
+ {0x1F107, 0, 2 | DECOMP_COMPAT, 4888},
+ {0x1F108, 0, 2 | DECOMP_COMPAT, 4890},
+ {0x1F109, 0, 2 | DECOMP_COMPAT, 4892},
+ {0x1F10A, 0, 2 | DECOMP_COMPAT, 4894},
+ {0x1F110, 0, 3 | DECOMP_COMPAT, 4896},
+ {0x1F111, 0, 3 | DECOMP_COMPAT, 4899},
+ {0x1F112, 0, 3 | DECOMP_COMPAT, 4902},
+ {0x1F113, 0, 3 | DECOMP_COMPAT, 4905},
+ {0x1F114, 0, 3 | DECOMP_COMPAT, 4908},
+ {0x1F115, 0, 3 | DECOMP_COMPAT, 4911},
+ {0x1F116, 0, 3 | DECOMP_COMPAT, 4914},
+ {0x1F117, 0, 3 | DECOMP_COMPAT, 4917},
+ {0x1F118, 0, 3 | DECOMP_COMPAT, 4920},
+ {0x1F119, 0, 3 | DECOMP_COMPAT, 4923},
+ {0x1F11A, 0, 3 | DECOMP_COMPAT, 4926},
+ {0x1F11B, 0, 3 | DECOMP_COMPAT, 4929},
+ {0x1F11C, 0, 3 | DECOMP_COMPAT, 4932},
+ {0x1F11D, 0, 3 | DECOMP_COMPAT, 4935},
+ {0x1F11E, 0, 3 | DECOMP_COMPAT, 4938},
+ {0x1F11F, 0, 3 | DECOMP_COMPAT, 4941},
+ {0x1F120, 0, 3 | DECOMP_COMPAT, 4944},
+ {0x1F121, 0, 3 | DECOMP_COMPAT, 4947},
+ {0x1F122, 0, 3 | DECOMP_COMPAT, 4950},
+ {0x1F123, 0, 3 | DECOMP_COMPAT, 4953},
+ {0x1F124, 0, 3 | DECOMP_COMPAT, 4956},
+ {0x1F125, 0, 3 | DECOMP_COMPAT, 4959},
+ {0x1F126, 0, 3 | DECOMP_COMPAT, 4962},
+ {0x1F127, 0, 3 | DECOMP_COMPAT, 4965},
+ {0x1F128, 0, 3 | DECOMP_COMPAT, 4968},
+ {0x1F129, 0, 3 | DECOMP_COMPAT, 4971},
+ {0x1F12A, 0, 3 | DECOMP_COMPAT, 4974},
{0x1F12B, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0043},
{0x1F12C, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0052},
- {0x1F12D, 0, 2 | DECOMP_COMPAT, 4937},
- {0x1F12E, 0, 2 | DECOMP_COMPAT, 4939},
+ {0x1F12D, 0, 2 | DECOMP_COMPAT, 4977},
+ {0x1F12E, 0, 2 | DECOMP_COMPAT, 4979},
{0x1F130, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0041},
{0x1F131, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0042},
{0x1F132, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0043},
@@ -6193,18 +6261,18 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1F147, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0058},
{0x1F148, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0059},
{0x1F149, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x005A},
- {0x1F14A, 0, 2 | DECOMP_COMPAT, 4941},
- {0x1F14B, 0, 2 | DECOMP_COMPAT, 4943},
- {0x1F14C, 0, 2 | DECOMP_COMPAT, 4945},
- {0x1F14D, 0, 2 | DECOMP_COMPAT, 4947},
- {0x1F14E, 0, 3 | DECOMP_COMPAT, 4949},
- {0x1F14F, 0, 2 | DECOMP_COMPAT, 4952},
- {0x1F16A, 0, 2 | DECOMP_COMPAT, 4954},
- {0x1F16B, 0, 2 | DECOMP_COMPAT, 4956},
- {0x1F16C, 0, 2 | DECOMP_COMPAT, 4958},
- {0x1F190, 0, 2 | DECOMP_COMPAT, 4960},
- {0x1F200, 0, 2 | DECOMP_COMPAT, 4962},
- {0x1F201, 0, 2 | DECOMP_COMPAT, 4964},
+ {0x1F14A, 0, 2 | DECOMP_COMPAT, 4981},
+ {0x1F14B, 0, 2 | DECOMP_COMPAT, 4983},
+ {0x1F14C, 0, 2 | DECOMP_COMPAT, 4985},
+ {0x1F14D, 0, 2 | DECOMP_COMPAT, 4987},
+ {0x1F14E, 0, 3 | DECOMP_COMPAT, 4989},
+ {0x1F14F, 0, 2 | DECOMP_COMPAT, 4992},
+ {0x1F16A, 0, 2 | DECOMP_COMPAT, 4994},
+ {0x1F16B, 0, 2 | DECOMP_COMPAT, 4996},
+ {0x1F16C, 0, 2 | DECOMP_COMPAT, 4998},
+ {0x1F190, 0, 2 | DECOMP_COMPAT, 5000},
+ {0x1F200, 0, 2 | DECOMP_COMPAT, 5002},
+ {0x1F201, 0, 2 | DECOMP_COMPAT, 5004},
{0x1F202, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x30B5},
{0x1F210, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x624B},
{0x1F211, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x5B57},
@@ -6250,15 +6318,15 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x1F239, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x5272},
{0x1F23A, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x55B6},
{0x1F23B, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x914D},
- {0x1F240, 0, 3 | DECOMP_COMPAT, 4966},
- {0x1F241, 0, 3 | DECOMP_COMPAT, 4969},
- {0x1F242, 0, 3 | DECOMP_COMPAT, 4972},
- {0x1F243, 0, 3 | DECOMP_COMPAT, 4975},
- {0x1F244, 0, 3 | DECOMP_COMPAT, 4978},
- {0x1F245, 0, 3 | DECOMP_COMPAT, 4981},
- {0x1F246, 0, 3 | DECOMP_COMPAT, 4984},
- {0x1F247, 0, 3 | DECOMP_COMPAT, 4987},
- {0x1F248, 0, 3 | DECOMP_COMPAT, 4990},
+ {0x1F240, 0, 3 | DECOMP_COMPAT, 5006},
+ {0x1F241, 0, 3 | DECOMP_COMPAT, 5009},
+ {0x1F242, 0, 3 | DECOMP_COMPAT, 5012},
+ {0x1F243, 0, 3 | DECOMP_COMPAT, 5015},
+ {0x1F244, 0, 3 | DECOMP_COMPAT, 5018},
+ {0x1F245, 0, 3 | DECOMP_COMPAT, 5021},
+ {0x1F246, 0, 3 | DECOMP_COMPAT, 5024},
+ {0x1F247, 0, 3 | DECOMP_COMPAT, 5027},
+ {0x1F248, 0, 3 | DECOMP_COMPAT, 5030},
{0x1F250, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x5F97},
{0x1F251, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x53EF},
{0x1FBF0, 0, 1 | DECOMP_COMPAT | DECOMP_INLINE, 0x0030},
@@ -6274,7 +6342,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F800, 0, 1 | DECOMP_INLINE, 0x4E3D},
{0x2F801, 0, 1 | DECOMP_INLINE, 0x4E38},
{0x2F802, 0, 1 | DECOMP_INLINE, 0x4E41},
- {0x2F803, 0, 1, 4993},
+ {0x2F803, 0, 1, 5033},
{0x2F804, 0, 1 | DECOMP_INLINE, 0x4F60},
{0x2F805, 0, 1 | DECOMP_INLINE, 0x4FAE},
{0x2F806, 0, 1 | DECOMP_INLINE, 0x4FBB},
@@ -6284,22 +6352,22 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F80A, 0, 1 | DECOMP_INLINE, 0x50E7},
{0x2F80B, 0, 1 | DECOMP_INLINE, 0x50CF},
{0x2F80C, 0, 1 | DECOMP_INLINE, 0x349E},
- {0x2F80D, 0, 1, 4994},
+ {0x2F80D, 0, 1, 5034},
{0x2F80E, 0, 1 | DECOMP_INLINE, 0x514D},
{0x2F80F, 0, 1 | DECOMP_INLINE, 0x5154},
{0x2F810, 0, 1 | DECOMP_INLINE, 0x5164},
{0x2F811, 0, 1 | DECOMP_INLINE, 0x5177},
- {0x2F812, 0, 1, 4995},
+ {0x2F812, 0, 1, 5035},
{0x2F813, 0, 1 | DECOMP_INLINE, 0x34B9},
{0x2F814, 0, 1 | DECOMP_INLINE, 0x5167},
{0x2F815, 0, 1 | DECOMP_INLINE, 0x518D},
- {0x2F816, 0, 1, 4996},
+ {0x2F816, 0, 1, 5036},
{0x2F817, 0, 1 | DECOMP_INLINE, 0x5197},
{0x2F818, 0, 1 | DECOMP_INLINE, 0x51A4},
{0x2F819, 0, 1 | DECOMP_INLINE, 0x4ECC},
{0x2F81A, 0, 1 | DECOMP_INLINE, 0x51AC},
{0x2F81B, 0, 1 | DECOMP_INLINE, 0x51B5},
- {0x2F81C, 0, 1, 4997},
+ {0x2F81C, 0, 1, 5037},
{0x2F81D, 0, 1 | DECOMP_INLINE, 0x51F5},
{0x2F81E, 0, 1 | DECOMP_INLINE, 0x5203},
{0x2F81F, 0, 1 | DECOMP_INLINE, 0x34DF},
@@ -6323,11 +6391,11 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F831, 0, 1 | DECOMP_INLINE, 0x537F},
{0x2F832, 0, 1 | DECOMP_INLINE, 0x537F},
{0x2F833, 0, 1 | DECOMP_INLINE, 0x537F},
- {0x2F834, 0, 1, 4998},
+ {0x2F834, 0, 1, 5038},
{0x2F835, 0, 1 | DECOMP_INLINE, 0x7070},
{0x2F836, 0, 1 | DECOMP_INLINE, 0x53CA},
{0x2F837, 0, 1 | DECOMP_INLINE, 0x53DF},
- {0x2F838, 0, 1, 4999},
+ {0x2F838, 0, 1, 5039},
{0x2F839, 0, 1 | DECOMP_INLINE, 0x53EB},
{0x2F83A, 0, 1 | DECOMP_INLINE, 0x53F1},
{0x2F83B, 0, 1 | DECOMP_INLINE, 0x5406},
@@ -6360,15 +6428,15 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F856, 0, 1 | DECOMP_INLINE, 0x5832},
{0x2F857, 0, 1 | DECOMP_INLINE, 0x5831},
{0x2F858, 0, 1 | DECOMP_INLINE, 0x58AC},
- {0x2F859, 0, 1, 5000},
+ {0x2F859, 0, 1, 5040},
{0x2F85A, 0, 1 | DECOMP_INLINE, 0x58F2},
{0x2F85B, 0, 1 | DECOMP_INLINE, 0x58F7},
{0x2F85C, 0, 1 | DECOMP_INLINE, 0x5906},
{0x2F85D, 0, 1 | DECOMP_INLINE, 0x591A},
{0x2F85E, 0, 1 | DECOMP_INLINE, 0x5922},
{0x2F85F, 0, 1 | DECOMP_INLINE, 0x5962},
- {0x2F860, 0, 1, 5001},
- {0x2F861, 0, 1, 5002},
+ {0x2F860, 0, 1, 5041},
+ {0x2F861, 0, 1, 5042},
{0x2F862, 0, 1 | DECOMP_INLINE, 0x59EC},
{0x2F863, 0, 1 | DECOMP_INLINE, 0x5A1B},
{0x2F864, 0, 1 | DECOMP_INLINE, 0x5A27},
@@ -6379,12 +6447,12 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F869, 0, 1 | DECOMP_INLINE, 0x5B08},
{0x2F86A, 0, 1 | DECOMP_INLINE, 0x5B3E},
{0x2F86B, 0, 1 | DECOMP_INLINE, 0x5B3E},
- {0x2F86C, 0, 1, 5003},
+ {0x2F86C, 0, 1, 5043},
{0x2F86D, 0, 1 | DECOMP_INLINE, 0x5BC3},
{0x2F86E, 0, 1 | DECOMP_INLINE, 0x5BD8},
{0x2F86F, 0, 1 | DECOMP_INLINE, 0x5BE7},
{0x2F870, 0, 1 | DECOMP_INLINE, 0x5BF3},
- {0x2F871, 0, 1, 5004},
+ {0x2F871, 0, 1, 5044},
{0x2F872, 0, 1 | DECOMP_INLINE, 0x5BFF},
{0x2F873, 0, 1 | DECOMP_INLINE, 0x5C06},
{0x2F874, 0, 1 | DECOMP_INLINE, 0x5F53},
@@ -6394,9 +6462,9 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F878, 0, 1 | DECOMP_INLINE, 0x5C6E},
{0x2F879, 0, 1 | DECOMP_INLINE, 0x5CC0},
{0x2F87A, 0, 1 | DECOMP_INLINE, 0x5C8D},
- {0x2F87B, 0, 1, 5005},
+ {0x2F87B, 0, 1, 5045},
{0x2F87C, 0, 1 | DECOMP_INLINE, 0x5D43},
- {0x2F87D, 0, 1, 5006},
+ {0x2F87D, 0, 1, 5046},
{0x2F87E, 0, 1 | DECOMP_INLINE, 0x5D6E},
{0x2F87F, 0, 1 | DECOMP_INLINE, 0x5D6B},
{0x2F880, 0, 1 | DECOMP_INLINE, 0x5D7C},
@@ -6408,22 +6476,22 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F886, 0, 1 | DECOMP_INLINE, 0x5E3D},
{0x2F887, 0, 1 | DECOMP_INLINE, 0x5E69},
{0x2F888, 0, 1 | DECOMP_INLINE, 0x3862},
- {0x2F889, 0, 1, 5007},
+ {0x2F889, 0, 1, 5047},
{0x2F88A, 0, 1 | DECOMP_INLINE, 0x387C},
{0x2F88B, 0, 1 | DECOMP_INLINE, 0x5EB0},
{0x2F88C, 0, 1 | DECOMP_INLINE, 0x5EB3},
{0x2F88D, 0, 1 | DECOMP_INLINE, 0x5EB6},
{0x2F88E, 0, 1 | DECOMP_INLINE, 0x5ECA},
- {0x2F88F, 0, 1, 5008},
+ {0x2F88F, 0, 1, 5048},
{0x2F890, 0, 1 | DECOMP_INLINE, 0x5EFE},
- {0x2F891, 0, 1, 5009},
- {0x2F892, 0, 1, 5010},
+ {0x2F891, 0, 1, 5049},
+ {0x2F892, 0, 1, 5050},
{0x2F893, 0, 1 | DECOMP_INLINE, 0x8201},
{0x2F894, 0, 1 | DECOMP_INLINE, 0x5F22},
{0x2F895, 0, 1 | DECOMP_INLINE, 0x5F22},
{0x2F896, 0, 1 | DECOMP_INLINE, 0x38C7},
- {0x2F897, 0, 1, 5011},
- {0x2F898, 0, 1, 5012},
+ {0x2F897, 0, 1, 5051},
+ {0x2F898, 0, 1, 5052},
{0x2F899, 0, 1 | DECOMP_INLINE, 0x5F62},
{0x2F89A, 0, 1 | DECOMP_INLINE, 0x5F6B},
{0x2F89B, 0, 1 | DECOMP_INLINE, 0x38E3},
@@ -6435,7 +6503,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F8A1, 0, 1 | DECOMP_INLINE, 0x393A},
{0x2F8A2, 0, 1 | DECOMP_INLINE, 0x391C},
{0x2F8A3, 0, 1 | DECOMP_INLINE, 0x6094},
- {0x2F8A4, 0, 1, 5013},
+ {0x2F8A4, 0, 1, 5053},
{0x2F8A5, 0, 1 | DECOMP_INLINE, 0x60C7},
{0x2F8A6, 0, 1 | DECOMP_INLINE, 0x6148},
{0x2F8A7, 0, 1 | DECOMP_INLINE, 0x614C},
@@ -6455,13 +6523,13 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F8B5, 0, 1 | DECOMP_INLINE, 0x62B1},
{0x2F8B6, 0, 1 | DECOMP_INLINE, 0x62D4},
{0x2F8B7, 0, 1 | DECOMP_INLINE, 0x6350},
- {0x2F8B8, 0, 1, 5014},
+ {0x2F8B8, 0, 1, 5054},
{0x2F8B9, 0, 1 | DECOMP_INLINE, 0x633D},
{0x2F8BA, 0, 1 | DECOMP_INLINE, 0x62FC},
{0x2F8BB, 0, 1 | DECOMP_INLINE, 0x6368},
{0x2F8BC, 0, 1 | DECOMP_INLINE, 0x6383},
{0x2F8BD, 0, 1 | DECOMP_INLINE, 0x63E4},
- {0x2F8BE, 0, 1, 5015},
+ {0x2F8BE, 0, 1, 5055},
{0x2F8BF, 0, 1 | DECOMP_INLINE, 0x6422},
{0x2F8C0, 0, 1 | DECOMP_INLINE, 0x63C5},
{0x2F8C1, 0, 1 | DECOMP_INLINE, 0x63A9},
@@ -6473,7 +6541,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F8C7, 0, 1 | DECOMP_INLINE, 0x3A6C},
{0x2F8C8, 0, 1 | DECOMP_INLINE, 0x654F},
{0x2F8C9, 0, 1 | DECOMP_INLINE, 0x656C},
- {0x2F8CA, 0, 1, 5016},
+ {0x2F8CA, 0, 1, 5056},
{0x2F8CB, 0, 1 | DECOMP_INLINE, 0x65E3},
{0x2F8CC, 0, 1 | DECOMP_INLINE, 0x66F8},
{0x2F8CD, 0, 1 | DECOMP_INLINE, 0x6649},
@@ -6492,13 +6560,13 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F8DA, 0, 1 | DECOMP_INLINE, 0x6721},
{0x2F8DB, 0, 1 | DECOMP_INLINE, 0x675E},
{0x2F8DC, 0, 1 | DECOMP_INLINE, 0x6753},
- {0x2F8DD, 0, 1, 5017},
+ {0x2F8DD, 0, 1, 5057},
{0x2F8DE, 0, 1 | DECOMP_INLINE, 0x3B49},
{0x2F8DF, 0, 1 | DECOMP_INLINE, 0x67FA},
{0x2F8E0, 0, 1 | DECOMP_INLINE, 0x6785},
{0x2F8E1, 0, 1 | DECOMP_INLINE, 0x6852},
{0x2F8E2, 0, 1 | DECOMP_INLINE, 0x6885},
- {0x2F8E3, 0, 1, 5018},
+ {0x2F8E3, 0, 1, 5058},
{0x2F8E4, 0, 1 | DECOMP_INLINE, 0x688E},
{0x2F8E5, 0, 1 | DECOMP_INLINE, 0x681F},
{0x2F8E6, 0, 1 | DECOMP_INLINE, 0x6914},
@@ -6507,22 +6575,22 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F8E9, 0, 1 | DECOMP_INLINE, 0x69A3},
{0x2F8EA, 0, 1 | DECOMP_INLINE, 0x69EA},
{0x2F8EB, 0, 1 | DECOMP_INLINE, 0x6AA8},
- {0x2F8EC, 0, 1, 5019},
+ {0x2F8EC, 0, 1, 5059},
{0x2F8ED, 0, 1 | DECOMP_INLINE, 0x6ADB},
{0x2F8EE, 0, 1 | DECOMP_INLINE, 0x3C18},
{0x2F8EF, 0, 1 | DECOMP_INLINE, 0x6B21},
- {0x2F8F0, 0, 1, 5020},
+ {0x2F8F0, 0, 1, 5060},
{0x2F8F1, 0, 1 | DECOMP_INLINE, 0x6B54},
{0x2F8F2, 0, 1 | DECOMP_INLINE, 0x3C4E},
{0x2F8F3, 0, 1 | DECOMP_INLINE, 0x6B72},
{0x2F8F4, 0, 1 | DECOMP_INLINE, 0x6B9F},
{0x2F8F5, 0, 1 | DECOMP_INLINE, 0x6BBA},
{0x2F8F6, 0, 1 | DECOMP_INLINE, 0x6BBB},
- {0x2F8F7, 0, 1, 5021},
- {0x2F8F8, 0, 1, 5022},
- {0x2F8F9, 0, 1, 5023},
+ {0x2F8F7, 0, 1, 5061},
+ {0x2F8F8, 0, 1, 5062},
+ {0x2F8F9, 0, 1, 5063},
{0x2F8FA, 0, 1 | DECOMP_INLINE, 0x6C4E},
- {0x2F8FB, 0, 1, 5024},
+ {0x2F8FB, 0, 1, 5064},
{0x2F8FC, 0, 1 | DECOMP_INLINE, 0x6CBF},
{0x2F8FD, 0, 1 | DECOMP_INLINE, 0x6CCD},
{0x2F8FE, 0, 1 | DECOMP_INLINE, 0x6C67},
@@ -6533,18 +6601,18 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F903, 0, 1 | DECOMP_INLINE, 0x6D69},
{0x2F904, 0, 1 | DECOMP_INLINE, 0x6D78},
{0x2F905, 0, 1 | DECOMP_INLINE, 0x6D85},
- {0x2F906, 0, 1, 5025},
+ {0x2F906, 0, 1, 5065},
{0x2F907, 0, 1 | DECOMP_INLINE, 0x6D34},
{0x2F908, 0, 1 | DECOMP_INLINE, 0x6E2F},
{0x2F909, 0, 1 | DECOMP_INLINE, 0x6E6E},
{0x2F90A, 0, 1 | DECOMP_INLINE, 0x3D33},
{0x2F90B, 0, 1 | DECOMP_INLINE, 0x6ECB},
{0x2F90C, 0, 1 | DECOMP_INLINE, 0x6EC7},
- {0x2F90D, 0, 1, 5026},
+ {0x2F90D, 0, 1, 5066},
{0x2F90E, 0, 1 | DECOMP_INLINE, 0x6DF9},
{0x2F90F, 0, 1 | DECOMP_INLINE, 0x6F6E},
- {0x2F910, 0, 1, 5027},
- {0x2F911, 0, 1, 5028},
+ {0x2F910, 0, 1, 5067},
+ {0x2F911, 0, 1, 5068},
{0x2F912, 0, 1 | DECOMP_INLINE, 0x6FC6},
{0x2F913, 0, 1 | DECOMP_INLINE, 0x7039},
{0x2F914, 0, 1 | DECOMP_INLINE, 0x701E},
@@ -6554,19 +6622,19 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F918, 0, 1 | DECOMP_INLINE, 0x707D},
{0x2F919, 0, 1 | DECOMP_INLINE, 0x7077},
{0x2F91A, 0, 1 | DECOMP_INLINE, 0x70AD},
- {0x2F91B, 0, 1, 5029},
+ {0x2F91B, 0, 1, 5069},
{0x2F91C, 0, 1 | DECOMP_INLINE, 0x7145},
- {0x2F91D, 0, 1, 5030},
+ {0x2F91D, 0, 1, 5070},
{0x2F91E, 0, 1 | DECOMP_INLINE, 0x719C},
- {0x2F91F, 0, 1, 5031},
+ {0x2F91F, 0, 1, 5071},
{0x2F920, 0, 1 | DECOMP_INLINE, 0x7228},
{0x2F921, 0, 1 | DECOMP_INLINE, 0x7235},
{0x2F922, 0, 1 | DECOMP_INLINE, 0x7250},
- {0x2F923, 0, 1, 5032},
+ {0x2F923, 0, 1, 5072},
{0x2F924, 0, 1 | DECOMP_INLINE, 0x7280},
{0x2F925, 0, 1 | DECOMP_INLINE, 0x7295},
- {0x2F926, 0, 1, 5033},
- {0x2F927, 0, 1, 5034},
+ {0x2F926, 0, 1, 5073},
+ {0x2F927, 0, 1, 5074},
{0x2F928, 0, 1 | DECOMP_INLINE, 0x737A},
{0x2F929, 0, 1 | DECOMP_INLINE, 0x738B},
{0x2F92A, 0, 1 | DECOMP_INLINE, 0x3EAC},
@@ -6580,22 +6648,22 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F932, 0, 1 | DECOMP_INLINE, 0x74CA},
{0x2F933, 0, 1 | DECOMP_INLINE, 0x3F1B},
{0x2F934, 0, 1 | DECOMP_INLINE, 0x7524},
- {0x2F935, 0, 1, 5035},
+ {0x2F935, 0, 1, 5075},
{0x2F936, 0, 1 | DECOMP_INLINE, 0x753E},
- {0x2F937, 0, 1, 5036},
+ {0x2F937, 0, 1, 5076},
{0x2F938, 0, 1 | DECOMP_INLINE, 0x7570},
- {0x2F939, 0, 1, 5037},
+ {0x2F939, 0, 1, 5077},
{0x2F93A, 0, 1 | DECOMP_INLINE, 0x7610},
- {0x2F93B, 0, 1, 5038},
- {0x2F93C, 0, 1, 5039},
- {0x2F93D, 0, 1, 5040},
+ {0x2F93B, 0, 1, 5078},
+ {0x2F93C, 0, 1, 5079},
+ {0x2F93D, 0, 1, 5080},
{0x2F93E, 0, 1 | DECOMP_INLINE, 0x3FFC},
{0x2F93F, 0, 1 | DECOMP_INLINE, 0x4008},
{0x2F940, 0, 1 | DECOMP_INLINE, 0x76F4},
- {0x2F941, 0, 1, 5041},
- {0x2F942, 0, 1, 5042},
- {0x2F943, 0, 1, 5043},
- {0x2F944, 0, 1, 5044},
+ {0x2F941, 0, 1, 5081},
+ {0x2F942, 0, 1, 5082},
+ {0x2F943, 0, 1, 5083},
+ {0x2F944, 0, 1, 5084},
{0x2F945, 0, 1 | DECOMP_INLINE, 0x771E},
{0x2F946, 0, 1 | DECOMP_INLINE, 0x771F},
{0x2F947, 0, 1 | DECOMP_INLINE, 0x771F},
@@ -6604,68 +6672,68 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F94A, 0, 1 | DECOMP_INLINE, 0x778B},
{0x2F94B, 0, 1 | DECOMP_INLINE, 0x4046},
{0x2F94C, 0, 1 | DECOMP_INLINE, 0x4096},
- {0x2F94D, 0, 1, 5045},
+ {0x2F94D, 0, 1, 5085},
{0x2F94E, 0, 1 | DECOMP_INLINE, 0x784E},
{0x2F94F, 0, 1 | DECOMP_INLINE, 0x788C},
{0x2F950, 0, 1 | DECOMP_INLINE, 0x78CC},
{0x2F951, 0, 1 | DECOMP_INLINE, 0x40E3},
- {0x2F952, 0, 1, 5046},
+ {0x2F952, 0, 1, 5086},
{0x2F953, 0, 1 | DECOMP_INLINE, 0x7956},
- {0x2F954, 0, 1, 5047},
- {0x2F955, 0, 1, 5048},
+ {0x2F954, 0, 1, 5087},
+ {0x2F955, 0, 1, 5088},
{0x2F956, 0, 1 | DECOMP_INLINE, 0x798F},
{0x2F957, 0, 1 | DECOMP_INLINE, 0x79EB},
{0x2F958, 0, 1 | DECOMP_INLINE, 0x412F},
{0x2F959, 0, 1 | DECOMP_INLINE, 0x7A40},
{0x2F95A, 0, 1 | DECOMP_INLINE, 0x7A4A},
{0x2F95B, 0, 1 | DECOMP_INLINE, 0x7A4F},
- {0x2F95C, 0, 1, 5049},
- {0x2F95D, 0, 1, 5050},
- {0x2F95E, 0, 1, 5051},
+ {0x2F95C, 0, 1, 5089},
+ {0x2F95D, 0, 1, 5090},
+ {0x2F95E, 0, 1, 5091},
{0x2F95F, 0, 1 | DECOMP_INLINE, 0x7AEE},
{0x2F960, 0, 1 | DECOMP_INLINE, 0x4202},
- {0x2F961, 0, 1, 5052},
+ {0x2F961, 0, 1, 5092},
{0x2F962, 0, 1 | DECOMP_INLINE, 0x7BC6},
{0x2F963, 0, 1 | DECOMP_INLINE, 0x7BC9},
{0x2F964, 0, 1 | DECOMP_INLINE, 0x4227},
- {0x2F965, 0, 1, 5053},
+ {0x2F965, 0, 1, 5093},
{0x2F966, 0, 1 | DECOMP_INLINE, 0x7CD2},
{0x2F967, 0, 1 | DECOMP_INLINE, 0x42A0},
{0x2F968, 0, 1 | DECOMP_INLINE, 0x7CE8},
{0x2F969, 0, 1 | DECOMP_INLINE, 0x7CE3},
{0x2F96A, 0, 1 | DECOMP_INLINE, 0x7D00},
- {0x2F96B, 0, 1, 5054},
+ {0x2F96B, 0, 1, 5094},
{0x2F96C, 0, 1 | DECOMP_INLINE, 0x7D63},
{0x2F96D, 0, 1 | DECOMP_INLINE, 0x4301},
{0x2F96E, 0, 1 | DECOMP_INLINE, 0x7DC7},
{0x2F96F, 0, 1 | DECOMP_INLINE, 0x7E02},
{0x2F970, 0, 1 | DECOMP_INLINE, 0x7E45},
{0x2F971, 0, 1 | DECOMP_INLINE, 0x4334},
- {0x2F972, 0, 1, 5055},
- {0x2F973, 0, 1, 5056},
+ {0x2F972, 0, 1, 5095},
+ {0x2F973, 0, 1, 5096},
{0x2F974, 0, 1 | DECOMP_INLINE, 0x4359},
- {0x2F975, 0, 1, 5057},
+ {0x2F975, 0, 1, 5097},
{0x2F976, 0, 1 | DECOMP_INLINE, 0x7F7A},
- {0x2F977, 0, 1, 5058},
+ {0x2F977, 0, 1, 5098},
{0x2F978, 0, 1 | DECOMP_INLINE, 0x7F95},
{0x2F979, 0, 1 | DECOMP_INLINE, 0x7FFA},
{0x2F97A, 0, 1 | DECOMP_INLINE, 0x8005},
- {0x2F97B, 0, 1, 5059},
- {0x2F97C, 0, 1, 5060},
+ {0x2F97B, 0, 1, 5099},
+ {0x2F97C, 0, 1, 5100},
{0x2F97D, 0, 1 | DECOMP_INLINE, 0x8060},
- {0x2F97E, 0, 1, 5061},
+ {0x2F97E, 0, 1, 5101},
{0x2F97F, 0, 1 | DECOMP_INLINE, 0x8070},
- {0x2F980, 0, 1, 5062},
+ {0x2F980, 0, 1, 5102},
{0x2F981, 0, 1 | DECOMP_INLINE, 0x43D5},
{0x2F982, 0, 1 | DECOMP_INLINE, 0x80B2},
{0x2F983, 0, 1 | DECOMP_INLINE, 0x8103},
{0x2F984, 0, 1 | DECOMP_INLINE, 0x440B},
{0x2F985, 0, 1 | DECOMP_INLINE, 0x813E},
{0x2F986, 0, 1 | DECOMP_INLINE, 0x5AB5},
- {0x2F987, 0, 1, 5063},
- {0x2F988, 0, 1, 5064},
- {0x2F989, 0, 1, 5065},
- {0x2F98A, 0, 1, 5066},
+ {0x2F987, 0, 1, 5103},
+ {0x2F988, 0, 1, 5104},
+ {0x2F989, 0, 1, 5105},
+ {0x2F98A, 0, 1, 5106},
{0x2F98B, 0, 1 | DECOMP_INLINE, 0x8201},
{0x2F98C, 0, 1 | DECOMP_INLINE, 0x8204},
{0x2F98D, 0, 1 | DECOMP_INLINE, 0x8F9E},
@@ -6678,7 +6746,7 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F994, 0, 1 | DECOMP_INLINE, 0x82B3},
{0x2F995, 0, 1 | DECOMP_INLINE, 0x82BD},
{0x2F996, 0, 1 | DECOMP_INLINE, 0x82E6},
- {0x2F997, 0, 1, 5067},
+ {0x2F997, 0, 1, 5107},
{0x2F998, 0, 1 | DECOMP_INLINE, 0x82E5},
{0x2F999, 0, 1 | DECOMP_INLINE, 0x831D},
{0x2F99A, 0, 1 | DECOMP_INLINE, 0x8363},
@@ -6691,20 +6759,20 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F9A1, 0, 1 | DECOMP_INLINE, 0x83CA},
{0x2F9A2, 0, 1 | DECOMP_INLINE, 0x83CC},
{0x2F9A3, 0, 1 | DECOMP_INLINE, 0x83DC},
- {0x2F9A4, 0, 1, 5068},
- {0x2F9A5, 0, 1, 5069},
- {0x2F9A6, 0, 1, 5070},
+ {0x2F9A4, 0, 1, 5108},
+ {0x2F9A5, 0, 1, 5109},
+ {0x2F9A6, 0, 1, 5110},
{0x2F9A7, 0, 1 | DECOMP_INLINE, 0x452B},
{0x2F9A8, 0, 1 | DECOMP_INLINE, 0x84F1},
{0x2F9A9, 0, 1 | DECOMP_INLINE, 0x84F3},
{0x2F9AA, 0, 1 | DECOMP_INLINE, 0x8516},
- {0x2F9AB, 0, 1, 5071},
+ {0x2F9AB, 0, 1, 5111},
{0x2F9AC, 0, 1 | DECOMP_INLINE, 0x8564},
- {0x2F9AD, 0, 1, 5072},
+ {0x2F9AD, 0, 1, 5112},
{0x2F9AE, 0, 1 | DECOMP_INLINE, 0x455D},
{0x2F9AF, 0, 1 | DECOMP_INLINE, 0x4561},
- {0x2F9B0, 0, 1, 5073},
- {0x2F9B1, 0, 1, 5074},
+ {0x2F9B0, 0, 1, 5113},
+ {0x2F9B1, 0, 1, 5114},
{0x2F9B2, 0, 1 | DECOMP_INLINE, 0x456B},
{0x2F9B3, 0, 1 | DECOMP_INLINE, 0x8650},
{0x2F9B4, 0, 1 | DECOMP_INLINE, 0x865C},
@@ -6724,39 +6792,39 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F9C2, 0, 1 | DECOMP_INLINE, 0x45F9},
{0x2F9C3, 0, 1 | DECOMP_INLINE, 0x8860},
{0x2F9C4, 0, 1 | DECOMP_INLINE, 0x8863},
- {0x2F9C5, 0, 1, 5075},
+ {0x2F9C5, 0, 1, 5115},
{0x2F9C6, 0, 1 | DECOMP_INLINE, 0x88D7},
{0x2F9C7, 0, 1 | DECOMP_INLINE, 0x88DE},
{0x2F9C8, 0, 1 | DECOMP_INLINE, 0x4635},
{0x2F9C9, 0, 1 | DECOMP_INLINE, 0x88FA},
{0x2F9CA, 0, 1 | DECOMP_INLINE, 0x34BB},
- {0x2F9CB, 0, 1, 5076},
- {0x2F9CC, 0, 1, 5077},
+ {0x2F9CB, 0, 1, 5116},
+ {0x2F9CC, 0, 1, 5117},
{0x2F9CD, 0, 1 | DECOMP_INLINE, 0x46BE},
{0x2F9CE, 0, 1 | DECOMP_INLINE, 0x46C7},
{0x2F9CF, 0, 1 | DECOMP_INLINE, 0x8AA0},
{0x2F9D0, 0, 1 | DECOMP_INLINE, 0x8AED},
{0x2F9D1, 0, 1 | DECOMP_INLINE, 0x8B8A},
{0x2F9D2, 0, 1 | DECOMP_INLINE, 0x8C55},
- {0x2F9D3, 0, 1, 5078},
+ {0x2F9D3, 0, 1, 5118},
{0x2F9D4, 0, 1 | DECOMP_INLINE, 0x8CAB},
{0x2F9D5, 0, 1 | DECOMP_INLINE, 0x8CC1},
{0x2F9D6, 0, 1 | DECOMP_INLINE, 0x8D1B},
{0x2F9D7, 0, 1 | DECOMP_INLINE, 0x8D77},
- {0x2F9D8, 0, 1, 5079},
- {0x2F9D9, 0, 1, 5080},
+ {0x2F9D8, 0, 1, 5119},
+ {0x2F9D9, 0, 1, 5120},
{0x2F9DA, 0, 1 | DECOMP_INLINE, 0x8DCB},
{0x2F9DB, 0, 1 | DECOMP_INLINE, 0x8DBC},
{0x2F9DC, 0, 1 | DECOMP_INLINE, 0x8DF0},
- {0x2F9DD, 0, 1, 5081},
+ {0x2F9DD, 0, 1, 5121},
{0x2F9DE, 0, 1 | DECOMP_INLINE, 0x8ED4},
{0x2F9DF, 0, 1 | DECOMP_INLINE, 0x8F38},
- {0x2F9E0, 0, 1, 5082},
- {0x2F9E1, 0, 1, 5083},
+ {0x2F9E0, 0, 1, 5122},
+ {0x2F9E1, 0, 1, 5123},
{0x2F9E2, 0, 1 | DECOMP_INLINE, 0x9094},
{0x2F9E3, 0, 1 | DECOMP_INLINE, 0x90F1},
{0x2F9E4, 0, 1 | DECOMP_INLINE, 0x9111},
- {0x2F9E5, 0, 1, 5084},
+ {0x2F9E5, 0, 1, 5124},
{0x2F9E6, 0, 1 | DECOMP_INLINE, 0x911B},
{0x2F9E7, 0, 1 | DECOMP_INLINE, 0x9238},
{0x2F9E8, 0, 1 | DECOMP_INLINE, 0x92D7},
@@ -6764,27 +6832,27 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2F9EA, 0, 1 | DECOMP_INLINE, 0x927C},
{0x2F9EB, 0, 1 | DECOMP_INLINE, 0x93F9},
{0x2F9EC, 0, 1 | DECOMP_INLINE, 0x9415},
- {0x2F9ED, 0, 1, 5085},
+ {0x2F9ED, 0, 1, 5125},
{0x2F9EE, 0, 1 | DECOMP_INLINE, 0x958B},
{0x2F9EF, 0, 1 | DECOMP_INLINE, 0x4995},
{0x2F9F0, 0, 1 | DECOMP_INLINE, 0x95B7},
- {0x2F9F1, 0, 1, 5086},
+ {0x2F9F1, 0, 1, 5126},
{0x2F9F2, 0, 1 | DECOMP_INLINE, 0x49E6},
{0x2F9F3, 0, 1 | DECOMP_INLINE, 0x96C3},
{0x2F9F4, 0, 1 | DECOMP_INLINE, 0x5DB2},
{0x2F9F5, 0, 1 | DECOMP_INLINE, 0x9723},
- {0x2F9F6, 0, 1, 5087},
- {0x2F9F7, 0, 1, 5088},
+ {0x2F9F6, 0, 1, 5127},
+ {0x2F9F7, 0, 1, 5128},
{0x2F9F8, 0, 1 | DECOMP_INLINE, 0x4A6E},
{0x2F9F9, 0, 1 | DECOMP_INLINE, 0x4A76},
{0x2F9FA, 0, 1 | DECOMP_INLINE, 0x97E0},
- {0x2F9FB, 0, 1, 5089},
+ {0x2F9FB, 0, 1, 5129},
{0x2F9FC, 0, 1 | DECOMP_INLINE, 0x4AB2},
- {0x2F9FD, 0, 1, 5090},
+ {0x2F9FD, 0, 1, 5130},
{0x2F9FE, 0, 1 | DECOMP_INLINE, 0x980B},
{0x2F9FF, 0, 1 | DECOMP_INLINE, 0x980B},
{0x2FA00, 0, 1 | DECOMP_INLINE, 0x9829},
- {0x2FA01, 0, 1, 5091},
+ {0x2FA01, 0, 1, 5131},
{0x2FA02, 0, 1 | DECOMP_INLINE, 0x98E2},
{0x2FA03, 0, 1 | DECOMP_INLINE, 0x4B33},
{0x2FA04, 0, 1 | DECOMP_INLINE, 0x9929},
@@ -6792,18 +6860,18 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2FA06, 0, 1 | DECOMP_INLINE, 0x99C2},
{0x2FA07, 0, 1 | DECOMP_INLINE, 0x99FE},
{0x2FA08, 0, 1 | DECOMP_INLINE, 0x4BCE},
- {0x2FA09, 0, 1, 5092},
+ {0x2FA09, 0, 1, 5132},
{0x2FA0A, 0, 1 | DECOMP_INLINE, 0x9B12},
{0x2FA0B, 0, 1 | DECOMP_INLINE, 0x9C40},
{0x2FA0C, 0, 1 | DECOMP_INLINE, 0x9CFD},
{0x2FA0D, 0, 1 | DECOMP_INLINE, 0x4CCE},
{0x2FA0E, 0, 1 | DECOMP_INLINE, 0x4CED},
{0x2FA0F, 0, 1 | DECOMP_INLINE, 0x9D67},
- {0x2FA10, 0, 1, 5093},
+ {0x2FA10, 0, 1, 5133},
{0x2FA11, 0, 1 | DECOMP_INLINE, 0x4CF8},
- {0x2FA12, 0, 1, 5094},
- {0x2FA13, 0, 1, 5095},
- {0x2FA14, 0, 1, 5096},
+ {0x2FA12, 0, 1, 5134},
+ {0x2FA13, 0, 1, 5135},
+ {0x2FA14, 0, 1, 5136},
{0x2FA15, 0, 1 | DECOMP_INLINE, 0x9EBB},
{0x2FA16, 0, 1 | DECOMP_INLINE, 0x4D56},
{0x2FA17, 0, 1 | DECOMP_INLINE, 0x9EF9},
@@ -6812,12 +6880,12 @@ static const pg_unicode_decomposition UnicodeDecompMain[6775] =
{0x2FA1A, 0, 1 | DECOMP_INLINE, 0x9F0F},
{0x2FA1B, 0, 1 | DECOMP_INLINE, 0x9F16},
{0x2FA1C, 0, 1 | DECOMP_INLINE, 0x9F3B},
- {0x2FA1D, 0, 1, 5097}
+ {0x2FA1D, 0, 1, 5137}
};
/* codepoints array */
-static const uint32 UnicodeDecomp_codepoints[5098] =
+static const uint32 UnicodeDecomp_codepoints[5138] =
{
/* 0 */ 0x0020, 0x0308,
/* 2 */ 0x0020, 0x0304,
@@ -8913,202 +8981,222 @@ static const uint32 UnicodeDecomp_codepoints[5098] =
/* 4770 */ 0x0644, 0x0625,
/* 4772 */ 0x0644, 0x0627,
/* 4774 */ 0x0644, 0x0627,
- /* 4776 */ 0x1DF04,
- /* 4777 */ 0x1DF05,
- /* 4778 */ 0x1DF06,
- /* 4779 */ 0x1DF08,
- /* 4780 */ 0x1DF0A,
- /* 4781 */ 0x1DF1E,
- /* 4782 */ 0x11099, 0x110BA,
- /* 4784 */ 0x1109B, 0x110BA,
- /* 4786 */ 0x110A5, 0x110BA,
- /* 4788 */ 0x11131, 0x11127,
- /* 4790 */ 0x11132, 0x11127,
- /* 4792 */ 0x11347, 0x1133E,
- /* 4794 */ 0x11347, 0x11357,
- /* 4796 */ 0x114B9, 0x114BA,
- /* 4798 */ 0x114B9, 0x114B0,
- /* 4800 */ 0x114B9, 0x114BD,
- /* 4802 */ 0x115B8, 0x115AF,
- /* 4804 */ 0x115B9, 0x115AF,
- /* 4806 */ 0x11935, 0x11930,
- /* 4808 */ 0x1D157, 0x1D165,
- /* 4810 */ 0x1D158, 0x1D165,
- /* 4812 */ 0x1D15F, 0x1D16E,
- /* 4814 */ 0x1D15F, 0x1D16F,
- /* 4816 */ 0x1D15F, 0x1D170,
- /* 4818 */ 0x1D15F, 0x1D171,
- /* 4820 */ 0x1D15F, 0x1D172,
- /* 4822 */ 0x1D1B9, 0x1D165,
- /* 4824 */ 0x1D1BA, 0x1D165,
- /* 4826 */ 0x1D1BB, 0x1D16E,
- /* 4828 */ 0x1D1BC, 0x1D16E,
- /* 4830 */ 0x1D1BB, 0x1D16F,
- /* 4832 */ 0x1D1BC, 0x1D16F,
- /* 4834 */ 0x0030, 0x002E,
- /* 4836 */ 0x0030, 0x002C,
- /* 4838 */ 0x0031, 0x002C,
- /* 4840 */ 0x0032, 0x002C,
- /* 4842 */ 0x0033, 0x002C,
- /* 4844 */ 0x0034, 0x002C,
- /* 4846 */ 0x0035, 0x002C,
- /* 4848 */ 0x0036, 0x002C,
- /* 4850 */ 0x0037, 0x002C,
- /* 4852 */ 0x0038, 0x002C,
- /* 4854 */ 0x0039, 0x002C,
- /* 4856 */ 0x0028, 0x0041, 0x0029,
- /* 4859 */ 0x0028, 0x0042, 0x0029,
- /* 4862 */ 0x0028, 0x0043, 0x0029,
- /* 4865 */ 0x0028, 0x0044, 0x0029,
- /* 4868 */ 0x0028, 0x0045, 0x0029,
- /* 4871 */ 0x0028, 0x0046, 0x0029,
- /* 4874 */ 0x0028, 0x0047, 0x0029,
- /* 4877 */ 0x0028, 0x0048, 0x0029,
- /* 4880 */ 0x0028, 0x0049, 0x0029,
- /* 4883 */ 0x0028, 0x004A, 0x0029,
- /* 4886 */ 0x0028, 0x004B, 0x0029,
- /* 4889 */ 0x0028, 0x004C, 0x0029,
- /* 4892 */ 0x0028, 0x004D, 0x0029,
- /* 4895 */ 0x0028, 0x004E, 0x0029,
- /* 4898 */ 0x0028, 0x004F, 0x0029,
- /* 4901 */ 0x0028, 0x0050, 0x0029,
- /* 4904 */ 0x0028, 0x0051, 0x0029,
- /* 4907 */ 0x0028, 0x0052, 0x0029,
- /* 4910 */ 0x0028, 0x0053, 0x0029,
- /* 4913 */ 0x0028, 0x0054, 0x0029,
- /* 4916 */ 0x0028, 0x0055, 0x0029,
- /* 4919 */ 0x0028, 0x0056, 0x0029,
- /* 4922 */ 0x0028, 0x0057, 0x0029,
- /* 4925 */ 0x0028, 0x0058, 0x0029,
- /* 4928 */ 0x0028, 0x0059, 0x0029,
- /* 4931 */ 0x0028, 0x005A, 0x0029,
- /* 4934 */ 0x3014, 0x0053, 0x3015,
- /* 4937 */ 0x0043, 0x0044,
- /* 4939 */ 0x0057, 0x005A,
- /* 4941 */ 0x0048, 0x0056,
- /* 4943 */ 0x004D, 0x0056,
- /* 4945 */ 0x0053, 0x0044,
- /* 4947 */ 0x0053, 0x0053,
- /* 4949 */ 0x0050, 0x0050, 0x0056,
- /* 4952 */ 0x0057, 0x0043,
- /* 4954 */ 0x004D, 0x0043,
- /* 4956 */ 0x004D, 0x0044,
- /* 4958 */ 0x004D, 0x0052,
- /* 4960 */ 0x0044, 0x004A,
- /* 4962 */ 0x307B, 0x304B,
- /* 4964 */ 0x30B3, 0x30B3,
- /* 4966 */ 0x3014, 0x672C, 0x3015,
- /* 4969 */ 0x3014, 0x4E09, 0x3015,
- /* 4972 */ 0x3014, 0x4E8C, 0x3015,
- /* 4975 */ 0x3014, 0x5B89, 0x3015,
- /* 4978 */ 0x3014, 0x70B9, 0x3015,
- /* 4981 */ 0x3014, 0x6253, 0x3015,
- /* 4984 */ 0x3014, 0x76D7, 0x3015,
- /* 4987 */ 0x3014, 0x52DD, 0x3015,
- /* 4990 */ 0x3014, 0x6557, 0x3015,
- /* 4993 */ 0x20122,
- /* 4994 */ 0x2063A,
- /* 4995 */ 0x2051C,
- /* 4996 */ 0x2054B,
- /* 4997 */ 0x291DF,
- /* 4998 */ 0x20A2C,
- /* 4999 */ 0x20B63,
- /* 5000 */ 0x214E4,
- /* 5001 */ 0x216A8,
- /* 5002 */ 0x216EA,
- /* 5003 */ 0x219C8,
- /* 5004 */ 0x21B18,
- /* 5005 */ 0x21DE4,
- /* 5006 */ 0x21DE6,
- /* 5007 */ 0x22183,
- /* 5008 */ 0x2A392,
- /* 5009 */ 0x22331,
- /* 5010 */ 0x22331,
- /* 5011 */ 0x232B8,
- /* 5012 */ 0x261DA,
- /* 5013 */ 0x226D4,
- /* 5014 */ 0x22B0C,
- /* 5015 */ 0x22BF1,
- /* 5016 */ 0x2300A,
- /* 5017 */ 0x233C3,
- /* 5018 */ 0x2346D,
- /* 5019 */ 0x236A3,
- /* 5020 */ 0x238A7,
- /* 5021 */ 0x23A8D,
- /* 5022 */ 0x21D0B,
- /* 5023 */ 0x23AFA,
- /* 5024 */ 0x23CBC,
- /* 5025 */ 0x23D1E,
- /* 5026 */ 0x23ED1,
- /* 5027 */ 0x23F5E,
- /* 5028 */ 0x23F8E,
- /* 5029 */ 0x20525,
- /* 5030 */ 0x24263,
- /* 5031 */ 0x243AB,
- /* 5032 */ 0x24608,
- /* 5033 */ 0x24735,
- /* 5034 */ 0x24814,
- /* 5035 */ 0x24C36,
- /* 5036 */ 0x24C92,
- /* 5037 */ 0x2219F,
- /* 5038 */ 0x24FA1,
- /* 5039 */ 0x24FB8,
- /* 5040 */ 0x25044,
- /* 5041 */ 0x250F3,
- /* 5042 */ 0x250F2,
- /* 5043 */ 0x25119,
- /* 5044 */ 0x25133,
- /* 5045 */ 0x2541D,
- /* 5046 */ 0x25626,
- /* 5047 */ 0x2569A,
- /* 5048 */ 0x256C5,
- /* 5049 */ 0x2597C,
- /* 5050 */ 0x25AA7,
- /* 5051 */ 0x25AA7,
- /* 5052 */ 0x25BAB,
- /* 5053 */ 0x25C80,
- /* 5054 */ 0x25F86,
- /* 5055 */ 0x26228,
- /* 5056 */ 0x26247,
- /* 5057 */ 0x262D9,
- /* 5058 */ 0x2633E,
- /* 5059 */ 0x264DA,
- /* 5060 */ 0x26523,
- /* 5061 */ 0x265A8,
- /* 5062 */ 0x2335F,
- /* 5063 */ 0x267A7,
- /* 5064 */ 0x267B5,
- /* 5065 */ 0x23393,
- /* 5066 */ 0x2339C,
- /* 5067 */ 0x26B3C,
- /* 5068 */ 0x26C36,
- /* 5069 */ 0x26D6B,
- /* 5070 */ 0x26CD5,
- /* 5071 */ 0x273CA,
- /* 5072 */ 0x26F2C,
- /* 5073 */ 0x26FB1,
- /* 5074 */ 0x270D2,
- /* 5075 */ 0x27667,
- /* 5076 */ 0x278AE,
- /* 5077 */ 0x27966,
- /* 5078 */ 0x27CA8,
- /* 5079 */ 0x27F2F,
- /* 5080 */ 0x20804,
- /* 5081 */ 0x208DE,
- /* 5082 */ 0x285D2,
- /* 5083 */ 0x285ED,
- /* 5084 */ 0x2872E,
- /* 5085 */ 0x28BFA,
- /* 5086 */ 0x28D77,
- /* 5087 */ 0x29145,
- /* 5088 */ 0x2921A,
- /* 5089 */ 0x2940A,
- /* 5090 */ 0x29496,
- /* 5091 */ 0x295B6,
- /* 5092 */ 0x29B30,
- /* 5093 */ 0x2A0CE,
- /* 5094 */ 0x2A105,
- /* 5095 */ 0x2A20E,
- /* 5096 */ 0x2A291,
- /* 5097 */ 0x2A600
+ /* 4776 */ 0x105D2, 0x0307,
+ /* 4778 */ 0x105DA, 0x0307,
+ /* 4780 */ 0x1DF04,
+ /* 4781 */ 0x1DF05,
+ /* 4782 */ 0x1DF06,
+ /* 4783 */ 0x1DF08,
+ /* 4784 */ 0x1DF0A,
+ /* 4785 */ 0x1DF1E,
+ /* 4786 */ 0x11099, 0x110BA,
+ /* 4788 */ 0x1109B, 0x110BA,
+ /* 4790 */ 0x110A5, 0x110BA,
+ /* 4792 */ 0x11131, 0x11127,
+ /* 4794 */ 0x11132, 0x11127,
+ /* 4796 */ 0x11347, 0x1133E,
+ /* 4798 */ 0x11347, 0x11357,
+ /* 4800 */ 0x11382, 0x113C9,
+ /* 4802 */ 0x11384, 0x113BB,
+ /* 4804 */ 0x1138B, 0x113C2,
+ /* 4806 */ 0x11390, 0x113C9,
+ /* 4808 */ 0x113C2, 0x113C2,
+ /* 4810 */ 0x113C2, 0x113B8,
+ /* 4812 */ 0x113C2, 0x113C9,
+ /* 4814 */ 0x114B9, 0x114BA,
+ /* 4816 */ 0x114B9, 0x114B0,
+ /* 4818 */ 0x114B9, 0x114BD,
+ /* 4820 */ 0x115B8, 0x115AF,
+ /* 4822 */ 0x115B9, 0x115AF,
+ /* 4824 */ 0x11935, 0x11930,
+ /* 4826 */ 0x1611E, 0x1611E,
+ /* 4828 */ 0x1611E, 0x16129,
+ /* 4830 */ 0x1611E, 0x1611F,
+ /* 4832 */ 0x16129, 0x1611F,
+ /* 4834 */ 0x1611E, 0x16120,
+ /* 4836 */ 0x16121, 0x1611F,
+ /* 4838 */ 0x16122, 0x1611F,
+ /* 4840 */ 0x16121, 0x16120,
+ /* 4842 */ 0x16D67, 0x16D67,
+ /* 4844 */ 0x16D63, 0x16D67,
+ /* 4846 */ 0x16D69, 0x16D67,
+ /* 4848 */ 0x1D157, 0x1D165,
+ /* 4850 */ 0x1D158, 0x1D165,
+ /* 4852 */ 0x1D15F, 0x1D16E,
+ /* 4854 */ 0x1D15F, 0x1D16F,
+ /* 4856 */ 0x1D15F, 0x1D170,
+ /* 4858 */ 0x1D15F, 0x1D171,
+ /* 4860 */ 0x1D15F, 0x1D172,
+ /* 4862 */ 0x1D1B9, 0x1D165,
+ /* 4864 */ 0x1D1BA, 0x1D165,
+ /* 4866 */ 0x1D1BB, 0x1D16E,
+ /* 4868 */ 0x1D1BC, 0x1D16E,
+ /* 4870 */ 0x1D1BB, 0x1D16F,
+ /* 4872 */ 0x1D1BC, 0x1D16F,
+ /* 4874 */ 0x0030, 0x002E,
+ /* 4876 */ 0x0030, 0x002C,
+ /* 4878 */ 0x0031, 0x002C,
+ /* 4880 */ 0x0032, 0x002C,
+ /* 4882 */ 0x0033, 0x002C,
+ /* 4884 */ 0x0034, 0x002C,
+ /* 4886 */ 0x0035, 0x002C,
+ /* 4888 */ 0x0036, 0x002C,
+ /* 4890 */ 0x0037, 0x002C,
+ /* 4892 */ 0x0038, 0x002C,
+ /* 4894 */ 0x0039, 0x002C,
+ /* 4896 */ 0x0028, 0x0041, 0x0029,
+ /* 4899 */ 0x0028, 0x0042, 0x0029,
+ /* 4902 */ 0x0028, 0x0043, 0x0029,
+ /* 4905 */ 0x0028, 0x0044, 0x0029,
+ /* 4908 */ 0x0028, 0x0045, 0x0029,
+ /* 4911 */ 0x0028, 0x0046, 0x0029,
+ /* 4914 */ 0x0028, 0x0047, 0x0029,
+ /* 4917 */ 0x0028, 0x0048, 0x0029,
+ /* 4920 */ 0x0028, 0x0049, 0x0029,
+ /* 4923 */ 0x0028, 0x004A, 0x0029,
+ /* 4926 */ 0x0028, 0x004B, 0x0029,
+ /* 4929 */ 0x0028, 0x004C, 0x0029,
+ /* 4932 */ 0x0028, 0x004D, 0x0029,
+ /* 4935 */ 0x0028, 0x004E, 0x0029,
+ /* 4938 */ 0x0028, 0x004F, 0x0029,
+ /* 4941 */ 0x0028, 0x0050, 0x0029,
+ /* 4944 */ 0x0028, 0x0051, 0x0029,
+ /* 4947 */ 0x0028, 0x0052, 0x0029,
+ /* 4950 */ 0x0028, 0x0053, 0x0029,
+ /* 4953 */ 0x0028, 0x0054, 0x0029,
+ /* 4956 */ 0x0028, 0x0055, 0x0029,
+ /* 4959 */ 0x0028, 0x0056, 0x0029,
+ /* 4962 */ 0x0028, 0x0057, 0x0029,
+ /* 4965 */ 0x0028, 0x0058, 0x0029,
+ /* 4968 */ 0x0028, 0x0059, 0x0029,
+ /* 4971 */ 0x0028, 0x005A, 0x0029,
+ /* 4974 */ 0x3014, 0x0053, 0x3015,
+ /* 4977 */ 0x0043, 0x0044,
+ /* 4979 */ 0x0057, 0x005A,
+ /* 4981 */ 0x0048, 0x0056,
+ /* 4983 */ 0x004D, 0x0056,
+ /* 4985 */ 0x0053, 0x0044,
+ /* 4987 */ 0x0053, 0x0053,
+ /* 4989 */ 0x0050, 0x0050, 0x0056,
+ /* 4992 */ 0x0057, 0x0043,
+ /* 4994 */ 0x004D, 0x0043,
+ /* 4996 */ 0x004D, 0x0044,
+ /* 4998 */ 0x004D, 0x0052,
+ /* 5000 */ 0x0044, 0x004A,
+ /* 5002 */ 0x307B, 0x304B,
+ /* 5004 */ 0x30B3, 0x30B3,
+ /* 5006 */ 0x3014, 0x672C, 0x3015,
+ /* 5009 */ 0x3014, 0x4E09, 0x3015,
+ /* 5012 */ 0x3014, 0x4E8C, 0x3015,
+ /* 5015 */ 0x3014, 0x5B89, 0x3015,
+ /* 5018 */ 0x3014, 0x70B9, 0x3015,
+ /* 5021 */ 0x3014, 0x6253, 0x3015,
+ /* 5024 */ 0x3014, 0x76D7, 0x3015,
+ /* 5027 */ 0x3014, 0x52DD, 0x3015,
+ /* 5030 */ 0x3014, 0x6557, 0x3015,
+ /* 5033 */ 0x20122,
+ /* 5034 */ 0x2063A,
+ /* 5035 */ 0x2051C,
+ /* 5036 */ 0x2054B,
+ /* 5037 */ 0x291DF,
+ /* 5038 */ 0x20A2C,
+ /* 5039 */ 0x20B63,
+ /* 5040 */ 0x214E4,
+ /* 5041 */ 0x216A8,
+ /* 5042 */ 0x216EA,
+ /* 5043 */ 0x219C8,
+ /* 5044 */ 0x21B18,
+ /* 5045 */ 0x21DE4,
+ /* 5046 */ 0x21DE6,
+ /* 5047 */ 0x22183,
+ /* 5048 */ 0x2A392,
+ /* 5049 */ 0x22331,
+ /* 5050 */ 0x22331,
+ /* 5051 */ 0x232B8,
+ /* 5052 */ 0x261DA,
+ /* 5053 */ 0x226D4,
+ /* 5054 */ 0x22B0C,
+ /* 5055 */ 0x22BF1,
+ /* 5056 */ 0x2300A,
+ /* 5057 */ 0x233C3,
+ /* 5058 */ 0x2346D,
+ /* 5059 */ 0x236A3,
+ /* 5060 */ 0x238A7,
+ /* 5061 */ 0x23A8D,
+ /* 5062 */ 0x21D0B,
+ /* 5063 */ 0x23AFA,
+ /* 5064 */ 0x23CBC,
+ /* 5065 */ 0x23D1E,
+ /* 5066 */ 0x23ED1,
+ /* 5067 */ 0x23F5E,
+ /* 5068 */ 0x23F8E,
+ /* 5069 */ 0x20525,
+ /* 5070 */ 0x24263,
+ /* 5071 */ 0x243AB,
+ /* 5072 */ 0x24608,
+ /* 5073 */ 0x24735,
+ /* 5074 */ 0x24814,
+ /* 5075 */ 0x24C36,
+ /* 5076 */ 0x24C92,
+ /* 5077 */ 0x2219F,
+ /* 5078 */ 0x24FA1,
+ /* 5079 */ 0x24FB8,
+ /* 5080 */ 0x25044,
+ /* 5081 */ 0x250F3,
+ /* 5082 */ 0x250F2,
+ /* 5083 */ 0x25119,
+ /* 5084 */ 0x25133,
+ /* 5085 */ 0x2541D,
+ /* 5086 */ 0x25626,
+ /* 5087 */ 0x2569A,
+ /* 5088 */ 0x256C5,
+ /* 5089 */ 0x2597C,
+ /* 5090 */ 0x25AA7,
+ /* 5091 */ 0x25AA7,
+ /* 5092 */ 0x25BAB,
+ /* 5093 */ 0x25C80,
+ /* 5094 */ 0x25F86,
+ /* 5095 */ 0x26228,
+ /* 5096 */ 0x26247,
+ /* 5097 */ 0x262D9,
+ /* 5098 */ 0x2633E,
+ /* 5099 */ 0x264DA,
+ /* 5100 */ 0x26523,
+ /* 5101 */ 0x265A8,
+ /* 5102 */ 0x2335F,
+ /* 5103 */ 0x267A7,
+ /* 5104 */ 0x267B5,
+ /* 5105 */ 0x23393,
+ /* 5106 */ 0x2339C,
+ /* 5107 */ 0x26B3C,
+ /* 5108 */ 0x26C36,
+ /* 5109 */ 0x26D6B,
+ /* 5110 */ 0x26CD5,
+ /* 5111 */ 0x273CA,
+ /* 5112 */ 0x26F2C,
+ /* 5113 */ 0x26FB1,
+ /* 5114 */ 0x270D2,
+ /* 5115 */ 0x27667,
+ /* 5116 */ 0x278AE,
+ /* 5117 */ 0x27966,
+ /* 5118 */ 0x27CA8,
+ /* 5119 */ 0x27F2F,
+ /* 5120 */ 0x20804,
+ /* 5121 */ 0x208DE,
+ /* 5122 */ 0x285D2,
+ /* 5123 */ 0x285ED,
+ /* 5124 */ 0x2872E,
+ /* 5125 */ 0x28BFA,
+ /* 5126 */ 0x28D77,
+ /* 5127 */ 0x29145,
+ /* 5128 */ 0x2921A,
+ /* 5129 */ 0x2940A,
+ /* 5130 */ 0x29496,
+ /* 5131 */ 0x295B6,
+ /* 5132 */ 0x29B30,
+ /* 5133 */ 0x2A0CE,
+ /* 5134 */ 0x2A105,
+ /* 5135 */ 0x2A20E,
+ /* 5136 */ 0x2A291,
+ /* 5137 */ 0x2A600
};
diff --git a/src/include/common/unicode_version.h b/src/include/common/unicode_version.h
index bf1f64b95b1..5f6a00ba1ea 100644
--- a/src/include/common/unicode_version.h
+++ b/src/include/common/unicode_version.h
@@ -11,4 +11,4 @@
*-------------------------------------------------------------------------
*/
-#define PG_UNICODE_VERSION "15.1"
+#define PG_UNICODE_VERSION "16.0"
diff --git a/src/test/regress/expected/unicode.out b/src/test/regress/expected/unicode.out
index 1e06de22649..2faa4c64bea 100644
--- a/src/test/regress/expected/unicode.out
+++ b/src/test/regress/expected/unicode.out
@@ -59,13 +59,13 @@ SELECT normalize(U&'\00E4\24D1c', NFD) = U&'\0061\0308\24D1c' COLLATE "C" AS tes
SELECT normalize(U&'\0061\0308\24D1c', NFKC) = U&'\00E4bc' COLLATE "C" AS test_nfkc;
test_nfkc
-----------
- t
+ f
(1 row)
SELECT normalize(U&'\00E4\24D1c', NFKD) = U&'\0061\0308bc' COLLATE "C" AS test_nfkd;
test_nfkd
-----------
- t
+ f
(1 row)
SELECT "normalize"('abc', 'def'); -- run-time error
@@ -99,7 +99,7 @@ ORDER BY num;
1 | äbc | t | f | t | f
2 | äbc | f | t | f | t
3 | äⓑc | t | f | f | f
- 4 | äⓑc | f | t | f | f
+ 4 | äⓑc | f | t | f | t
5 | | t | t | t | t
(5 rows)
--
2.34.1
From 5dfd89abcb4538ca8ead83c8bbff98b5dae10240 Mon Sep 17 00:00:00 2001
From: Jeff Davis <[email protected]>
Date: Mon, 3 Feb 2025 13:02:37 -0800
Subject: [PATCH v2 2/2] Add pg_upgrade check for Unicode-dependent relations.
---
src/bin/pg_upgrade/check.c | 180 +++++++++++++++++++++++++++++++++++++
1 file changed, 180 insertions(+)
diff --git a/src/bin/pg_upgrade/check.c b/src/bin/pg_upgrade/check.c
index 7ca1d8fffc9..25b4c025aa5 100644
--- a/src/bin/pg_upgrade/check.c
+++ b/src/bin/pg_upgrade/check.c
@@ -13,6 +13,7 @@
#include "catalog/pg_class_d.h"
#include "fe_utils/string_utils.h"
#include "pg_upgrade.h"
+#include "common/unicode_version.h"
static void check_new_cluster_is_empty(void);
static void check_is_install_user(ClusterInfo *cluster);
@@ -25,6 +26,7 @@ static void check_for_tables_with_oids(ClusterInfo *cluster);
static void check_for_pg_role_prefix(ClusterInfo *cluster);
static void check_for_new_tablespace_dir(void);
static void check_for_user_defined_encoding_conversions(ClusterInfo *cluster);
+static void check_for_unicode_update(ClusterInfo *cluster);
static void check_new_cluster_logical_replication_slots(void);
static void check_new_cluster_subscription_configuration(void);
static void check_old_cluster_for_valid_slots(void);
@@ -633,6 +635,12 @@ check_and_dump_old_cluster(void)
check_for_data_types_usage(&old_cluster);
+ /*
+ * Unicode updates can affect some objects that use expressions with
+ * functions dependent on Unicode.
+ */
+ check_for_unicode_update(&old_cluster);
+
/*
* PG 14 changed the function signature of encoding conversion functions.
* Conversions from older versions cannot be upgraded automatically
@@ -1740,6 +1748,178 @@ check_for_user_defined_encoding_conversions(ClusterInfo *cluster)
check_ok();
}
+/*
+ * Callback function for processing results of query for
+ * check_for_unicode_update()'s UpgradeTask. If the query returned any rows
+ * (i.e., the check failed), write the details to the report file.
+ */
+static void
+process_unicode_update(DbInfo *dbinfo, PGresult *res, void *arg)
+{
+ UpgradeTaskReport *report = (UpgradeTaskReport *) arg;
+ int ntups = PQntuples(res);
+ int i_reloid = PQfnumber(res, "reloid");
+ int i_nspname = PQfnumber(res, "nspname");
+ int i_relname = PQfnumber(res, "relname");
+
+ if (ntups == 0)
+ return;
+
+ if (report->file == NULL &&
+ (report->file = fopen_priv(report->path, "w")) == NULL)
+ pg_fatal("could not open file \"%s\": %m", report->path);
+
+ fprintf(report->file, "In database: %s\n", dbinfo->db_name);
+
+ for (int rowno = 0; rowno < ntups; rowno++)
+ fprintf(report->file, " (oid=%s) %s.%s\n",
+ PQgetvalue(res, rowno, i_reloid),
+ PQgetvalue(res, rowno, i_nspname),
+ PQgetvalue(res, rowno, i_relname));
+}
+
+/*
+ * Check if the Unicode version built into Postgres changed between the old
+ * cluster and the new cluster.
+ */
+static bool
+unicode_version_changed(ClusterInfo *cluster)
+{
+ PGconn *conn_template1 = connectToServer(cluster, "template1");
+ PGresult *res;
+ char *old_unicode_version;
+ bool unicode_updated;
+
+ res = executeQueryOrDie(conn_template1, "SELECT unicode_version()");
+ old_unicode_version = PQgetvalue(res, 0, 0);
+ unicode_updated = (strcmp(old_unicode_version, PG_UNICODE_VERSION) != 0);
+
+ PQclear(res);
+ PQfinish(conn_template1);
+
+ return unicode_updated;
+}
+
+/*
+ * check_for_unicode_update()
+ *
+ * Check if the version of Unicode in the old server and the new server
+ * differ. If so, check for indexes, partitioned tables, or constraints that
+ * use expressions with functions dependent on Unicode behavior.
+ */
+static void
+check_for_unicode_update(ClusterInfo *cluster)
+{
+ UpgradeTaskReport report;
+ UpgradeTask *task = upgrade_task_create();
+ const char *query;
+
+ /*
+ * The builtin provider did not exist prior to version 17. While there are
+ * still problems that could potentially be caught from earlier versions,
+ * such as an index on NORMALIZE(), we don't check for that here.
+ */
+ if (GET_MAJOR_VERSION(cluster->major_version) < 1700)
+ return;
+
+ prep_status("Checking for objects affected by Unicode update");
+
+ if (!unicode_version_changed(cluster))
+ {
+ check_ok();
+ return;
+ }
+
+ report.file = NULL;
+ snprintf(report.path, sizeof(report.path), "%s/%s",
+ log_opts.basedir,
+ "unicode_dependent_rels.txt");
+
+ query =
+ /* collations that use built-in Unicode for character semantics */
+ "WITH collations(collid) AS ( "
+ " SELECT oid FROM pg_collation "
+ " WHERE collprovider='b' AND colllocale IN ('C.UTF-8','PG_UNICODE_FAST') "
+ /* include default collation, if appropriate */
+ " UNION "
+ " SELECT 'pg_catalog.default'::regcollation FROM pg_database "
+ " WHERE datname = current_database() AND "
+ " datlocprovider='b' AND datlocale IN ('C.UTF-8','PG_UNICODE_FAST') "
+ "), "
+ /* functions that use built-in Unicode */
+ "functions(procid) AS ( "
+ " SELECT proc.oid FROM pg_proc proc "
+ " WHERE proname IN ('normalize','unicode_assigned','unicode_version','is_normalized') AND "
+ " pronamespace='pg_catalog'::regnamespace "
+ "), "
+ /* operators that use the input collation for character semantics */
+ "coll_operators(operid, procid, collid) AS ( "
+ " SELECT oper.oid, oper.oprcode, collid FROM pg_operator oper, collations "
+ " WHERE oprname IN ('~', '~*', '!~', '!~*', '~~*', '!~~*') AND "
+ " oprnamespace='pg_catalog'::regnamespace AND "
+ " oprright='text'::regtype "
+ "), "
+ /* functions that use the input collation for character semantics */
+ "coll_functions(procid, collid) AS ( "
+ " SELECT proc.oid, collid FROM pg_proc proc, collations "
+ " WHERE proname IN ('lower','initcap','upper') AND "
+ " pronamespace='pg_catalog'::regnamespace AND "
+ " proargtypes[0] = 'text'::regtype "
+ /* include functions behind the operators listed above */
+ " UNION "
+ " SELECT procid, collid FROM coll_operators "
+ "), "
+
+ /*
+ * Generate patterns to search a pg_node_tree for the above functions and
+ * operators.
+ */
+ "patterns(p) AS ( "
+ " SELECT '{FUNCEXPR :funcid ' || procid::text || '[ }]' FROM functions "
+ " UNION "
+ " SELECT '{OPEXPR :opno ' || operid::text || ' (:\\w+ \\w+ )*' || "
+ " ':inputcollid ' || collid::text || '[ }]' FROM coll_operators "
+ " UNION "
+ " SELECT '{FUNCEXPR :funcid ' || procid::text || ' (:\\w+ \\w+ )*' || "
+ " ':inputcollid ' || collid::text || '[ }]' FROM coll_functions "
+ ") "
+
+ /*
+ * Match the patterns against expressions used for relation contents.
+ */
+ "SELECT reloid, relkind, nspname, relname "
+ " FROM ( "
+ " SELECT conrelid "
+ " FROM pg_constraint, patterns WHERE conbin::text ~ p "
+ " UNION "
+ " SELECT indexrelid "
+ " FROM pg_index, patterns WHERE indexprs::text ~ p OR indpred::text ~ p "
+ " UNION "
+ " SELECT partrelid "
+ " FROM pg_partitioned_table, patterns WHERE partexprs::text ~ p "
+ " ) s(reloid), pg_class c, pg_namespace n, pg_database d "
+ " WHERE s.reloid = c.oid AND c.relnamespace = n.oid AND "
+ " d.datname = current_database() AND "
+ " d.encoding = pg_char_to_encoding('UTF8');";
+
+ upgrade_task_add_step(task, query,
+ process_unicode_update,
+ true, &report);
+ upgrade_task_run(task, cluster);
+ upgrade_task_free(task);
+
+ if (report.file)
+ {
+ fclose(report.file);
+ report_status(PG_WARNING, "warning");
+ pg_log(PG_WARNING, "Your installation contains relations that may be affected by a new version of Unicode.\n"
+ "A list of potentially-affected relations is in the file:\n"
+ " %s", report.path);
+ }
+ else
+ check_ok();
+}
+
/*
* check_new_cluster_logical_replication_slots()
*
--
2.34.1