[FarGroup/FarManager] master: LuaFAR: update luautf8 library to 0.1.5 (14c251185)

0 views
Skip to first unread message

farg...@farmanager.com

unread,
Mar 7, 2023, 12:00:48 PM3/7/23
to farco...@googlegroups.com
Repository : https://github.com/FarGroup/FarManager
On branch : master
Link : https://github.com/FarGroup/FarManager/commit/14c251185d1e7348198eeef76d2b0c8a6e301d63

>---------------------------------------------------------------

commit 14c251185d1e7348198eeef76d2b0c8a6e301d63
Author: johnd0e <1838643...@users.noreply.github.com>
Date: Tue Mar 7 16:06:17 2023 +0100

LuaFAR: update luautf8 library to 0.1.5

New functions:
- utf8.isvalid(s) -> boolean
- utf8.clean(s[, replacement_string]) -> cleaned_string, was_valid
- utf8.invalidoffset(s[, init]) -> offset

See https://github.com/starwing/luautf8 for more info.

Note:
utf8.utf8valid is rather obsolete now.


>---------------------------------------------------------------

14c251185d1e7348198eeef76d2b0c8a6e301d63
enc/enc_lua/luafar_manual.tsi | 31 ++-
plugins/luamacro/_globalinfo.lua | 2 +-
plugins/luamacro/changelog | 14 +
plugins/luamacro/luafar/lutf8lib.c | 130 ++++++++-
plugins/luamacro/luafar/unidata.h | 521 ++++++++++++++++++++++++-------------
plugins/luamacro/luafar/version.h | 2 +-
6 files changed, 508 insertions(+), 192 deletions(-)

diff --git a/enc/enc_lua/luafar_manual.tsi b/enc/enc_lua/luafar_manual.tsi
index da8c0d37f..28369ddaf 100644
--- a/enc/enc_lua/luafar_manual.tsi
+++ b/enc/enc_lua/luafar_manual.tsi
@@ -11462,12 +11462,15 @@ lv=1
dt=Text
nm=luautf8
ctime=3776336119
-mtime=3795716600
+mtime=3887368054
<article>
#_<markdown>
#_
#_UTF-8 module for Lua 5.x
#_========================
+#_[![Build Status](https://travis-ci.org/starwing/luautf8.svg?branch=master)](https://travis-ci.org/starwing/luautf8)
+#_[![Coverage Status](https://coveralls.io/repos/github/starwing/luautf8/badge.svg?branch=master)](https://coveralls.io/github/starwing/luautf8?branch=master)
+#_
#_This module adds UTF-8 support to Lua.
#_
#_It use data extracted from
@@ -11480,11 +11483,12 @@ mtime=3795716600
#_It mainly used to compatible with Lua's own string module, it passed all
#_string and pattern matching test in lua test suite[2].
#_
-#_It also add some useful routines against UTF-8 features, some like:
+#_It also adds some useful routines against UTF-8 features, such as:
#_- a convenient interface to escape Unicode sequence in string.
#_- string insert/remove, since UTF-8 substring extract may expensive.
#_- calculate Unicode width, useful when implement e.g. console emulator.
#_- a useful interface to translate Unicode offset and byte offset.
+#_- checking UTF-8 strings for validity and removing invalid byte sequences.
#_
#_Note that to avoid conflict with the Lua5.3's buitin library 'utf8',
#_this library produce a file like lua-utf8.dll or lua-utf8.so. so use
@@ -11627,6 +11631,24 @@ mtime=3795716600
#_compare a and b without case, -1 means a < b, 0 means a == b and 1 means a > b.
#_
#_
+#_### utf8.isvalid(s) -> boolean
+#_check whether s is a valid UTF-8 string or not.
+#_
+#_
+#_### utf8.clean(s[, replacement_string]) -> cleaned_string, was_valid
+#_replace any invalid UTF-8 byte sequences in s with the replacement string.
+#_if no replacement string is provided, the default is "?" (REPLACEMENT CHARACTER U+FFFD).
+#_note that *any* number of consecutive invalid bytes will be replaced by a single copy of the replacement string.
+#_the 2nd return value is true if the original string was already valid (meaning no replacements were made).
+#_
+#_
+#_### utf8.invalidoffset(s[, init]) -> offset
+#_return the byte offset within s of the first invalid UTF-8 byte sequence.
+#_(1 is the first byte of the string.)
+#_if s is a valid UTF-8 string, return nil.
+#_the optional numeric argument init specifies where to start the search; its default value is 1 and can be negative.
+#_
+#_
#_Improvement needed
#_------------------
#_
@@ -11639,7 +11661,6 @@ mtime=3795716600
#_License
#_-------
#_It use same license with Lua: http://www.lua.org/license.html
-#_
</article>
</node>
<node>
@@ -11699,7 +11720,7 @@ lv=2
dt=Text
nm=utf8.utf8valid
ctime=3579943896
-mtime=3776451338
+mtime=3887368189
<article>
#_result, len = utf8.utf8valid (str)
#_ or
@@ -11720,6 +11741,8 @@ mtime=3776451338
#_
#_**Note:**
#_ This is an added function, not present in the original **luautf8** library.
+#_ It was introduced in LuaFAR before utf8.isvalid/utf8.invalidoffset got available in lua-utf8, and now is rather obsolete.
+#_ Left for compatibility.
</article>
</node>
<node>
diff --git a/plugins/luamacro/_globalinfo.lua b/plugins/luamacro/_globalinfo.lua
index 2e1f6d286..190e37b97 100644
--- a/plugins/luamacro/_globalinfo.lua
+++ b/plugins/luamacro/_globalinfo.lua
@@ -1,6 +1,6 @@
function export.GetGlobalInfo()
return {
- Version = { 3, 0, 0, 771 },
+ Version = { 3, 0, 0, 772 },
MinFarVersion = { 3, 0, 0, 5171 },
Guid = win.Uuid("4EBBEFC8-2084-4B7F-94C0-692CE136894D"),
Title = "LuaMacro",
diff --git a/plugins/luamacro/changelog b/plugins/luamacro/changelog
index 616a1b128..604dfbac8 100644
--- a/plugins/luamacro/changelog
+++ b/plugins/luamacro/changelog
@@ -1,3 +1,17 @@
+johnd0e 2023-03-07 15:59:00+01:00 - build 772
+
+1. LuaFAR: update luautf8 library to 0.1.5
+
+ New functions:
+ - utf8.isvalid(s) -> boolean
+ - utf8.clean(s[, replacement_string]) -> cleaned_string, was_valid
+ - utf8.invalidoffset(s[, init]) -> offset
+
+ See https://github.com/starwing/luautf8 for more info.
+
+ Note:
+ utf8.utf8valid is rather obsolete now.
+
zg 2023-02-22 02:04:22+02:00 - build 771

1. experimental "FolderChanged" event.
diff --git a/plugins/luamacro/luafar/lutf8lib.c b/plugins/luamacro/luafar/lutf8lib.c
index bbded71c0..522599e41 100644
--- a/plugins/luamacro/luafar/lutf8lib.c
+++ b/plugins/luamacro/luafar/lutf8lib.c
@@ -4,9 +4,9 @@
#include <lauxlib.h>
#include <lualib.h>

-
#include <assert.h>
#include <string.h>
+#include <stdint.h>

#include "unidata.h"

@@ -115,6 +115,54 @@ static int utf8_range(const char *s, const char *e, lua_Integer *i, lua_Integer
return *i < *j;
}

+/* Indexed by top nibble of first byte in code unit */
+static uint8_t utf8_code_unit_len[] = {
+ 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 2, 2, 3, 4
+};
+
+/* Return pointer to first invalid UTF-8 sequence in 's', or NULL if valid */
+static const char *utf8_invalid_offset(const char *s, const char *e) {
+ while (s < e) {
+ uint8_t c = *s;
+ if (c >= 0x80) {
+ /* c < 0xC0 means a continuation byte, but we are not in the middle of a multi-byte code unit
+ * c >= 0xC0 && c < 0xC2 means an overlong 2-byte code unit
+ * c >= 0xF8 means a 5-byte or 6-byte code unit, which is illegal, or else illegal byte 0xFE/0xFF
+ * c >= 0xF5 && c < 0xF8 means a 4-byte code unit encoding invalid codepoint > U+10FFFF */
+ if (c < 0xC2 || c >= 0xF5)
+ return s;
+ uint8_t needed_bytes = utf8_code_unit_len[c >> 4];
+ if (e - s < needed_bytes)
+ return s; /* String is truncated */
+ uint8_t c2 = *(s+1);
+ if ((c2 & 0xC0) != 0x80)
+ return s; /* 2nd byte of code unit is not a continuation byte */
+ if (needed_bytes >= 3) {
+ uint8_t c3 = *(s+2);
+ if ((c3 & 0xC0) != 0x80)
+ return s; /* 3rd byte of code unit is not a continuation byte */
+ if (needed_bytes == 3) {
+ if (c == 0xE0 && c2 < 0xA0)
+ return s; /* Overlong 3-byte code unit */
+ if (c == 0xED && c2 >= 0xA0)
+ return s; /* Reserved codepoint from U+D800-U+DFFF */
+ } else {
+ uint8_t c4 = *(s+3);
+ if ((c4 & 0xC0) != 0x80)
+ return s; /* 4th byte of code unit is not a continuation byte */
+ if (c == 0xF0 && c2 < 0x90)
+ return s; /* Overlong 4-byte code unit */
+ if (c == 0xF4 && c2 >= 0x90)
+ return s; /* Illegal codepoint > U+10FFFF */
+ }
+ }
+ s += needed_bytes;
+ } else {
+ s++;
+ }
+ }
+ return NULL;
+}

/* Unicode character categories */

@@ -1239,6 +1287,83 @@ static int Lutf8_gsub (lua_State *L) {
return 2;
}

+static int Lutf8_isvalid(lua_State *L) {
+ const char *e, *s = check_utf8(L, 1, &e);
+ const char *invalid = utf8_invalid_offset(s, e);
+ lua_pushboolean(L, invalid == NULL);
+ return 1;
+}
+
+static int Lutf8_invalidoffset(lua_State *L) {
+ const char *e, *s = check_utf8(L, 1, &e);
+ const char *orig_s = s;
+ int offset = luaL_optinteger(L, 2, 0);
+ if (offset > 1) {
+ offset--;
+ s += offset;
+ if (s >= e) {
+ lua_pushnil(L);
+ return 1;
+ }
+ } else if (offset < 0 && s - e < offset) {
+ s = e + offset;
+ }
+ const char *invalid = utf8_invalid_offset(s, e);
+ if (invalid == NULL) {
+ lua_pushnil(L);
+ } else {
+ lua_pushinteger(L, invalid - orig_s + 1);
+ }
+ return 1;
+}
+
+static int Lutf8_clean(lua_State *L) {
+ const char *e, *s = check_utf8(L, 1, &e);
+
+ /* Default replacement string is REPLACEMENT CHARACTER U+FFFD */
+ size_t repl_len;
+ const char *r = luaL_optlstring(L, 2, "\xEF\xBF\xBD", &repl_len);
+
+ if (lua_gettop(L) > 1) {
+ /* Check if replacement string is valid UTF-8 or not */
+ if (utf8_invalid_offset(r, r + repl_len) != NULL) {
+ lua_pushstring(L, "replacement string must be valid UTF-8");
+ lua_error(L);
+ }
+ }
+
+ const char *invalid = utf8_invalid_offset(s, e);
+ if (invalid == NULL) {
+ lua_settop(L, 1); /* Return input string without modification */
+ lua_pushboolean(L, 1); /* String was clean already */
+ return 2;
+ }
+
+ luaL_Buffer buff;
+ luaL_buffinit(L, &buff);
+
+ while (1) {
+ /* Invariant: 's' points to first GOOD byte not in output buffer,
+ * 'invalid' points to first BAD byte after that */
+ luaL_addlstring(&buff, s, invalid - s);
+ luaL_addlstring(&buff, r, repl_len);
+ /* We do not replace every bad byte with the replacement character,
+ * but rather a contiguous sequence of bad bytes
+ * Restore the invariant by stepping forward until we find at least
+ * one good byte */
+ s = invalid;
+ while (s == invalid) {
+ s++;
+ invalid = utf8_invalid_offset(s, e);
+ }
+ if (invalid == NULL) {
+ luaL_addlstring(&buff, s, e - s);
+ luaL_pushresult(&buff);
+ lua_pushboolean(L, 0); /* String was not clean */
+ return 2;
+ }
+ }
+}

/* lua module import interface */

@@ -1276,6 +1401,9 @@ LUALIB_API int luaopen_utf8 (lua_State *L) {
ENTRY(gmatch),
ENTRY(gsub),
ENTRY(match),
+ ENTRY(isvalid),
+ ENTRY(invalidoffset),
+ ENTRY(clean),
#undef ENTRY
{ NULL, NULL }
};
diff --git a/plugins/luamacro/luafar/unidata.h b/plugins/luamacro/luafar/unidata.h
index 428ef2cdc..b615dff4b 100644
--- a/plugins/luamacro/luafar/unidata.h
+++ b/plugins/luamacro/luafar/unidata.h
@@ -71,8 +71,9 @@ static struct range_table alpha_table[] = {
{ 0x81A, 0x82C, 1 },
{ 0x840, 0x858, 1 },
{ 0x860, 0x86A, 1 },
- { 0x8A0, 0x8B4, 1 },
- { 0x8B6, 0x8C7, 1 },
+ { 0x870, 0x887, 1 },
+ { 0x889, 0x88E, 1 },
+ { 0x8A0, 0x8C9, 1 },
{ 0x8D4, 0x8DF, 1 },
{ 0x8E3, 0x8E9, 1 },
{ 0x8F0, 0x93B, 1 },
@@ -150,8 +151,7 @@ static struct range_table alpha_table[] = {
{ 0xBC6, 0xBC8, 1 },
{ 0xBCA, 0xBCC, 1 },
{ 0xBD0, 0xBD7, 7 },
- { 0xC00, 0xC03, 1 },
- { 0xC05, 0xC0C, 1 },
+ { 0xC00, 0xC0C, 1 },
{ 0xC0E, 0xC10, 1 },
{ 0xC12, 0xC28, 1 },
{ 0xC2A, 0xC39, 1 },
@@ -160,7 +160,8 @@ static struct range_table alpha_table[] = {
{ 0xC4A, 0xC4C, 1 },
{ 0xC55, 0xC56, 1 },
{ 0xC58, 0xC5A, 1 },
- { 0xC60, 0xC63, 1 },
+ { 0xC5D, 0xC60, 3 },
+ { 0xC61, 0xC63, 1 },
{ 0xC80, 0xC83, 1 },
{ 0xC85, 0xC8C, 1 },
{ 0xC8E, 0xC90, 1 },
@@ -171,9 +172,9 @@ static struct range_table alpha_table[] = {
{ 0xCC6, 0xCC8, 1 },
{ 0xCCA, 0xCCC, 1 },
{ 0xCD5, 0xCD6, 1 },
- { 0xCDE, 0xCE0, 2 },
- { 0xCE1, 0xCE3, 1 },
- { 0xCF1, 0xCF2, 1 },
+ { 0xCDD, 0xCDE, 1 },
+ { 0xCE0, 0xCE3, 1 },
+ { 0xCF1, 0xCF3, 1 },
{ 0xD00, 0xD0C, 1 },
{ 0xD0E, 0xD10, 1 },
{ 0xD12, 0xD3A, 1 },
@@ -209,7 +210,7 @@ static struct range_table alpha_table[] = {
{ 0xF00, 0xF40, 64 },
{ 0xF41, 0xF47, 1 },
{ 0xF49, 0xF6C, 1 },
- { 0xF71, 0xF81, 1 },
+ { 0xF71, 0xF83, 1 },
{ 0xF88, 0xF97, 1 },
{ 0xF99, 0xFBC, 1 },
{ 0x1000, 0x1036, 1 },
@@ -244,9 +245,8 @@ static struct range_table alpha_table[] = {
{ 0x1681, 0x169A, 1 },
{ 0x16A0, 0x16EA, 1 },
{ 0x16EE, 0x16F8, 1 },
- { 0x1700, 0x170C, 1 },
- { 0x170E, 0x1713, 1 },
- { 0x1720, 0x1733, 1 },
+ { 0x1700, 0x1713, 1 },
+ { 0x171F, 0x1733, 1 },
{ 0x1740, 0x1753, 1 },
{ 0x1760, 0x176C, 1 },
{ 0x176E, 0x1770, 1 },
@@ -268,10 +268,11 @@ static struct range_table alpha_table[] = {
{ 0x1A20, 0x1A5E, 1 },
{ 0x1A61, 0x1A74, 1 },
{ 0x1AA7, 0x1ABF, 24 },
- { 0x1AC0, 0x1B00, 64 },
- { 0x1B01, 0x1B33, 1 },
+ { 0x1AC0, 0x1ACC, 12 },
+ { 0x1ACD, 0x1ACE, 1 },
+ { 0x1B00, 0x1B33, 1 },
{ 0x1B35, 0x1B43, 1 },
- { 0x1B45, 0x1B4B, 1 },
+ { 0x1B45, 0x1B4C, 1 },
{ 0x1B80, 0x1BA9, 1 },
{ 0x1BAC, 0x1BAF, 1 },
{ 0x1BBA, 0x1BE5, 1 },
@@ -319,9 +320,7 @@ static struct range_table alpha_table[] = {
{ 0x214E, 0x2160, 18 },
{ 0x2161, 0x2188, 1 },
{ 0x24B6, 0x24E9, 1 },
- { 0x2C00, 0x2C2E, 1 },
- { 0x2C30, 0x2C5E, 1 },
- { 0x2C60, 0x2CE4, 1 },
+ { 0x2C00, 0x2CE4, 1 },
{ 0x2CEB, 0x2CEE, 1 },
{ 0x2CF2, 0x2CF3, 1 },
{ 0x2D00, 0x2D25, 1 },
@@ -352,8 +351,7 @@ static struct range_table alpha_table[] = {
{ 0x31A0, 0x31BF, 1 },
{ 0x31F0, 0x31FF, 1 },
{ 0x3400, 0x4DBF, 1 },
- { 0x4E00, 0x9FFC, 1 },
- { 0xA000, 0xA48C, 1 },
+ { 0x4E00, 0xA48C, 1 },
{ 0xA4D0, 0xA4FD, 1 },
{ 0xA500, 0xA60C, 1 },
{ 0xA610, 0xA61F, 1 },
@@ -363,9 +361,11 @@ static struct range_table alpha_table[] = {
{ 0xA67F, 0xA6EF, 1 },
{ 0xA717, 0xA71F, 1 },
{ 0xA722, 0xA788, 1 },
- { 0xA78B, 0xA7BF, 1 },
- { 0xA7C2, 0xA7CA, 1 },
- { 0xA7F5, 0xA805, 1 },
+ { 0xA78B, 0xA7CA, 1 },
+ { 0xA7D0, 0xA7D1, 1 },
+ { 0xA7D3, 0xA7D5, 2 },
+ { 0xA7D6, 0xA7D9, 1 },
+ { 0xA7F2, 0xA805, 1 },
{ 0xA807, 0xA827, 1 },
{ 0xA840, 0xA873, 1 },
{ 0xA880, 0xA8C3, 1 },
@@ -446,9 +446,20 @@ static struct range_table alpha_table[] = {
{ 0x104D8, 0x104FB, 1 },
{ 0x10500, 0x10527, 1 },
{ 0x10530, 0x10563, 1 },
+ { 0x10570, 0x1057A, 1 },
+ { 0x1057C, 0x1058A, 1 },
+ { 0x1058C, 0x10592, 1 },
+ { 0x10594, 0x10595, 1 },
+ { 0x10597, 0x105A1, 1 },
+ { 0x105A3, 0x105B1, 1 },
+ { 0x105B3, 0x105B9, 1 },
+ { 0x105BB, 0x105BC, 1 },
{ 0x10600, 0x10736, 1 },
{ 0x10740, 0x10755, 1 },
{ 0x10760, 0x10767, 1 },
+ { 0x10780, 0x10785, 1 },
+ { 0x10787, 0x107B0, 1 },
+ { 0x107B2, 0x107BA, 1 },
{ 0x10800, 0x10805, 1 },
{ 0x10808, 0x1080A, 2 },
{ 0x1080B, 0x10835, 1 },
@@ -486,11 +497,14 @@ static struct range_table alpha_table[] = {
{ 0x10F00, 0x10F1C, 1 },
{ 0x10F27, 0x10F30, 9 },
{ 0x10F31, 0x10F45, 1 },
+ { 0x10F70, 0x10F81, 1 },
{ 0x10FB0, 0x10FC4, 1 },
{ 0x10FE0, 0x10FF6, 1 },
{ 0x11000, 0x11045, 1 },
- { 0x11082, 0x110B8, 1 },
- { 0x110D0, 0x110E8, 1 },
+ { 0x11071, 0x11075, 1 },
+ { 0x11080, 0x110B8, 1 },
+ { 0x110C2, 0x110D0, 14 },
+ { 0x110D1, 0x110E8, 1 },
{ 0x11100, 0x11132, 1 },
{ 0x11144, 0x11147, 1 },
{ 0x11150, 0x11172, 1 },
@@ -502,6 +516,7 @@ static struct range_table alpha_table[] = {
{ 0x11200, 0x11211, 1 },
{ 0x11213, 0x11234, 1 },
{ 0x11237, 0x1123E, 7 },
+ { 0x1123F, 0x11241, 1 },
{ 0x11280, 0x11286, 1 },
{ 0x11288, 0x1128A, 2 },
{ 0x1128B, 0x1128D, 1 },
@@ -536,6 +551,7 @@ static struct range_table alpha_table[] = {
{ 0x116B8, 0x11700, 72 },
{ 0x11701, 0x1171A, 1 },
{ 0x1171D, 0x1172A, 1 },
+ { 0x11740, 0x11746, 1 },
{ 0x11800, 0x11838, 1 },
{ 0x118A0, 0x118DF, 1 },
{ 0x118FF, 0x11906, 1 },
@@ -554,8 +570,8 @@ static struct range_table alpha_table[] = {
{ 0x11A01, 0x11A32, 1 },
{ 0x11A35, 0x11A3E, 1 },
{ 0x11A50, 0x11A97, 1 },
- { 0x11A9D, 0x11AC0, 35 },
- { 0x11AC1, 0x11AF8, 1 },
+ { 0x11A9D, 0x11AB0, 19 },
+ { 0x11AB1, 0x11AF8, 1 },
{ 0x11C00, 0x11C08, 1 },
{ 0x11C0A, 0x11C36, 1 },
{ 0x11C38, 0x11C3E, 1 },
@@ -578,14 +594,20 @@ static struct range_table alpha_table[] = {
{ 0x11D93, 0x11D96, 1 },
{ 0x11D98, 0x11EE0, 328 },
{ 0x11EE1, 0x11EF6, 1 },
+ { 0x11F00, 0x11F10, 1 },
+ { 0x11F12, 0x11F3A, 1 },
+ { 0x11F3E, 0x11F40, 1 },
{ 0x11FB0, 0x12000, 80 },
{ 0x12001, 0x12399, 1 },
{ 0x12400, 0x1246E, 1 },
{ 0x12480, 0x12543, 1 },
- { 0x13000, 0x1342E, 1 },
+ { 0x12F90, 0x12FF0, 1 },
+ { 0x13000, 0x1342F, 1 },
+ { 0x13441, 0x13446, 1 },
{ 0x14400, 0x14646, 1 },
{ 0x16800, 0x16A38, 1 },
{ 0x16A40, 0x16A5E, 1 },
+ { 0x16A70, 0x16ABE, 1 },
{ 0x16AD0, 0x16AED, 1 },
{ 0x16B00, 0x16B2F, 1 },
{ 0x16B40, 0x16B43, 1 },
@@ -601,9 +623,14 @@ static struct range_table alpha_table[] = {
{ 0x17001, 0x187F7, 1 },
{ 0x18800, 0x18CD5, 1 },
{ 0x18D00, 0x18D08, 1 },
- { 0x1B000, 0x1B11E, 1 },
- { 0x1B150, 0x1B152, 1 },
- { 0x1B164, 0x1B167, 1 },
+ { 0x1AFF0, 0x1AFF3, 1 },
+ { 0x1AFF5, 0x1AFFB, 1 },
+ { 0x1AFFD, 0x1AFFE, 1 },
+ { 0x1B000, 0x1B122, 1 },
+ { 0x1B132, 0x1B150, 30 },
+ { 0x1B151, 0x1B152, 1 },
+ { 0x1B155, 0x1B164, 15 },
+ { 0x1B165, 0x1B167, 1 },
{ 0x1B170, 0x1B2FB, 1 },
{ 0x1BC00, 0x1BC6A, 1 },
{ 0x1BC70, 0x1BC7C, 1 },
@@ -640,15 +667,25 @@ static struct range_table alpha_table[] = {
{ 0x1D78A, 0x1D7A8, 1 },
{ 0x1D7AA, 0x1D7C2, 1 },
{ 0x1D7C4, 0x1D7CB, 1 },
+ { 0x1DF00, 0x1DF1E, 1 },
+ { 0x1DF25, 0x1DF2A, 1 },
{ 0x1E000, 0x1E006, 1 },
{ 0x1E008, 0x1E018, 1 },
{ 0x1E01B, 0x1E021, 1 },
{ 0x1E023, 0x1E024, 1 },
{ 0x1E026, 0x1E02A, 1 },
- { 0x1E100, 0x1E12C, 1 },
+ { 0x1E030, 0x1E06D, 1 },
+ { 0x1E08F, 0x1E100, 113 },
+ { 0x1E101, 0x1E12C, 1 },
{ 0x1E137, 0x1E13D, 1 },
- { 0x1E14E, 0x1E2C0, 370 },
- { 0x1E2C1, 0x1E2EB, 1 },
+ { 0x1E14E, 0x1E290, 322 },
+ { 0x1E291, 0x1E2AD, 1 },
+ { 0x1E2C0, 0x1E2EB, 1 },
+ { 0x1E4D0, 0x1E4EB, 1 },
+ { 0x1E7E0, 0x1E7E6, 1 },
+ { 0x1E7E8, 0x1E7EB, 1 },
+ { 0x1E7ED, 0x1E7EE, 1 },
+ { 0x1E7F0, 0x1E7FE, 1 },
{ 0x1E800, 0x1E8C4, 1 },
{ 0x1E900, 0x1E943, 1 },
{ 0x1E947, 0x1E94B, 4 },
@@ -679,13 +716,14 @@ static struct range_table alpha_table[] = {
{ 0x1F130, 0x1F149, 1 },
{ 0x1F150, 0x1F169, 1 },
{ 0x1F170, 0x1F189, 1 },
- { 0x20000, 0x2A6DD, 1 },
- { 0x2A700, 0x2B734, 1 },
+ { 0x20000, 0x2A6DF, 1 },
+ { 0x2A700, 0x2B739, 1 },
{ 0x2B740, 0x2B81D, 1 },
{ 0x2B820, 0x2CEA1, 1 },
{ 0x2CEB0, 0x2EBE0, 1 },
{ 0x2F800, 0x2FA1D, 1 },
{ 0x30000, 0x3134A, 1 },
+ { 0x31350, 0x323AF, 1 },
};

static struct range_table lower_table[] = {
@@ -744,7 +782,7 @@ static struct range_table lower_table[] = {
{ 0x4CF, 0x52F, 2 },
{ 0x560, 0x588, 1 },
{ 0x10D0, 0x10FA, 1 },
- { 0x10FD, 0x10FF, 1 },
+ { 0x10FC, 0x10FF, 1 },
{ 0x13F8, 0x13FD, 1 },
{ 0x1C80, 0x1C88, 1 },
{ 0x1D00, 0x1DBF, 1 },
@@ -783,7 +821,7 @@ static struct range_table lower_table[] = {
{ 0x2171, 0x217F, 1 },
{ 0x2184, 0x24D0, 844 },
{ 0x24D1, 0x24E9, 1 },
- { 0x2C30, 0x2C5E, 1 },
+ { 0x2C30, 0x2C5F, 1 },
{ 0x2C61, 0x2C65, 4 },
{ 0x2C66, 0x2C6C, 2 },
{ 0x2C71, 0x2C73, 2 },
@@ -808,18 +846,28 @@ static struct range_table lower_table[] = {
{ 0xA794, 0xA795, 1 },
{ 0xA797, 0xA7A9, 2 },
{ 0xA7AF, 0xA7B5, 6 },
- { 0xA7B7, 0xA7BF, 2 },
- { 0xA7C3, 0xA7C8, 5 },
- { 0xA7CA, 0xA7F6, 44 },
- { 0xA7F8, 0xA7FA, 1 },
+ { 0xA7B7, 0xA7C3, 2 },
+ { 0xA7C8, 0xA7CA, 2 },
+ { 0xA7D1, 0xA7D9, 2 },
+ { 0xA7F2, 0xA7F4, 1 },
+ { 0xA7F6, 0xA7F8, 2 },
+ { 0xA7F9, 0xA7FA, 1 },
{ 0xAB30, 0xAB5A, 1 },
- { 0xAB5C, 0xAB68, 1 },
+ { 0xAB5C, 0xAB69, 1 },
{ 0xAB70, 0xABBF, 1 },
{ 0xFB00, 0xFB06, 1 },
{ 0xFB13, 0xFB17, 1 },
{ 0xFF41, 0xFF5A, 1 },
{ 0x10428, 0x1044F, 1 },
{ 0x104D8, 0x104FB, 1 },
+ { 0x10597, 0x105A1, 1 },
+ { 0x105A3, 0x105B1, 1 },
+ { 0x105B3, 0x105B9, 1 },
+ { 0x105BB, 0x105BC, 1 },
+ { 0x10780, 0x10783, 3 },
+ { 0x10784, 0x10785, 1 },
+ { 0x10787, 0x107B0, 1 },
+ { 0x107B2, 0x107BA, 1 },
{ 0x10CC0, 0x10CF2, 1 },
{ 0x118C0, 0x118DF, 1 },
{ 0x16E60, 0x16E7F, 1 },
@@ -850,8 +898,12 @@ static struct range_table lower_table[] = {
{ 0x1D78A, 0x1D78F, 1 },
{ 0x1D7AA, 0x1D7C2, 1 },
{ 0x1D7C4, 0x1D7C9, 1 },
- { 0x1D7CB, 0x1E922, 4439 },
- { 0x1E923, 0x1E943, 1 },
+ { 0x1D7CB, 0x1DF00, 1845 },
+ { 0x1DF01, 0x1DF09, 1 },
+ { 0x1DF0B, 0x1DF1E, 1 },
+ { 0x1DF25, 0x1DF2A, 1 },
+ { 0x1E030, 0x1E06D, 1 },
+ { 0x1E922, 0x1E943, 1 },
};

static struct range_table upper_table[] = {
@@ -940,7 +992,7 @@ static struct range_table upper_table[] = {
{ 0x2161, 0x216F, 1 },
{ 0x2183, 0x24B6, 819 },
{ 0x24B7, 0x24CF, 1 },
- { 0x2C00, 0x2C2E, 1 },
+ { 0x2C00, 0x2C2F, 1 },
{ 0x2C60, 0x2C62, 2 },
{ 0x2C63, 0x2C64, 1 },
{ 0x2C67, 0x2C6D, 2 },
@@ -961,13 +1013,18 @@ static struct range_table upper_table[] = {
{ 0xA796, 0xA7AA, 2 },
{ 0xA7AB, 0xA7AE, 1 },
{ 0xA7B0, 0xA7B4, 1 },
- { 0xA7B6, 0xA7BE, 2 },
- { 0xA7C2, 0xA7C4, 2 },
+ { 0xA7B6, 0xA7C4, 2 },
{ 0xA7C5, 0xA7C7, 1 },
- { 0xA7C9, 0xA7F5, 44 },
- { 0xFF21, 0xFF3A, 1 },
+ { 0xA7C9, 0xA7D0, 7 },
+ { 0xA7D6, 0xA7D8, 2 },
+ { 0xA7F5, 0xFF21, 22316 },
+ { 0xFF22, 0xFF3A, 1 },
{ 0x10400, 0x10427, 1 },
{ 0x104B0, 0x104D3, 1 },
+ { 0x10570, 0x1057A, 1 },
+ { 0x1057C, 0x1058A, 1 },
+ { 0x1058C, 0x10592, 1 },
+ { 0x10594, 0x10595, 1 },
{ 0x10C80, 0x10CB2, 1 },
{ 0x118A0, 0x118BF, 1 },
{ 0x16E40, 0x16E5F, 1 },
@@ -1031,7 +1088,7 @@ static struct range_table unprintable_table[] = {
{ 0x61C, 0x115F, 2883 },
{ 0x1160, 0x17B4, 1620 },
{ 0x17B5, 0x180B, 86 },
- { 0x180C, 0x180E, 1 },
+ { 0x180C, 0x180F, 1 },
{ 0x200B, 0x200F, 1 },
{ 0x202A, 0x202E, 1 },
{ 0x2060, 0x206F, 1 },
@@ -1063,8 +1120,8 @@ static struct range_table graph_table[] = {
{ 0x5D0, 0x5EA, 1 },
{ 0x5EF, 0x5F4, 1 },
{ 0x606, 0x60F, 1 },
- { 0x61B, 0x61E, 3 },
- { 0x61F, 0x64A, 1 },
+ { 0x61B, 0x61D, 2 },
+ { 0x61E, 0x64A, 1 },
{ 0x660, 0x66F, 1 },
{ 0x671, 0x6D5, 1 },
{ 0x6DE, 0x6E5, 7 },
@@ -1083,8 +1140,8 @@ static struct range_table graph_table[] = {
{ 0x840, 0x858, 1 },
{ 0x85E, 0x860, 2 },
{ 0x861, 0x86A, 1 },
- { 0x8A0, 0x8B4, 1 },
- { 0x8B6, 0x8C7, 1 },
+ { 0x870, 0x88E, 1 },
+ { 0x8A0, 0x8C9, 1 },
{ 0x903, 0x939, 1 },
{ 0x93B, 0x93D, 2 },
{ 0x93E, 0x940, 1 },
@@ -1169,8 +1226,9 @@ static struct range_table graph_table[] = {
{ 0xC3D, 0xC41, 4 },
{ 0xC42, 0xC44, 1 },
{ 0xC58, 0xC5A, 1 },
- { 0xC60, 0xC61, 1 },
- { 0xC66, 0xC6F, 1 },
+ { 0xC5D, 0xC60, 3 },
+ { 0xC61, 0xC66, 5 },
+ { 0xC67, 0xC6F, 1 },
{ 0xC77, 0xC80, 1 },
{ 0xC82, 0xC8C, 1 },
{ 0xC8E, 0xC90, 1 },
@@ -1182,10 +1240,10 @@ static struct range_table graph_table[] = {
{ 0xCC3, 0xCC4, 1 },
{ 0xCC7, 0xCC8, 1 },
{ 0xCCA, 0xCCB, 1 },
- { 0xCDE, 0xCE0, 2 },
- { 0xCE1, 0xCE6, 5 },
- { 0xCE7, 0xCEF, 1 },
- { 0xCF1, 0xCF2, 1 },
+ { 0xCDD, 0xCDE, 1 },
+ { 0xCE0, 0xCE1, 1 },
+ { 0xCE6, 0xCEF, 1 },
+ { 0xCF1, 0xCF3, 1 },
{ 0xD02, 0xD0C, 1 },
{ 0xD0E, 0xD10, 1 },
{ 0xD12, 0xD3A, 1 },
@@ -1267,10 +1325,10 @@ static struct range_table graph_table[] = {
{ 0x13F8, 0x13FD, 1 },
{ 0x1400, 0x169C, 1 },
{ 0x16A0, 0x16F8, 1 },
- { 0x1700, 0x170C, 1 },
- { 0x170E, 0x1711, 1 },
+ { 0x1700, 0x1711, 1 },
+ { 0x1715, 0x171F, 10 },
{ 0x1720, 0x1731, 1 },
- { 0x1735, 0x1736, 1 },
+ { 0x1734, 0x1736, 1 },
{ 0x1740, 0x1751, 1 },
{ 0x1760, 0x176C, 1 },
{ 0x176E, 0x1770, 1 },
@@ -1311,9 +1369,9 @@ static struct range_table graph_table[] = {
{ 0x1B04, 0x1B33, 1 },
{ 0x1B3B, 0x1B3D, 2 },
{ 0x1B3E, 0x1B41, 1 },
- { 0x1B43, 0x1B4B, 1 },
+ { 0x1B43, 0x1B4C, 1 },
{ 0x1B50, 0x1B6A, 1 },
- { 0x1B74, 0x1B7C, 1 },
+ { 0x1B74, 0x1B7E, 1 },
{ 0x1B82, 0x1BA1, 1 },
{ 0x1BA6, 0x1BA7, 1 },
{ 0x1BAA, 0x1BAE, 4 },
@@ -1354,15 +1412,13 @@ static struct range_table graph_table[] = {
{ 0x2070, 0x2071, 1 },
{ 0x2074, 0x208E, 1 },
{ 0x2090, 0x209C, 1 },
- { 0x20A0, 0x20BF, 1 },
+ { 0x20A0, 0x20C0, 1 },
{ 0x2100, 0x218B, 1 },
{ 0x2190, 0x2426, 1 },
{ 0x2440, 0x244A, 1 },
{ 0x2460, 0x2B73, 1 },
{ 0x2B76, 0x2B95, 1 },
- { 0x2B97, 0x2C2E, 1 },
- { 0x2C30, 0x2C5E, 1 },
- { 0x2C60, 0x2CEE, 1 },
+ { 0x2B97, 0x2CEE, 1 },
{ 0x2CF2, 0x2CF3, 1 },
{ 0x2CF9, 0x2D25, 1 },
{ 0x2D27, 0x2D2D, 6 },
@@ -1377,7 +1433,7 @@ static struct range_table graph_table[] = {
{ 0x2DC8, 0x2DCE, 1 },
{ 0x2DD0, 0x2DD6, 1 },
{ 0x2DD8, 0x2DDE, 1 },
- { 0x2E00, 0x2E52, 1 },
+ { 0x2E00, 0x2E5D, 1 },
{ 0x2E80, 0x2E99, 1 },
{ 0x2E9B, 0x2EF3, 1 },
{ 0x2F00, 0x2FD5, 1 },
@@ -1390,8 +1446,7 @@ static struct range_table graph_table[] = {
{ 0x3131, 0x318E, 1 },
{ 0x3190, 0x31E3, 1 },
{ 0x31F0, 0x321E, 1 },
- { 0x3220, 0x9FFC, 1 },
- { 0xA000, 0xA48C, 1 },
+ { 0x3220, 0xA48C, 1 },
{ 0xA490, 0xA4C6, 1 },
{ 0xA4D0, 0xA62B, 1 },
{ 0xA640, 0xA66E, 1 },
@@ -1399,9 +1454,11 @@ static struct range_table graph_table[] = {
{ 0xA67F, 0xA69D, 1 },
{ 0xA6A0, 0xA6EF, 1 },
{ 0xA6F2, 0xA6F7, 1 },
- { 0xA700, 0xA7BF, 1 },
- { 0xA7C2, 0xA7CA, 1 },
- { 0xA7F5, 0xA801, 1 },
+ { 0xA700, 0xA7CA, 1 },
+ { 0xA7D0, 0xA7D1, 1 },
+ { 0xA7D3, 0xA7D5, 2 },
+ { 0xA7D6, 0xA7D9, 1 },
+ { 0xA7F2, 0xA801, 1 },
{ 0xA803, 0xA805, 1 },
{ 0xA807, 0xA80A, 1 },
{ 0xA80C, 0xA824, 1 },
@@ -1460,11 +1517,11 @@ static struct range_table graph_table[] = {
{ 0xFB3E, 0xFB40, 2 },
{ 0xFB41, 0xFB43, 2 },
{ 0xFB44, 0xFB46, 2 },
- { 0xFB47, 0xFBC1, 1 },
- { 0xFBD3, 0xFD3F, 1 },
- { 0xFD50, 0xFD8F, 1 },
+ { 0xFB47, 0xFBC2, 1 },
+ { 0xFBD3, 0xFD8F, 1 },
{ 0xFD92, 0xFDC7, 1 },
- { 0xFDF0, 0xFDFD, 1 },
+ { 0xFDCF, 0xFDF0, 33 },
+ { 0xFDF1, 0xFDFF, 1 },
{ 0xFE10, 0xFE19, 1 },
{ 0xFE30, 0xFE52, 1 },
{ 0xFE54, 0xFE66, 1 },
@@ -1508,10 +1565,20 @@ static struct range_table graph_table[] = {
{ 0x104D8, 0x104FB, 1 },
{ 0x10500, 0x10527, 1 },
{ 0x10530, 0x10563, 1 },
- { 0x1056F, 0x10600, 145 },
- { 0x10601, 0x10736, 1 },
+ { 0x1056F, 0x1057A, 1 },
+ { 0x1057C, 0x1058A, 1 },
+ { 0x1058C, 0x10592, 1 },
+ { 0x10594, 0x10595, 1 },
+ { 0x10597, 0x105A1, 1 },
+ { 0x105A3, 0x105B1, 1 },
+ { 0x105B3, 0x105B9, 1 },
+ { 0x105BB, 0x105BC, 1 },
+ { 0x10600, 0x10736, 1 },
{ 0x10740, 0x10755, 1 },
{ 0x10760, 0x10767, 1 },
+ { 0x10780, 0x10785, 1 },
+ { 0x10787, 0x107B0, 1 },
+ { 0x107B2, 0x107BA, 1 },
{ 0x10800, 0x10805, 1 },
{ 0x10808, 0x1080A, 2 },
{ 0x1080B, 0x10835, 1 },
@@ -1554,13 +1621,17 @@ static struct range_table graph_table[] = {
{ 0x10F01, 0x10F27, 1 },
{ 0x10F30, 0x10F45, 1 },
{ 0x10F51, 0x10F59, 1 },
+ { 0x10F70, 0x10F81, 1 },
+ { 0x10F86, 0x10F89, 1 },
{ 0x10FB0, 0x10FCB, 1 },
{ 0x10FE0, 0x10FF6, 1 },
{ 0x11000, 0x11002, 2 },
{ 0x11003, 0x11037, 1 },
{ 0x11047, 0x1104D, 1 },
{ 0x11052, 0x1106F, 1 },
- { 0x11082, 0x110B2, 1 },
+ { 0x11071, 0x11072, 1 },
+ { 0x11075, 0x11082, 13 },
+ { 0x11083, 0x110B2, 1 },
{ 0x110B7, 0x110B8, 1 },
{ 0x110BB, 0x110BC, 1 },
{ 0x110BE, 0x110C1, 1 },
@@ -1581,6 +1652,7 @@ static struct range_table graph_table[] = {
{ 0x11232, 0x11233, 1 },
{ 0x11235, 0x11238, 3 },
{ 0x11239, 0x1123D, 1 },
+ { 0x1123F, 0x11240, 1 },
{ 0x11280, 0x11286, 1 },
{ 0x11288, 0x1128A, 2 },
{ 0x1128B, 0x1128D, 1 },
@@ -1629,12 +1701,12 @@ static struct range_table graph_table[] = {
{ 0x11680, 0x116AA, 1 },
{ 0x116AC, 0x116AE, 2 },
{ 0x116AF, 0x116B6, 7 },
- { 0x116B8, 0x116C0, 8 },
- { 0x116C1, 0x116C9, 1 },
+ { 0x116B8, 0x116B9, 1 },
+ { 0x116C0, 0x116C9, 1 },
{ 0x11700, 0x1171A, 1 },
{ 0x11720, 0x11721, 1 },
{ 0x11726, 0x11730, 10 },
- { 0x11731, 0x1173F, 1 },
+ { 0x11731, 0x11746, 1 },
{ 0x11800, 0x1182E, 1 },
{ 0x11838, 0x1183B, 3 },
{ 0x118A0, 0x118F2, 1 },
@@ -1662,7 +1734,8 @@ static struct range_table graph_table[] = {
{ 0x11A5D, 0x11A89, 1 },
{ 0x11A97, 0x11A9A, 3 },
{ 0x11A9B, 0x11AA2, 1 },
- { 0x11AC0, 0x11AF8, 1 },
+ { 0x11AB0, 0x11AF8, 1 },
+ { 0x11B00, 0x11B09, 1 },
{ 0x11C00, 0x11C08, 1 },
{ 0x11C0A, 0x11C2F, 1 },
{ 0x11C3E, 0x11C40, 2 },
@@ -1684,18 +1757,26 @@ static struct range_table graph_table[] = {
{ 0x11DA0, 0x11DA9, 1 },
{ 0x11EE0, 0x11EF2, 1 },
{ 0x11EF5, 0x11EF8, 1 },
+ { 0x11F02, 0x11F10, 1 },
+ { 0x11F12, 0x11F35, 1 },
+ { 0x11F3E, 0x11F3F, 1 },
+ { 0x11F41, 0x11F43, 2 },
+ { 0x11F44, 0x11F59, 1 },
{ 0x11FB0, 0x11FC0, 16 },
{ 0x11FC1, 0x11FF1, 1 },
{ 0x11FFF, 0x12399, 1 },
{ 0x12400, 0x1246E, 1 },
{ 0x12470, 0x12474, 1 },
{ 0x12480, 0x12543, 1 },
- { 0x13000, 0x1342E, 1 },
+ { 0x12F90, 0x12FF2, 1 },
+ { 0x13000, 0x1342F, 1 },
+ { 0x13441, 0x13446, 1 },
{ 0x14400, 0x14646, 1 },
{ 0x16800, 0x16A38, 1 },
{ 0x16A40, 0x16A5E, 1 },
{ 0x16A60, 0x16A69, 1 },
- { 0x16A6E, 0x16A6F, 1 },
+ { 0x16A6E, 0x16ABE, 1 },
+ { 0x16AC0, 0x16AC9, 1 },
{ 0x16AD0, 0x16AED, 1 },
{ 0x16AF5, 0x16B00, 11 },
{ 0x16B01, 0x16B2F, 1 },
@@ -1713,15 +1794,21 @@ static struct range_table graph_table[] = {
{ 0x17000, 0x187F7, 1 },
{ 0x18800, 0x18CD5, 1 },
{ 0x18D00, 0x18D08, 1 },
- { 0x1B000, 0x1B11E, 1 },
- { 0x1B150, 0x1B152, 1 },
- { 0x1B164, 0x1B167, 1 },
+ { 0x1AFF0, 0x1AFF3, 1 },
+ { 0x1AFF5, 0x1AFFB, 1 },
+ { 0x1AFFD, 0x1AFFE, 1 },
+ { 0x1B000, 0x1B122, 1 },
+ { 0x1B132, 0x1B150, 30 },
+ { 0x1B151, 0x1B152, 1 },
+ { 0x1B155, 0x1B164, 15 },
+ { 0x1B165, 0x1B167, 1 },
{ 0x1B170, 0x1B2FB, 1 },
{ 0x1BC00, 0x1BC6A, 1 },
{ 0x1BC70, 0x1BC7C, 1 },
{ 0x1BC80, 0x1BC88, 1 },
{ 0x1BC90, 0x1BC99, 1 },
{ 0x1BC9C, 0x1BC9F, 3 },
+ { 0x1CF50, 0x1CFC3, 1 },
{ 0x1D000, 0x1D0F5, 1 },
{ 0x1D100, 0x1D126, 1 },
{ 0x1D129, 0x1D164, 1 },
@@ -1729,10 +1816,11 @@ static struct range_table graph_table[] = {
{ 0x1D16B, 0x1D16D, 1 },
{ 0x1D183, 0x1D184, 1 },
{ 0x1D18C, 0x1D1A9, 1 },
- { 0x1D1AE, 0x1D1E8, 1 },
+ { 0x1D1AE, 0x1D1EA, 1 },
{ 0x1D200, 0x1D241, 1 },
- { 0x1D245, 0x1D2E0, 155 },
- { 0x1D2E1, 0x1D2F3, 1 },
+ { 0x1D245, 0x1D2C0, 123 },
+ { 0x1D2C1, 0x1D2D3, 1 },
+ { 0x1D2E0, 0x1D2F3, 1 },
{ 0x1D300, 0x1D356, 1 },
{ 0x1D360, 0x1D378, 1 },
{ 0x1D400, 0x1D454, 1 },
@@ -1760,14 +1848,24 @@ static struct range_table graph_table[] = {
{ 0x1DA6D, 0x1DA74, 1 },
{ 0x1DA76, 0x1DA83, 1 },
{ 0x1DA85, 0x1DA8B, 1 },
+ { 0x1DF00, 0x1DF1E, 1 },
+ { 0x1DF25, 0x1DF2A, 1 },
+ { 0x1E030, 0x1E06D, 1 },
{ 0x1E100, 0x1E12C, 1 },
{ 0x1E137, 0x1E13D, 1 },
{ 0x1E140, 0x1E149, 1 },
{ 0x1E14E, 0x1E14F, 1 },
+ { 0x1E290, 0x1E2AD, 1 },
{ 0x1E2C0, 0x1E2EB, 1 },
{ 0x1E2F0, 0x1E2F9, 1 },
- { 0x1E2FF, 0x1E800, 1281 },
- { 0x1E801, 0x1E8C4, 1 },
+ { 0x1E2FF, 0x1E4D0, 465 },
+ { 0x1E4D1, 0x1E4EB, 1 },
+ { 0x1E4F0, 0x1E4F9, 1 },
+ { 0x1E7E0, 0x1E7E6, 1 },
+ { 0x1E7E8, 0x1E7EB, 1 },
+ { 0x1E7ED, 0x1E7EE, 1 },
+ { 0x1E7F0, 0x1E7FE, 1 },
+ { 0x1E800, 0x1E8C4, 1 },
{ 0x1E8C7, 0x1E8CF, 1 },
{ 0x1E900, 0x1E943, 1 },
{ 0x1E94B, 0x1E950, 5 },
@@ -1813,38 +1911,38 @@ static struct range_table graph_table[] = {
{ 0x1F250, 0x1F251, 1 },
{ 0x1F260, 0x1F265, 1 },
{ 0x1F300, 0x1F6D7, 1 },
- { 0x1F6E0, 0x1F6EC, 1 },
+ { 0x1F6DC, 0x1F6EC, 1 },
{ 0x1F6F0, 0x1F6FC, 1 },
- { 0x1F700, 0x1F773, 1 },
- { 0x1F780, 0x1F7D8, 1 },
+ { 0x1F700, 0x1F776, 1 },
+ { 0x1F77B, 0x1F7D9, 1 },
{ 0x1F7E0, 0x1F7EB, 1 },
- { 0x1F800, 0x1F80B, 1 },
+ { 0x1F7F0, 0x1F800, 16 },
+ { 0x1F801, 0x1F80B, 1 },
{ 0x1F810, 0x1F847, 1 },
{ 0x1F850, 0x1F859, 1 },
{ 0x1F860, 0x1F887, 1 },
{ 0x1F890, 0x1F8AD, 1 },
{ 0x1F8B0, 0x1F8B1, 1 },
- { 0x1F900, 0x1F978, 1 },
- { 0x1F97A, 0x1F9CB, 1 },
- { 0x1F9CD, 0x1FA53, 1 },
+ { 0x1F900, 0x1FA53, 1 },
{ 0x1FA60, 0x1FA6D, 1 },
- { 0x1FA70, 0x1FA74, 1 },
- { 0x1FA78, 0x1FA7A, 1 },
- { 0x1FA80, 0x1FA86, 1 },
- { 0x1FA90, 0x1FAA8, 1 },
- { 0x1FAB0, 0x1FAB6, 1 },
- { 0x1FAC0, 0x1FAC2, 1 },
- { 0x1FAD0, 0x1FAD6, 1 },
+ { 0x1FA70, 0x1FA7C, 1 },
+ { 0x1FA80, 0x1FA88, 1 },
+ { 0x1FA90, 0x1FABD, 1 },
+ { 0x1FABF, 0x1FAC5, 1 },
+ { 0x1FACE, 0x1FADB, 1 },
+ { 0x1FAE0, 0x1FAE8, 1 },
+ { 0x1FAF0, 0x1FAF8, 1 },
{ 0x1FB00, 0x1FB92, 1 },
{ 0x1FB94, 0x1FBCA, 1 },
{ 0x1FBF0, 0x1FBF9, 1 },
- { 0x20000, 0x2A6DD, 1 },
- { 0x2A700, 0x2B734, 1 },
+ { 0x20000, 0x2A6DF, 1 },
+ { 0x2A700, 0x2B739, 1 },
{ 0x2B740, 0x2B81D, 1 },
{ 0x2B820, 0x2CEA1, 1 },
{ 0x2CEB0, 0x2EBE0, 1 },
{ 0x2F800, 0x2FA1D, 1 },
{ 0x30000, 0x3134A, 1 },
+ { 0x31350, 0x323AF, 1 },
};

static struct range_table compose_table[] = {
@@ -1871,7 +1969,8 @@ static struct range_table compose_table[] = {
{ 0x825, 0x827, 1 },
{ 0x829, 0x82D, 1 },
{ 0x859, 0x85B, 1 },
- { 0x8D3, 0x8E1, 1 },
+ { 0x898, 0x89F, 1 },
+ { 0x8CA, 0x8E1, 1 },
{ 0x8E3, 0x902, 1 },
{ 0x93A, 0x93C, 2 },
{ 0x941, 0x948, 1 },
@@ -1906,8 +2005,8 @@ static struct range_table compose_table[] = {
{ 0xB82, 0xBBE, 60 },
{ 0xBC0, 0xBCD, 13 },
{ 0xBD7, 0xC00, 41 },
- { 0xC04, 0xC3E, 58 },
- { 0xC3F, 0xC40, 1 },
+ { 0xC04, 0xC3C, 56 },
+ { 0xC3E, 0xC40, 1 },
{ 0xC46, 0xC48, 1 },
{ 0xC4A, 0xC4D, 1 },
{ 0xC55, 0xC56, 1 },
@@ -1932,7 +2031,7 @@ static struct range_table compose_table[] = {
{ 0xE47, 0xE4E, 1 },
{ 0xEB1, 0xEB4, 3 },
{ 0xEB5, 0xEBC, 1 },
- { 0xEC8, 0xECD, 1 },
+ { 0xEC8, 0xECE, 1 },
{ 0xF18, 0xF19, 1 },
{ 0xF35, 0xF39, 2 },
{ 0xF71, 0xF7E, 1 },
@@ -1953,7 +2052,7 @@ static struct range_table compose_table[] = {
{ 0x109D, 0x135D, 704 },
{ 0x135E, 0x135F, 1 },
{ 0x1712, 0x1714, 1 },
- { 0x1732, 0x1734, 1 },
+ { 0x1732, 0x1733, 1 },
{ 0x1752, 0x1753, 1 },
{ 0x1772, 0x1773, 1 },
{ 0x17B4, 0x17B5, 1 },
@@ -1962,9 +2061,9 @@ static struct range_table compose_table[] = {
{ 0x17CA, 0x17D3, 1 },
{ 0x17DD, 0x180B, 46 },
{ 0x180C, 0x180D, 1 },
- { 0x1885, 0x1886, 1 },
- { 0x18A9, 0x1920, 119 },
- { 0x1921, 0x1922, 1 },
+ { 0x180F, 0x1885, 118 },
+ { 0x1886, 0x18A9, 35 },
+ { 0x1920, 0x1922, 1 },
{ 0x1927, 0x1928, 1 },
{ 0x1932, 0x1939, 7 },
{ 0x193A, 0x193B, 1 },
@@ -1975,7 +2074,7 @@ static struct range_table compose_table[] = {
{ 0x1A65, 0x1A6C, 1 },
{ 0x1A73, 0x1A7C, 1 },
{ 0x1A7F, 0x1AB0, 49 },
- { 0x1AB1, 0x1AC0, 1 },
+ { 0x1AB1, 0x1ACE, 1 },
{ 0x1B00, 0x1B03, 1 },
{ 0x1B34, 0x1B3A, 1 },
{ 0x1B3C, 0x1B42, 6 },
@@ -1994,8 +2093,7 @@ static struct range_table compose_table[] = {
{ 0x1CE2, 0x1CE8, 1 },
{ 0x1CED, 0x1CF4, 7 },
{ 0x1CF8, 0x1CF9, 1 },
- { 0x1DC0, 0x1DF9, 1 },
- { 0x1DFB, 0x1DFF, 1 },
+ { 0x1DC0, 0x1DFF, 1 },
{ 0x200C, 0x20D0, 196 },
{ 0x20D1, 0x20F0, 1 },
{ 0x2CEF, 0x2CF1, 1 },
@@ -2045,13 +2143,18 @@ static struct range_table compose_table[] = {
{ 0x10AE6, 0x10D24, 574 },
{ 0x10D25, 0x10D27, 1 },
{ 0x10EAB, 0x10EAC, 1 },
+ { 0x10EFD, 0x10EFF, 1 },
{ 0x10F46, 0x10F50, 1 },
+ { 0x10F82, 0x10F85, 1 },
{ 0x11001, 0x11038, 55 },
{ 0x11039, 0x11046, 1 },
- { 0x1107F, 0x11081, 1 },
+ { 0x11070, 0x11073, 3 },
+ { 0x11074, 0x1107F, 11 },
+ { 0x11080, 0x11081, 1 },
{ 0x110B3, 0x110B6, 1 },
{ 0x110B9, 0x110BA, 1 },
- { 0x11100, 0x11102, 1 },
+ { 0x110C2, 0x11100, 62 },
+ { 0x11101, 0x11102, 1 },
{ 0x11127, 0x1112B, 1 },
{ 0x1112D, 0x11134, 1 },
{ 0x11173, 0x11180, 13 },
@@ -2062,8 +2165,8 @@ static struct range_table compose_table[] = {
{ 0x11230, 0x11231, 1 },
{ 0x11234, 0x11236, 2 },
{ 0x11237, 0x1123E, 7 },
- { 0x112DF, 0x112E3, 4 },
- { 0x112E4, 0x112EA, 1 },
+ { 0x11241, 0x112DF, 158 },
+ { 0x112E3, 0x112EA, 1 },
{ 0x11300, 0x11301, 1 },
{ 0x1133B, 0x1133C, 1 },
{ 0x1133E, 0x11340, 2 },
@@ -2122,14 +2225,22 @@ static struct range_table compose_table[] = {
{ 0x11D47, 0x11D90, 73 },
{ 0x11D91, 0x11D95, 4 },
{ 0x11D97, 0x11EF3, 348 },
- { 0x11EF4, 0x16AF0, 19452 },
- { 0x16AF1, 0x16AF4, 1 },
+ { 0x11EF4, 0x11F00, 12 },
+ { 0x11F01, 0x11F36, 53 },
+ { 0x11F37, 0x11F3A, 1 },
+ { 0x11F40, 0x11F42, 2 },
+ { 0x13440, 0x13447, 7 },
+ { 0x13448, 0x13455, 1 },
+ { 0x16AF0, 0x16AF4, 1 },
{ 0x16B30, 0x16B36, 1 },
{ 0x16F4F, 0x16F8F, 64 },
{ 0x16F90, 0x16F92, 1 },
{ 0x16FE4, 0x1BC9D, 19641 },
- { 0x1BC9E, 0x1D165, 5319 },
- { 0x1D167, 0x1D169, 1 },
+ { 0x1BC9E, 0x1CF00, 4706 },
+ { 0x1CF01, 0x1CF2D, 1 },
+ { 0x1CF30, 0x1CF46, 1 },
+ { 0x1D165, 0x1D167, 2 },
+ { 0x1D168, 0x1D169, 1 },
{ 0x1D16E, 0x1D172, 1 },
{ 0x1D17B, 0x1D182, 1 },
{ 0x1D185, 0x1D18B, 1 },
@@ -2145,8 +2256,11 @@ static struct range_table compose_table[] = {
{ 0x1E01B, 0x1E021, 1 },
{ 0x1E023, 0x1E024, 1 },
{ 0x1E026, 0x1E02A, 1 },
- { 0x1E130, 0x1E136, 1 },
- { 0x1E2EC, 0x1E2EF, 1 },
+ { 0x1E08F, 0x1E130, 161 },
+ { 0x1E131, 0x1E136, 1 },
+ { 0x1E2AE, 0x1E2EC, 62 },
+ { 0x1E2ED, 0x1E2EF, 1 },
+ { 0x1E4EC, 0x1E4EF, 1 },
{ 0x1E8D0, 0x1E8D6, 1 },
{ 0x1E944, 0x1E94A, 1 },
{ 0xE0020, 0xE007F, 1 },
@@ -2159,7 +2273,8 @@ static struct range_table cntrl_table[] = {
{ 0xAD, 0x600, 1363 },
{ 0x601, 0x605, 1 },
{ 0x61C, 0x6DD, 193 },
- { 0x70F, 0x8E2, 467 },
+ { 0x70F, 0x890, 385 },
+ { 0x891, 0x8E2, 81 },
{ 0x180E, 0x200B, 2045 },
{ 0x200C, 0x200F, 1 },
{ 0x202A, 0x202E, 1 },
@@ -2170,7 +2285,7 @@ static struct range_table cntrl_table[] = {
{ 0xFEFF, 0xFFF9, 250 },
{ 0xFFFA, 0xFFFB, 1 },
{ 0x110BD, 0x110CD, 16 },
- { 0x13430, 0x13438, 1 },
+ { 0x13430, 0x1343F, 1 },
{ 0x1BCA0, 0x1BCA3, 1 },
{ 0x1D173, 0x1D17A, 1 },
{ 0xE0001, 0xE0020, 31 },
@@ -2236,11 +2351,14 @@ static struct range_table digit_table[] = {
{ 0x11C50, 0x11C59, 1 },
{ 0x11D50, 0x11D59, 1 },
{ 0x11DA0, 0x11DA9, 1 },
+ { 0x11F50, 0x11F59, 1 },
{ 0x16A60, 0x16A69, 1 },
+ { 0x16AC0, 0x16AC9, 1 },
{ 0x16B50, 0x16B59, 1 },
{ 0x1D7CE, 0x1D7FF, 1 },
{ 0x1E140, 0x1E149, 1 },
{ 0x1E2F0, 0x1E2F9, 1 },
+ { 0x1E4F0, 0x1E4F9, 1 },
{ 0x1E950, 0x1E959, 1 },
{ 0x1FBF0, 0x1FBF9, 1 },
};
@@ -2357,17 +2475,21 @@ static struct range_table alnum_extend_table[] = {
{ 0x11C50, 0x11C6C, 1 },
{ 0x11D50, 0x11D59, 1 },
{ 0x11DA0, 0x11DA9, 1 },
+ { 0x11F50, 0x11F59, 1 },
{ 0x11FC0, 0x11FD4, 1 },
{ 0x12400, 0x1246E, 1 },
{ 0x16A60, 0x16A69, 1 },
+ { 0x16AC0, 0x16AC9, 1 },
{ 0x16B50, 0x16B59, 1 },
{ 0x16B5B, 0x16B61, 1 },
{ 0x16E80, 0x16E96, 1 },
+ { 0x1D2C0, 0x1D2D3, 1 },
{ 0x1D2E0, 0x1D2F3, 1 },
{ 0x1D360, 0x1D378, 1 },
{ 0x1D7CE, 0x1D7FF, 1 },
{ 0x1E140, 0x1E149, 1 },
{ 0x1E2F0, 0x1E2F9, 1 },
+ { 0x1E4F0, 0x1E4F9, 1 },
{ 0x1E8C7, 0x1E8CF, 1 },
{ 0x1E950, 0x1E959, 1 },
{ 0x1EC71, 0x1ECAB, 1 },
@@ -2406,25 +2528,25 @@ static struct range_table punct_table[] = {
{ 0x5C0, 0x5C6, 3 },
{ 0x5F3, 0x5F4, 1 },
{ 0x606, 0x60D, 1 },
- { 0x61B, 0x61E, 3 },
- { 0x61F, 0x66A, 75 },
- { 0x66B, 0x66D, 1 },
+ { 0x61B, 0x61D, 2 },
+ { 0x61E, 0x61F, 1 },
+ { 0x66A, 0x66D, 1 },
{ 0x6D4, 0x700, 44 },
{ 0x701, 0x70D, 1 },
{ 0x7F7, 0x7F9, 1 },
{ 0x7FE, 0x7FF, 1 },
{ 0x830, 0x83E, 1 },
- { 0x85E, 0x964, 262 },
- { 0x965, 0x970, 11 },
- { 0x9F2, 0x9F3, 1 },
- { 0x9FB, 0x9FD, 2 },
- { 0xA76, 0xAF0, 122 },
- { 0xAF1, 0xBF9, 264 },
- { 0xC77, 0xC84, 13 },
- { 0xDF4, 0xE3F, 75 },
- { 0xE4F, 0xE5A, 11 },
- { 0xE5B, 0xF04, 169 },
- { 0xF05, 0xF12, 1 },
+ { 0x85E, 0x888, 42 },
+ { 0x964, 0x965, 1 },
+ { 0x970, 0x9F2, 130 },
+ { 0x9F3, 0x9FB, 8 },
+ { 0x9FD, 0xA76, 121 },
+ { 0xAF0, 0xAF1, 1 },
+ { 0xBF9, 0xC77, 126 },
+ { 0xC84, 0xDF4, 368 },
+ { 0xE3F, 0xE4F, 16 },
+ { 0xE5A, 0xE5B, 1 },
+ { 0xF04, 0xF12, 1 },
{ 0xF14, 0xF3A, 38 },
{ 0xF3B, 0xF3D, 1 },
{ 0xF85, 0xFD0, 75 },
@@ -2445,6 +2567,7 @@ static struct range_table punct_table[] = {
{ 0x1AA0, 0x1AA6, 1 },
{ 0x1AA8, 0x1AAD, 1 },
{ 0x1B5A, 0x1B60, 1 },
+ { 0x1B7D, 0x1B7E, 1 },
{ 0x1BFC, 0x1BFF, 1 },
{ 0x1C3B, 0x1C3F, 1 },
{ 0x1C7E, 0x1C7F, 1 },
@@ -2459,7 +2582,7 @@ static struct range_table punct_table[] = {
{ 0x2030, 0x205E, 1 },
{ 0x207A, 0x207E, 1 },
{ 0x208A, 0x208E, 1 },
- { 0x20A0, 0x20BF, 1 },
+ { 0x20A0, 0x20C0, 1 },
{ 0x2118, 0x2140, 40 },
{ 0x2141, 0x2144, 1 },
{ 0x214B, 0x2190, 69 },
@@ -2489,8 +2612,8 @@ static struct range_table punct_table[] = {
{ 0x2D70, 0x2E00, 144 },
{ 0x2E01, 0x2E2E, 1 },
{ 0x2E30, 0x2E4F, 1 },
- { 0x2E52, 0x3001, 431 },
- { 0x3002, 0x3003, 1 },
+ { 0x2E52, 0x2E5D, 1 },
+ { 0x3001, 0x3003, 1 },
{ 0x3008, 0x3011, 1 },
{ 0x3014, 0x301F, 1 },
{ 0x3030, 0x303D, 13 },
@@ -2517,7 +2640,7 @@ static struct range_table punct_table[] = {
{ 0xAB5B, 0xAB6A, 15 },
{ 0xAB6B, 0xABEB, 128 },
{ 0xFB29, 0xFBB2, 137 },
- { 0xFBB3, 0xFBC1, 1 },
+ { 0xFBB3, 0xFBC2, 1 },
{ 0xFD3E, 0xFD3F, 1 },
{ 0xFDFC, 0xFE10, 20 },
{ 0xFE11, 0xFE19, 1 },
@@ -2542,6 +2665,7 @@ static struct range_table punct_table[] = {
{ 0x10B99, 0x10B9C, 1 },
{ 0x10EAD, 0x10F55, 168 },
{ 0x10F56, 0x10F59, 1 },
+ { 0x10F86, 0x10F89, 1 },
{ 0x11047, 0x1104D, 1 },
{ 0x110BB, 0x110BC, 1 },
{ 0x110BE, 0x110C1, 1 },
@@ -2558,19 +2682,23 @@ static struct range_table punct_table[] = {
{ 0x115C1, 0x115D7, 1 },
{ 0x11641, 0x11643, 1 },
{ 0x11660, 0x1166C, 1 },
- { 0x1173C, 0x1173E, 1 },
+ { 0x116B9, 0x1173C, 131 },
+ { 0x1173D, 0x1173E, 1 },
{ 0x1183B, 0x11944, 265 },
{ 0x11945, 0x11946, 1 },
{ 0x119E2, 0x11A3F, 93 },
{ 0x11A40, 0x11A46, 1 },
{ 0x11A9A, 0x11A9C, 1 },
{ 0x11A9E, 0x11AA2, 1 },
+ { 0x11B00, 0x11B09, 1 },
{ 0x11C41, 0x11C45, 1 },
{ 0x11C70, 0x11C71, 1 },
{ 0x11EF7, 0x11EF8, 1 },
+ { 0x11F43, 0x11F4F, 1 },
{ 0x11FDD, 0x11FE0, 1 },
{ 0x11FFF, 0x12470, 1137 },
{ 0x12471, 0x12474, 1 },
+ { 0x12FF1, 0x12FF2, 1 },
{ 0x16A6E, 0x16A6F, 1 },
{ 0x16AF5, 0x16B37, 66 },
{ 0x16B38, 0x16B3B, 1 },
@@ -2715,7 +2843,7 @@ static struct conv_table tolower_table[] = {
{ 0x2160, 0x216F, 1, 16 },
{ 0x2183, 0x2183, 1, 1 },
{ 0x24B6, 0x24CF, 1, 26 },
- { 0x2C00, 0x2C2E, 1, 48 },
+ { 0x2C00, 0x2C2F, 1, 48 },
{ 0x2C60, 0x2C60, 1, 1 },
{ 0x2C62, 0x2C62, 1, -10743 },
{ 0x2C63, 0x2C63, 1, -3814 },
@@ -2750,16 +2878,20 @@ static struct conv_table tolower_table[] = {
{ 0xA7B1, 0xA7B1, 1, -42282 },
{ 0xA7B2, 0xA7B2, 1, -42261 },
{ 0xA7B3, 0xA7B3, 1, 928 },
- { 0xA7B4, 0xA7BE, 2, 1 },
- { 0xA7C2, 0xA7C2, 1, 1 },
+ { 0xA7B4, 0xA7C2, 2, 1 },
{ 0xA7C4, 0xA7C4, 1, -48 },
{ 0xA7C5, 0xA7C5, 1, -42307 },
{ 0xA7C6, 0xA7C6, 1, -35384 },
{ 0xA7C7, 0xA7C9, 2, 1 },
- { 0xA7F5, 0xA7F5, 1, 1 },
+ { 0xA7D0, 0xA7D6, 6, 1 },
+ { 0xA7D8, 0xA7F5, 29, 1 },
{ 0xFF21, 0xFF3A, 1, 32 },
{ 0x10400, 0x10427, 1, 40 },
{ 0x104B0, 0x104D3, 1, 40 },
+ { 0x10570, 0x1057A, 1, 39 },
+ { 0x1057C, 0x1058A, 1, 39 },
+ { 0x1058C, 0x10592, 1, 39 },
+ { 0x10594, 0x10595, 1, 39 },
{ 0x10C80, 0x10CB2, 1, 64 },
{ 0x118A0, 0x118BF, 1, 32 },
{ 0x16E40, 0x16E5F, 1, 32 },
@@ -2922,7 +3054,7 @@ static struct conv_table toupper_table[] = {
{ 0x2170, 0x217F, 1, -16 },
{ 0x2184, 0x2184, 1, -1 },
{ 0x24D0, 0x24E9, 1, -26 },
- { 0x2C30, 0x2C5E, 1, -48 },
+ { 0x2C30, 0x2C5F, 1, -48 },
{ 0x2C61, 0x2C61, 1, -1 },
{ 0x2C65, 0x2C65, 1, -10795 },
{ 0x2C66, 0x2C66, 1, -10792 },
@@ -2943,14 +3075,19 @@ static struct conv_table toupper_table[] = {
{ 0xA793, 0xA793, 1, -1 },
{ 0xA794, 0xA794, 1, 48 },
{ 0xA797, 0xA7A9, 2, -1 },
- { 0xA7B5, 0xA7BF, 2, -1 },
- { 0xA7C3, 0xA7C8, 5, -1 },
- { 0xA7CA, 0xA7F6, 44, -1 },
+ { 0xA7B5, 0xA7C3, 2, -1 },
+ { 0xA7C8, 0xA7CA, 2, -1 },
+ { 0xA7D1, 0xA7D7, 6, -1 },
+ { 0xA7D9, 0xA7F6, 29, -1 },
{ 0xAB53, 0xAB53, 1, -928 },
{ 0xAB70, 0xABBF, 1, -38864 },
{ 0xFF41, 0xFF5A, 1, -32 },
{ 0x10428, 0x1044F, 1, -40 },
{ 0x104D8, 0x104FB, 1, -40 },
+ { 0x10597, 0x105A1, 1, -39 },
+ { 0x105A3, 0x105B1, 1, -39 },
+ { 0x105B3, 0x105B9, 1, -39 },
+ { 0x105BB, 0x105BC, 1, -39 },
{ 0x10CC0, 0x10CF2, 1, -64 },
{ 0x118C0, 0x118DF, 1, -32 },
{ 0x16E60, 0x16E7F, 1, -32 },
@@ -3115,7 +3252,7 @@ static struct conv_table totitle_table[] = {
{ 0x2170, 0x217F, 1, -16 },
{ 0x2184, 0x2184, 1, -1 },
{ 0x24D0, 0x24E9, 1, -26 },
- { 0x2C30, 0x2C5E, 1, -48 },
+ { 0x2C30, 0x2C5F, 1, -48 },
{ 0x2C61, 0x2C61, 1, -1 },
{ 0x2C65, 0x2C65, 1, -10795 },
{ 0x2C66, 0x2C66, 1, -10792 },
@@ -3136,14 +3273,19 @@ static struct conv_table totitle_table[] = {
{ 0xA793, 0xA793, 1, -1 },
{ 0xA794, 0xA794, 1, 48 },
{ 0xA797, 0xA7A9, 2, -1 },
- { 0xA7B5, 0xA7BF, 2, -1 },
- { 0xA7C3, 0xA7C8, 5, -1 },
- { 0xA7CA, 0xA7F6, 44, -1 },
+ { 0xA7B5, 0xA7C3, 2, -1 },
+ { 0xA7C8, 0xA7CA, 2, -1 },
+ { 0xA7D1, 0xA7D7, 6, -1 },
+ { 0xA7D9, 0xA7F6, 29, -1 },
{ 0xAB53, 0xAB53, 1, -928 },
{ 0xAB70, 0xABBF, 1, -38864 },
{ 0xFF41, 0xFF5A, 1, -32 },
{ 0x10428, 0x1044F, 1, -40 },
{ 0x104D8, 0x104FB, 1, -40 },
+ { 0x10597, 0x105A1, 1, -39 },
+ { 0x105A3, 0x105B1, 1, -39 },
+ { 0x105B3, 0x105B9, 1, -39 },
+ { 0x105BB, 0x105BC, 1, -39 },
{ 0x10CC0, 0x10CF2, 1, -64 },
{ 0x118C0, 0x118DF, 1, -32 },
{ 0x16E60, 0x16E7F, 1, -32 },
@@ -3295,7 +3437,7 @@ static struct conv_table tofold_table[] = {
{ 0x2160, 0x216F, 1, 16 },
{ 0x2183, 0x2183, 1, 1 },
{ 0x24B6, 0x24CF, 1, 26 },
- { 0x2C00, 0x2C2E, 1, 48 },
+ { 0x2C00, 0x2C2F, 1, 48 },
{ 0x2C60, 0x2C60, 1, 1 },
{ 0x2C62, 0x2C62, 1, -10743 },
{ 0x2C63, 0x2C63, 1, -3814 },
@@ -3330,17 +3472,21 @@ static struct conv_table tofold_table[] = {
{ 0xA7B1, 0xA7B1, 1, -42282 },
{ 0xA7B2, 0xA7B2, 1, -42261 },
{ 0xA7B3, 0xA7B3, 1, 928 },
- { 0xA7B4, 0xA7BE, 2, 1 },
- { 0xA7C2, 0xA7C2, 1, 1 },
+ { 0xA7B4, 0xA7C2, 2, 1 },
{ 0xA7C4, 0xA7C4, 1, -48 },
{ 0xA7C5, 0xA7C5, 1, -42307 },
{ 0xA7C6, 0xA7C6, 1, -35384 },
{ 0xA7C7, 0xA7C9, 2, 1 },
- { 0xA7F5, 0xA7F5, 1, 1 },
+ { 0xA7D0, 0xA7D6, 6, 1 },
+ { 0xA7D8, 0xA7F5, 29, 1 },
{ 0xAB70, 0xABBF, 1, -38864 },
{ 0xFF21, 0xFF3A, 1, 32 },
{ 0x10400, 0x10427, 1, 40 },
{ 0x104B0, 0x104D3, 1, 40 },
+ { 0x10570, 0x1057A, 1, 39 },
+ { 0x1057C, 0x1058A, 1, 39 },
+ { 0x1058C, 0x10592, 1, 39 },
+ { 0x10594, 0x10595, 1, 39 },
{ 0x10C80, 0x10CB2, 1, 64 },
{ 0x118A0, 0x118BF, 1, 32 },
{ 0x16E40, 0x16E5F, 1, 32 },
@@ -3403,9 +3549,14 @@ static struct range_table doublewidth_table[] = {
{ 0x17000, 0x187F7, 1 },
{ 0x18800, 0x18CD5, 1 },
{ 0x18D00, 0x18D08, 1 },
- { 0x1B000, 0x1B11E, 1 },
- { 0x1B150, 0x1B152, 1 },
- { 0x1B164, 0x1B167, 1 },
+ { 0x1AFF0, 0x1AFF3, 1 },
+ { 0x1AFF5, 0x1AFFB, 1 },
+ { 0x1AFFD, 0x1AFFE, 1 },
+ { 0x1B000, 0x1B122, 1 },
+ { 0x1B132, 0x1B150, 30 },
+ { 0x1B151, 0x1B152, 1 },
+ { 0x1B155, 0x1B164, 15 },
+ { 0x1B165, 0x1B167, 1 },
{ 0x1B170, 0x1B2FB, 1 },
{ 0x1F004, 0x1F0CF, 203 },
{ 0x1F18E, 0x1F191, 3 },
@@ -3436,21 +3587,21 @@ static struct range_table doublewidth_table[] = {
{ 0x1F6CC, 0x1F6D0, 4 },
{ 0x1F6D1, 0x1F6D2, 1 },
{ 0x1F6D5, 0x1F6D7, 1 },
+ { 0x1F6DC, 0x1F6DF, 1 },
{ 0x1F6EB, 0x1F6EC, 1 },
{ 0x1F6F4, 0x1F6FC, 1 },
{ 0x1F7E0, 0x1F7EB, 1 },
- { 0x1F90C, 0x1F93A, 1 },
+ { 0x1F7F0, 0x1F90C, 284 },
+ { 0x1F90D, 0x1F93A, 1 },
{ 0x1F93C, 0x1F945, 1 },
- { 0x1F947, 0x1F978, 1 },
- { 0x1F97A, 0x1F9CB, 1 },
- { 0x1F9CD, 0x1F9FF, 1 },
- { 0x1FA70, 0x1FA74, 1 },
- { 0x1FA78, 0x1FA7A, 1 },
- { 0x1FA80, 0x1FA86, 1 },
- { 0x1FA90, 0x1FAA8, 1 },
- { 0x1FAB0, 0x1FAB6, 1 },
- { 0x1FAC0, 0x1FAC2, 1 },
- { 0x1FAD0, 0x1FAD6, 1 },
+ { 0x1F947, 0x1F9FF, 1 },
+ { 0x1FA70, 0x1FA7C, 1 },
+ { 0x1FA80, 0x1FA88, 1 },
+ { 0x1FA90, 0x1FABD, 1 },
+ { 0x1FABF, 0x1FAC5, 1 },
+ { 0x1FACE, 0x1FADB, 1 },
+ { 0x1FAE0, 0x1FAE8, 1 },
+ { 0x1FAF0, 0x1FAF8, 1 },
{ 0x20000, 0x2FFFD, 1 },
{ 0x30000, 0x3FFFD, 1 },
};
diff --git a/plugins/luamacro/luafar/version.h b/plugins/luamacro/luafar/version.h
index f56303a74..d5bbdfa26 100644
--- a/plugins/luamacro/luafar/version.h
+++ b/plugins/luamacro/luafar/version.h
@@ -1,3 +1,3 @@
#include <farversion.hpp>

-#define PLUGIN_BUILD 770
+#define PLUGIN_BUILD 772


Reply all
Reply to author
Forward
0 new messages