diff --git a/README.md b/README.md index 1392a73..82b0a3f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ ![Build](https://github.com/peelonet/peelo-unicode/workflows/Build/badge.svg) -Collection of simple to use [Unicode] utilities for C++17. +Collection of simple to use [Unicode] utilities for C++17. Supports Unicode +15.1. [Doxygen generated API documentation.][API] diff --git a/include/peelo/unicode/ctype/_utils.hpp b/include/peelo/unicode/ctype/_utils.hpp index ef732bb..be85b5d 100644 --- a/include/peelo/unicode/ctype/_utils.hpp +++ b/include/peelo/unicode/ctype/_utils.hpp @@ -27,6 +27,7 @@ #pragma once #include +#include #include namespace peelo::unicode::ctype::utils @@ -34,7 +35,8 @@ namespace peelo::unicode::ctype::utils using range = std::pair; template - inline bool table_lookup(const std::array& table, char32_t c) + inline bool + table_lookup(const std::array& table, char32_t c) { const auto size = table.size(); @@ -50,4 +52,17 @@ namespace peelo::unicode::ctype::utils return false; } + + inline char32_t + case_lookup(const std::unordered_map& map, char32_t c) + { + const auto i = map.find(c); + + if (i != std::end(map)) + { + return i->second; + } + + return c; + } } diff --git a/include/peelo/unicode/ctype/isalnum.hpp b/include/peelo/unicode/ctype/isalnum.hpp index 5d7fe7d..0069ff9 100644 --- a/include/peelo/unicode/ctype/isalnum.hpp +++ b/include/peelo/unicode/ctype/isalnum.hpp @@ -26,7 +26,8 @@ */ #pragma once -#include +#include +#include namespace peelo::unicode::ctype { @@ -36,156 +37,6 @@ namespace peelo::unicode::ctype inline bool isalnum(char32_t c) { - static const std::array alnum_table = - {{ - { 0x0030, 0x0039 }, { 0x0041, 0x005a }, { 0x0061, 0x007a }, - { 0x00aa, 0x00aa }, { 0x00b5, 0x00b5 }, { 0x00ba, 0x00ba }, - { 0x00c0, 0x00d6 }, { 0x00d8, 0x00f6 }, { 0x00f8, 0x0241 }, - { 0x0250, 0x02c1 }, { 0x02c6, 0x02d1 }, { 0x02e0, 0x02e4 }, - { 0x02ee, 0x02ee }, { 0x0300, 0x036f }, { 0x037a, 0x037a }, - { 0x0386, 0x0386 }, { 0x0388, 0x038a }, { 0x038c, 0x038c }, - { 0x038e, 0x03a1 }, { 0x03a3, 0x03ce }, { 0x03d0, 0x03f5 }, - { 0x03f7, 0x0481 }, { 0x0483, 0x0486 }, { 0x0488, 0x04ce }, - { 0x04d0, 0x04f9 }, { 0x0500, 0x050f }, { 0x0531, 0x0556 }, - { 0x0559, 0x0559 }, { 0x0561, 0x0587 }, { 0x0591, 0x05b9 }, - { 0x05bb, 0x05bd }, { 0x05bf, 0x05bf }, { 0x05c1, 0x05c2 }, - { 0x05c4, 0x05c5 }, { 0x05c7, 0x05c7 }, { 0x05d0, 0x05ea }, - { 0x05f0, 0x05f2 }, { 0x0610, 0x0615 }, { 0x0621, 0x063a }, - { 0x0640, 0x065e }, { 0x0660, 0x0669 }, { 0x066e, 0x06d3 }, - { 0x06d5, 0x06dc }, { 0x06de, 0x06e8 }, { 0x06ea, 0x06fc }, - { 0x06ff, 0x06ff }, { 0x0710, 0x074a }, { 0x074d, 0x076d }, - { 0x0780, 0x07b1 }, { 0x0901, 0x0939 }, { 0x093c, 0x094d }, - { 0x0950, 0x0954 }, { 0x0958, 0x0963 }, { 0x0966, 0x096f }, - { 0x097d, 0x097d }, { 0x0981, 0x0983 }, { 0x0985, 0x098c }, - { 0x098f, 0x0990 }, { 0x0993, 0x09a8 }, { 0x09aa, 0x09b0 }, - { 0x09b2, 0x09b2 }, { 0x09b6, 0x09b9 }, { 0x09bc, 0x09c4 }, - { 0x09c7, 0x09c8 }, { 0x09cb, 0x09ce }, { 0x09d7, 0x09d7 }, - { 0x09dc, 0x09dd }, { 0x09df, 0x09e3 }, { 0x09e6, 0x09f1 }, - { 0x0a01, 0x0a03 }, { 0x0a05, 0x0a0a }, { 0x0a0f, 0x0a10 }, - { 0x0a13, 0x0a28 }, { 0x0a2a, 0x0a30 }, { 0x0a32, 0x0a33 }, - { 0x0a35, 0x0a36 }, { 0x0a38, 0x0a39 }, { 0x0a3c, 0x0a3c }, - { 0x0a3e, 0x0a42 }, { 0x0a47, 0x0a48 }, { 0x0a4b, 0x0a4d }, - { 0x0a59, 0x0a5c }, { 0x0a5e, 0x0a5e }, { 0x0a66, 0x0a74 }, - { 0x0a81, 0x0a83 }, { 0x0a85, 0x0a8d }, { 0x0a8f, 0x0a91 }, - { 0x0a93, 0x0aa8 }, { 0x0aaa, 0x0ab0 }, { 0x0ab2, 0x0ab3 }, - { 0x0ab5, 0x0ab9 }, { 0x0abc, 0x0ac5 }, { 0x0ac7, 0x0ac9 }, - { 0x0acb, 0x0acd }, { 0x0ad0, 0x0ad0 }, { 0x0ae0, 0x0ae3 }, - { 0x0ae6, 0x0aef }, { 0x0b01, 0x0b03 }, { 0x0b05, 0x0b0c }, - { 0x0b0f, 0x0b10 }, { 0x0b13, 0x0b28 }, { 0x0b2a, 0x0b30 }, - { 0x0b32, 0x0b33 }, { 0x0b35, 0x0b39 }, { 0x0b3c, 0x0b43 }, - { 0x0b47, 0x0b48 }, { 0x0b4b, 0x0b4d }, { 0x0b56, 0x0b57 }, - { 0x0b5c, 0x0b5d }, { 0x0b5f, 0x0b61 }, { 0x0b66, 0x0b6f }, - { 0x0b71, 0x0b71 }, { 0x0b82, 0x0b83 }, { 0x0b85, 0x0b8a }, - { 0x0b8e, 0x0b90 }, { 0x0b92, 0x0b95 }, { 0x0b99, 0x0b9a }, - { 0x0b9c, 0x0b9c }, { 0x0b9e, 0x0b9f }, { 0x0ba3, 0x0ba4 }, - { 0x0ba8, 0x0baa }, { 0x0bae, 0x0bb9 }, { 0x0bbe, 0x0bc2 }, - { 0x0bc6, 0x0bc8 }, { 0x0bca, 0x0bcd }, { 0x0bd7, 0x0bd7 }, - { 0x0be6, 0x0bef }, { 0x0c01, 0x0c03 }, { 0x0c05, 0x0c0c }, - { 0x0c0e, 0x0c10 }, { 0x0c12, 0x0c28 }, { 0x0c2a, 0x0c33 }, - { 0x0c35, 0x0c39 }, { 0x0c3e, 0x0c44 }, { 0x0c46, 0x0c48 }, - { 0x0c4a, 0x0c4d }, { 0x0c55, 0x0c56 }, { 0x0c60, 0x0c61 }, - { 0x0c66, 0x0c6f }, { 0x0c82, 0x0c83 }, { 0x0c85, 0x0c8c }, - { 0x0c8e, 0x0c90 }, { 0x0c92, 0x0ca8 }, { 0x0caa, 0x0cb3 }, - { 0x0cb5, 0x0cb9 }, { 0x0cbc, 0x0cc4 }, { 0x0cc6, 0x0cc8 }, - { 0x0cca, 0x0ccd }, { 0x0cd5, 0x0cd6 }, { 0x0cde, 0x0cde }, - { 0x0ce0, 0x0ce1 }, { 0x0ce6, 0x0cef }, { 0x0d02, 0x0d03 }, - { 0x0d05, 0x0d0c }, { 0x0d0e, 0x0d10 }, { 0x0d12, 0x0d28 }, - { 0x0d2a, 0x0d39 }, { 0x0d3e, 0x0d43 }, { 0x0d46, 0x0d48 }, - { 0x0d4a, 0x0d4d }, { 0x0d57, 0x0d57 }, { 0x0d60, 0x0d61 }, - { 0x0d66, 0x0d6f }, { 0x0d82, 0x0d83 }, { 0x0d85, 0x0d96 }, - { 0x0d9a, 0x0db1 }, { 0x0db3, 0x0dbb }, { 0x0dbd, 0x0dbd }, - { 0x0dc0, 0x0dc6 }, { 0x0dca, 0x0dca }, { 0x0dcf, 0x0dd4 }, - { 0x0dd6, 0x0dd6 }, { 0x0dd8, 0x0ddf }, { 0x0df2, 0x0df3 }, - { 0x0e01, 0x0e3a }, { 0x0e40, 0x0e4e }, { 0x0e50, 0x0e59 }, - { 0x0e81, 0x0e82 }, { 0x0e84, 0x0e84 }, { 0x0e87, 0x0e88 }, - { 0x0e8a, 0x0e8a }, { 0x0e8d, 0x0e8d }, { 0x0e94, 0x0e97 }, - { 0x0e99, 0x0e9f }, { 0x0ea1, 0x0ea3 }, { 0x0ea5, 0x0ea5 }, - { 0x0ea7, 0x0ea7 }, { 0x0eaa, 0x0eab }, { 0x0ead, 0x0eb9 }, - { 0x0ebb, 0x0ebd }, { 0x0ec0, 0x0ec4 }, { 0x0ec6, 0x0ec6 }, - { 0x0ec8, 0x0ecd }, { 0x0ed0, 0x0ed9 }, { 0x0edc, 0x0edd }, - { 0x0f00, 0x0f00 }, { 0x0f18, 0x0f19 }, { 0x0f20, 0x0f29 }, - { 0x0f35, 0x0f35 }, { 0x0f37, 0x0f37 }, { 0x0f39, 0x0f39 }, - { 0x0f3e, 0x0f47 }, { 0x0f49, 0x0f6a }, { 0x0f71, 0x0f84 }, - { 0x0f86, 0x0f8b }, { 0x0f90, 0x0f97 }, { 0x0f99, 0x0fbc }, - { 0x0fc6, 0x0fc6 }, { 0x1000, 0x1021 }, { 0x1023, 0x1027 }, - { 0x1029, 0x102a }, { 0x102c, 0x1032 }, { 0x1036, 0x1039 }, - { 0x1040, 0x1049 }, { 0x1050, 0x1059 }, { 0x10a0, 0x10c5 }, - { 0x10d0, 0x10fa }, { 0x10fc, 0x10fc }, { 0x1100, 0x1159 }, - { 0x115f, 0x11a2 }, { 0x11a8, 0x11f9 }, { 0x1200, 0x1248 }, - { 0x124a, 0x124d }, { 0x1250, 0x1256 }, { 0x1258, 0x1258 }, - { 0x125a, 0x125d }, { 0x1260, 0x1288 }, { 0x128a, 0x128d }, - { 0x1290, 0x12b0 }, { 0x12b2, 0x12b5 }, { 0x12b8, 0x12be }, - { 0x12c0, 0x12c0 }, { 0x12c2, 0x12c5 }, { 0x12c8, 0x12d6 }, - { 0x12d8, 0x1310 }, { 0x1312, 0x1315 }, { 0x1318, 0x135a }, - { 0x135f, 0x135f }, { 0x1380, 0x138f }, { 0x13a0, 0x13f4 }, - { 0x1401, 0x166c }, { 0x166f, 0x1676 }, { 0x1681, 0x169a }, - { 0x16a0, 0x16ea }, { 0x1700, 0x170c }, { 0x170e, 0x1714 }, - { 0x1720, 0x1734 }, { 0x1740, 0x1753 }, { 0x1760, 0x176c }, - { 0x176e, 0x1770 }, { 0x1772, 0x1773 }, { 0x1780, 0x17b3 }, - { 0x17b6, 0x17d3 }, { 0x17d7, 0x17d7 }, { 0x17dc, 0x17dd }, - { 0x17e0, 0x17e9 }, { 0x180b, 0x180d }, { 0x1810, 0x1819 }, - { 0x1820, 0x1877 }, { 0x1880, 0x18a9 }, { 0x1900, 0x191c }, - { 0x1920, 0x192b }, { 0x1930, 0x193b }, { 0x1946, 0x196d }, - { 0x1970, 0x1974 }, { 0x1980, 0x19a9 }, { 0x19b0, 0x19c9 }, - { 0x19d0, 0x19d9 }, { 0x1a00, 0x1a1b }, { 0x1d00, 0x1dc3 }, - { 0x1e00, 0x1e9b }, { 0x1ea0, 0x1ef9 }, { 0x1f00, 0x1f15 }, - { 0x1f18, 0x1f1d }, { 0x1f20, 0x1f45 }, { 0x1f48, 0x1f4d }, - { 0x1f50, 0x1f57 }, { 0x1f59, 0x1f59 }, { 0x1f5b, 0x1f5b }, - { 0x1f5d, 0x1f5d }, { 0x1f5f, 0x1f7d }, { 0x1f80, 0x1fb4 }, - { 0x1fb6, 0x1fbc }, { 0x1fbe, 0x1fbe }, { 0x1fc2, 0x1fc4 }, - { 0x1fc6, 0x1fcc }, { 0x1fd0, 0x1fd3 }, { 0x1fd6, 0x1fdb }, - { 0x1fe0, 0x1fec }, { 0x1ff2, 0x1ff4 }, { 0x1ff6, 0x1ffc }, - { 0x2071, 0x2071 }, { 0x207f, 0x207f }, { 0x2090, 0x2094 }, - { 0x20d0, 0x20eb }, { 0x2102, 0x2102 }, { 0x2107, 0x2107 }, - { 0x210a, 0x2113 }, { 0x2115, 0x2115 }, { 0x2119, 0x211d }, - { 0x2124, 0x2124 }, { 0x2126, 0x2126 }, { 0x2128, 0x2128 }, - { 0x212a, 0x212d }, { 0x212f, 0x2131 }, { 0x2133, 0x2139 }, - { 0x213c, 0x213f }, { 0x2145, 0x2149 }, { 0x2c00, 0x2c2e }, - { 0x2c30, 0x2c5e }, { 0x2c80, 0x2ce4 }, { 0x2d00, 0x2d25 }, - { 0x2d30, 0x2d65 }, { 0x2d6f, 0x2d6f }, { 0x2d80, 0x2d96 }, - { 0x2da0, 0x2da6 }, { 0x2da8, 0x2dae }, { 0x2db0, 0x2db6 }, - { 0x2db8, 0x2dbe }, { 0x2dc0, 0x2dc6 }, { 0x2dc8, 0x2dce }, - { 0x2dd0, 0x2dd6 }, { 0x2dd8, 0x2dde }, { 0x3005, 0x3006 }, - { 0x302a, 0x302f }, { 0x3031, 0x3035 }, { 0x303b, 0x303c }, - { 0x3041, 0x3096 }, { 0x3099, 0x309a }, { 0x309d, 0x309f }, - { 0x30a1, 0x30fa }, { 0x30fc, 0x30ff }, { 0x3105, 0x312c }, - { 0x3131, 0x318e }, { 0x31a0, 0x31b7 }, { 0x31f0, 0x31ff }, - { 0x3400, 0x4db5 }, { 0x4e00, 0x9fbb }, { 0xa000, 0xa48c }, - { 0xa800, 0xa827 }, { 0xac00, 0xd7a3 }, { 0xf900, 0xfa2d }, - { 0xfa30, 0xfa6a }, { 0xfa70, 0xfad9 }, { 0xfb00, 0xfb06 }, - { 0xfb13, 0xfb17 }, { 0xfb1d, 0xfb28 }, { 0xfb2a, 0xfb36 }, - { 0xfb38, 0xfb3c }, { 0xfb3e, 0xfb3e }, { 0xfb40, 0xfb41 }, - { 0xfb43, 0xfb44 }, { 0xfb46, 0xfbb1 }, { 0xfbd3, 0xfd3d }, - { 0xfd50, 0xfd8f }, { 0xfd92, 0xfdc7 }, { 0xfdf0, 0xfdfb }, - { 0xfe00, 0xfe0f }, { 0xfe20, 0xfe23 }, { 0xfe70, 0xfe74 }, - { 0xfe76, 0xfefc }, { 0xff10, 0xff19 }, { 0xff21, 0xff3a }, - { 0xff41, 0xff5a }, { 0xff66, 0xffbe }, { 0xffc2, 0xffc7 }, - { 0xffca, 0xffcf }, { 0xffd2, 0xffd7 }, { 0xffda, 0xffdc }, - { 0x10000, 0x1000b }, { 0x1000d, 0x10026 }, { 0x10028, 0x1003a }, - { 0x1003c, 0x1003d }, { 0x1003f, 0x1004d }, { 0x10050, 0x1005d }, - { 0x10080, 0x100fa }, { 0x10300, 0x1031e }, { 0x10330, 0x10349 }, - { 0x10380, 0x1039d }, { 0x103a0, 0x103c3 }, { 0x103c8, 0x103cf }, - { 0x10400, 0x1049d }, { 0x104a0, 0x104a9 }, { 0x10800, 0x10805 }, - { 0x10808, 0x10808 }, { 0x1080a, 0x10835 }, { 0x10837, 0x10838 }, - { 0x1083c, 0x1083c }, { 0x1083f, 0x1083f }, { 0x10a00, 0x10a03 }, - { 0x10a05, 0x10a06 }, { 0x10a0c, 0x10a13 }, { 0x10a15, 0x10a17 }, - { 0x10a19, 0x10a33 }, { 0x10a38, 0x10a3a }, { 0x10a3f, 0x10a3f }, - { 0x1d165, 0x1d169 }, { 0x1d16d, 0x1d172 }, { 0x1d17b, 0x1d182 }, - { 0x1d185, 0x1d18b }, { 0x1d1aa, 0x1d1ad }, { 0x1d242, 0x1d244 }, - { 0x1d400, 0x1d454 }, { 0x1d456, 0x1d49c }, { 0x1d49e, 0x1d49f }, - { 0x1d4a2, 0x1d4a2 }, { 0x1d4a5, 0x1d4a6 }, { 0x1d4a9, 0x1d4ac }, - { 0x1d4ae, 0x1d4b9 }, { 0x1d4bb, 0x1d4bb }, { 0x1d4bd, 0x1d4c3 }, - { 0x1d4c5, 0x1d505 }, { 0x1d507, 0x1d50a }, { 0x1d50d, 0x1d514 }, - { 0x1d516, 0x1d51c }, { 0x1d51e, 0x1d539 }, { 0x1d53b, 0x1d53e }, - { 0x1d540, 0x1d544 }, { 0x1d546, 0x1d546 }, { 0x1d54a, 0x1d550 }, - { 0x1d552, 0x1d6a5 }, { 0x1d6a8, 0x1d6c0 }, { 0x1d6c2, 0x1d6da }, - { 0x1d6dc, 0x1d6fa }, { 0x1d6fc, 0x1d714 }, { 0x1d716, 0x1d734 }, - { 0x1d736, 0x1d74e }, { 0x1d750, 0x1d76e }, { 0x1d770, 0x1d788 }, - { 0x1d78a, 0x1d7a8 }, { 0x1d7aa, 0x1d7c2 }, { 0x1d7c4, 0x1d7c9 }, - { 0x1d7ce, 0x1d7ff }, { 0x20000, 0x2a6d6 }, { 0x2f800, 0x2fa1d }, - { 0xe0100, 0xe01ef } - }}; - - return utils::table_lookup(alnum_table, c); + return isdigit(c) || isalpha(c); } } diff --git a/include/peelo/unicode/ctype/isalpha.hpp b/include/peelo/unicode/ctype/isalpha.hpp index 13b09d5..1025fe8 100644 --- a/include/peelo/unicode/ctype/isalpha.hpp +++ b/include/peelo/unicode/ctype/isalpha.hpp @@ -36,148 +36,253 @@ namespace peelo::unicode::ctype inline bool isalpha(char32_t c) { - static const std::array alpha_table = + static const std::array alpha_table = {{ - { 0x0041, 0x005a }, { 0x0061, 0x007a }, { 0x00aa, 0x00aa }, - { 0x00b5, 0x00b5 }, { 0x00ba, 0x00ba }, { 0x00c0, 0x00d6 }, - { 0x00d8, 0x00f6 }, { 0x00f8, 0x0241 }, { 0x0250, 0x02c1 }, - { 0x02c6, 0x02d1 }, { 0x02e0, 0x02e4 }, { 0x02ee, 0x02ee }, - { 0x0300, 0x036f }, { 0x037a, 0x037a }, { 0x0386, 0x0386 }, - { 0x0388, 0x038a }, { 0x038c, 0x038c }, { 0x038e, 0x03a1 }, - { 0x03a3, 0x03ce }, { 0x03d0, 0x03f5 }, { 0x03f7, 0x0481 }, - { 0x0483, 0x0486 }, { 0x0488, 0x04ce }, { 0x04d0, 0x04f9 }, - { 0x0500, 0x050f }, { 0x0531, 0x0556 }, { 0x0559, 0x0559 }, - { 0x0561, 0x0587 }, { 0x0591, 0x05b9 }, { 0x05bb, 0x05bd }, - { 0x05bf, 0x05bf }, { 0x05c1, 0x05c2 }, { 0x05c4, 0x05c5 }, - { 0x05c7, 0x05c7 }, { 0x05d0, 0x05ea }, { 0x05f0, 0x05f2 }, - { 0x0610, 0x0615 }, { 0x0621, 0x063a }, { 0x0640, 0x065e }, - { 0x066e, 0x06d3 }, { 0x06d5, 0x06dc }, { 0x06de, 0x06e8 }, - { 0x06ea, 0x06ef }, { 0x06fa, 0x06fc }, { 0x06ff, 0x06ff }, - { 0x0710, 0x074a }, { 0x074d, 0x076d }, { 0x0780, 0x07b1 }, - { 0x0901, 0x0939 }, { 0x093c, 0x094d }, { 0x0950, 0x0954 }, - { 0x0958, 0x0963 }, { 0x097d, 0x097d }, { 0x0981, 0x0983 }, - { 0x0985, 0x098c }, { 0x098f, 0x0990 }, { 0x0993, 0x09a8 }, - { 0x09aa, 0x09b0 }, { 0x09b2, 0x09b2 }, { 0x09b6, 0x09b9 }, - { 0x09bc, 0x09c4 }, { 0x09c7, 0x09c8 }, { 0x09cb, 0x09ce }, - { 0x09d7, 0x09d7 }, { 0x09dc, 0x09dd }, { 0x09df, 0x09e3 }, - { 0x09f0, 0x09f1 }, { 0x0a01, 0x0a03 }, { 0x0a05, 0x0a0a }, - { 0x0a0f, 0x0a10 }, { 0x0a13, 0x0a28 }, { 0x0a2a, 0x0a30 }, - { 0x0a32, 0x0a33 }, { 0x0a35, 0x0a36 }, { 0x0a38, 0x0a39 }, - { 0x0a3c, 0x0a3c }, { 0x0a3e, 0x0a42 }, { 0x0a47, 0x0a48 }, - { 0x0a4b, 0x0a4d }, { 0x0a59, 0x0a5c }, { 0x0a5e, 0x0a5e }, - { 0x0a70, 0x0a74 }, { 0x0a81, 0x0a83 }, { 0x0a85, 0x0a8d }, - { 0x0a8f, 0x0a91 }, { 0x0a93, 0x0aa8 }, { 0x0aaa, 0x0ab0 }, - { 0x0ab2, 0x0ab3 }, { 0x0ab5, 0x0ab9 }, { 0x0abc, 0x0ac5 }, - { 0x0ac7, 0x0ac9 }, { 0x0acb, 0x0acd }, { 0x0ad0, 0x0ad0 }, - { 0x0ae0, 0x0ae3 }, { 0x0b01, 0x0b03 }, { 0x0b05, 0x0b0c }, - { 0x0b0f, 0x0b10 }, { 0x0b13, 0x0b28 }, { 0x0b2a, 0x0b30 }, - { 0x0b32, 0x0b33 }, { 0x0b35, 0x0b39 }, { 0x0b3c, 0x0b43 }, - { 0x0b47, 0x0b48 }, { 0x0b4b, 0x0b4d }, { 0x0b56, 0x0b57 }, - { 0x0b5c, 0x0b5d }, { 0x0b5f, 0x0b61 }, { 0x0b71, 0x0b71 }, - { 0x0b82, 0x0b83 }, { 0x0b85, 0x0b8a }, { 0x0b8e, 0x0b90 }, - { 0x0b92, 0x0b95 }, { 0x0b99, 0x0b9a }, { 0x0b9c, 0x0b9c }, - { 0x0b9e, 0x0b9f }, { 0x0ba3, 0x0ba4 }, { 0x0ba8, 0x0baa }, - { 0x0bae, 0x0bb9 }, { 0x0bbe, 0x0bc2 }, { 0x0bc6, 0x0bc8 }, - { 0x0bca, 0x0bcd }, { 0x0bd7, 0x0bd7 }, { 0x0c01, 0x0c03 }, - { 0x0c05, 0x0c0c }, { 0x0c0e, 0x0c10 }, { 0x0c12, 0x0c28 }, - { 0x0c2a, 0x0c33 }, { 0x0c35, 0x0c39 }, { 0x0c3e, 0x0c44 }, - { 0x0c46, 0x0c48 }, { 0x0c4a, 0x0c4d }, { 0x0c55, 0x0c56 }, - { 0x0c60, 0x0c61 }, { 0x0c82, 0x0c83 }, { 0x0c85, 0x0c8c }, - { 0x0c8e, 0x0c90 }, { 0x0c92, 0x0ca8 }, { 0x0caa, 0x0cb3 }, - { 0x0cb5, 0x0cb9 }, { 0x0cbc, 0x0cc4 }, { 0x0cc6, 0x0cc8 }, - { 0x0cca, 0x0ccd }, { 0x0cd5, 0x0cd6 }, { 0x0cde, 0x0cde }, - { 0x0ce0, 0x0ce1 }, { 0x0d02, 0x0d03 }, { 0x0d05, 0x0d0c }, - { 0x0d0e, 0x0d10 }, { 0x0d12, 0x0d28 }, { 0x0d2a, 0x0d39 }, - { 0x0d3e, 0x0d43 }, { 0x0d46, 0x0d48 }, { 0x0d4a, 0x0d4d }, - { 0x0d57, 0x0d57 }, { 0x0d60, 0x0d61 }, { 0x0d82, 0x0d83 }, - { 0x0d85, 0x0d96 }, { 0x0d9a, 0x0db1 }, { 0x0db3, 0x0dbb }, - { 0x0dbd, 0x0dbd }, { 0x0dc0, 0x0dc6 }, { 0x0dca, 0x0dca }, - { 0x0dcf, 0x0dd4 }, { 0x0dd6, 0x0dd6 }, { 0x0dd8, 0x0ddf }, - { 0x0df2, 0x0df3 }, { 0x0e01, 0x0e3a }, { 0x0e40, 0x0e4e }, - { 0x0e81, 0x0e82 }, { 0x0e84, 0x0e84 }, { 0x0e87, 0x0e88 }, - { 0x0e8a, 0x0e8a }, { 0x0e8d, 0x0e8d }, { 0x0e94, 0x0e97 }, - { 0x0e99, 0x0e9f }, { 0x0ea1, 0x0ea3 }, { 0x0ea5, 0x0ea5 }, - { 0x0ea7, 0x0ea7 }, { 0x0eaa, 0x0eab }, { 0x0ead, 0x0eb9 }, - { 0x0ebb, 0x0ebd }, { 0x0ec0, 0x0ec4 }, { 0x0ec6, 0x0ec6 }, - { 0x0ec8, 0x0ecd }, { 0x0edc, 0x0edd }, { 0x0f00, 0x0f00 }, - { 0x0f18, 0x0f19 }, { 0x0f35, 0x0f35 }, { 0x0f37, 0x0f37 }, - { 0x0f39, 0x0f39 }, { 0x0f3e, 0x0f47 }, { 0x0f49, 0x0f6a }, - { 0x0f71, 0x0f84 }, { 0x0f86, 0x0f8b }, { 0x0f90, 0x0f97 }, - { 0x0f99, 0x0fbc }, { 0x0fc6, 0x0fc6 }, { 0x1000, 0x1021 }, - { 0x1023, 0x1027 }, { 0x1029, 0x102a }, { 0x102c, 0x1032 }, - { 0x1036, 0x1039 }, { 0x1050, 0x1059 }, { 0x10a0, 0x10c5 }, - { 0x10d0, 0x10fa }, { 0x10fc, 0x10fc }, { 0x1100, 0x1159 }, - { 0x115f, 0x11a2 }, { 0x11a8, 0x11f9 }, { 0x1200, 0x1248 }, - { 0x124a, 0x124d }, { 0x1250, 0x1256 }, { 0x1258, 0x1258 }, - { 0x125a, 0x125d }, { 0x1260, 0x1288 }, { 0x128a, 0x128d }, - { 0x1290, 0x12b0 }, { 0x12b2, 0x12b5 }, { 0x12b8, 0x12be }, - { 0x12c0, 0x12c0 }, { 0x12c2, 0x12c5 }, { 0x12c8, 0x12d6 }, - { 0x12d8, 0x1310 }, { 0x1312, 0x1315 }, { 0x1318, 0x135a }, - { 0x135f, 0x135f }, { 0x1380, 0x138f }, { 0x13a0, 0x13f4 }, - { 0x1401, 0x166c }, { 0x166f, 0x1676 }, { 0x1681, 0x169a }, - { 0x16a0, 0x16ea }, { 0x1700, 0x170c }, { 0x170e, 0x1714 }, - { 0x1720, 0x1734 }, { 0x1740, 0x1753 }, { 0x1760, 0x176c }, - { 0x176e, 0x1770 }, { 0x1772, 0x1773 }, { 0x1780, 0x17b3 }, - { 0x17b6, 0x17d3 }, { 0x17d7, 0x17d7 }, { 0x17dc, 0x17dd }, - { 0x180b, 0x180d }, { 0x1820, 0x1877 }, { 0x1880, 0x18a9 }, - { 0x1900, 0x191c }, { 0x1920, 0x192b }, { 0x1930, 0x193b }, - { 0x1950, 0x196d }, { 0x1970, 0x1974 }, { 0x1980, 0x19a9 }, - { 0x19b0, 0x19c9 }, { 0x1a00, 0x1a1b }, { 0x1d00, 0x1dc3 }, - { 0x1e00, 0x1e9b }, { 0x1ea0, 0x1ef9 }, { 0x1f00, 0x1f15 }, - { 0x1f18, 0x1f1d }, { 0x1f20, 0x1f45 }, { 0x1f48, 0x1f4d }, - { 0x1f50, 0x1f57 }, { 0x1f59, 0x1f59 }, { 0x1f5b, 0x1f5b }, - { 0x1f5d, 0x1f5d }, { 0x1f5f, 0x1f7d }, { 0x1f80, 0x1fb4 }, - { 0x1fb6, 0x1fbc }, { 0x1fbe, 0x1fbe }, { 0x1fc2, 0x1fc4 }, - { 0x1fc6, 0x1fcc }, { 0x1fd0, 0x1fd3 }, { 0x1fd6, 0x1fdb }, - { 0x1fe0, 0x1fec }, { 0x1ff2, 0x1ff4 }, { 0x1ff6, 0x1ffc }, - { 0x2071, 0x2071 }, { 0x207f, 0x207f }, { 0x2090, 0x2094 }, - { 0x20d0, 0x20eb }, { 0x2102, 0x2102 }, { 0x2107, 0x2107 }, - { 0x210a, 0x2113 }, { 0x2115, 0x2115 }, { 0x2119, 0x211d }, - { 0x2124, 0x2124 }, { 0x2126, 0x2126 }, { 0x2128, 0x2128 }, - { 0x212a, 0x212d }, { 0x212f, 0x2131 }, { 0x2133, 0x2139 }, - { 0x213c, 0x213f }, { 0x2145, 0x2149 }, { 0x2c00, 0x2c2e }, - { 0x2c30, 0x2c5e }, { 0x2c80, 0x2ce4 }, { 0x2d00, 0x2d25 }, - { 0x2d30, 0x2d65 }, { 0x2d6f, 0x2d6f }, { 0x2d80, 0x2d96 }, - { 0x2da0, 0x2da6 }, { 0x2da8, 0x2dae }, { 0x2db0, 0x2db6 }, - { 0x2db8, 0x2dbe }, { 0x2dc0, 0x2dc6 }, { 0x2dc8, 0x2dce }, - { 0x2dd0, 0x2dd6 }, { 0x2dd8, 0x2dde }, { 0x3005, 0x3006 }, - { 0x302a, 0x302f }, { 0x3031, 0x3035 }, { 0x303b, 0x303c }, - { 0x3041, 0x3096 }, { 0x3099, 0x309a }, { 0x309d, 0x309f }, - { 0x30a1, 0x30fa }, { 0x30fc, 0x30ff }, { 0x3105, 0x312c }, - { 0x3131, 0x318e }, { 0x31a0, 0x31b7 }, { 0x31f0, 0x31ff }, - { 0x3400, 0x4db5 }, { 0x4e00, 0x9fbb }, { 0xa000, 0xa48c }, - { 0xa800, 0xa827 }, { 0xac00, 0xd7a3 }, { 0xf900, 0xfa2d }, - { 0xfa30, 0xfa6a }, { 0xfa70, 0xfad9 }, { 0xfb00, 0xfb06 }, - { 0xfb13, 0xfb17 }, { 0xfb1d, 0xfb28 }, { 0xfb2a, 0xfb36 }, - { 0xfb38, 0xfb3c }, { 0xfb3e, 0xfb3e }, { 0xfb40, 0xfb41 }, - { 0xfb43, 0xfb44 }, { 0xfb46, 0xfbb1 }, { 0xfbd3, 0xfd3d }, - { 0xfd50, 0xfd8f }, { 0xfd92, 0xfdc7 }, { 0xfdf0, 0xfdfb }, - { 0xfe00, 0xfe0f }, { 0xfe20, 0xfe23 }, { 0xfe70, 0xfe74 }, - { 0xfe76, 0xfefc }, { 0xff21, 0xff3a }, { 0xff41, 0xff5a }, - { 0xff66, 0xffbe }, { 0xffc2, 0xffc7 }, { 0xffca, 0xffcf }, - { 0xffd2, 0xffd7 }, { 0xffda, 0xffdc }, { 0x10000, 0x1000b }, - { 0x1000d, 0x10026 }, { 0x10028, 0x1003a }, { 0x1003c, 0x1003d }, - { 0x1003f, 0x1004d }, { 0x10050, 0x1005d }, { 0x10080, 0x100fa }, - { 0x10300, 0x1031e }, { 0x10330, 0x10349 }, { 0x10380, 0x1039d }, - { 0x103a0, 0x103c3 }, { 0x103c8, 0x103cf }, { 0x10400, 0x1049d }, - { 0x10800, 0x10805 }, { 0x10808, 0x10808 }, { 0x1080a, 0x10835 }, - { 0x10837, 0x10838 }, { 0x1083c, 0x1083c }, { 0x1083f, 0x1083f }, - { 0x10a00, 0x10a03 }, { 0x10a05, 0x10a06 }, { 0x10a0c, 0x10a13 }, - { 0x10a15, 0x10a17 }, { 0x10a19, 0x10a33 }, { 0x10a38, 0x10a3a }, - { 0x10a3f, 0x10a3f }, { 0x1d165, 0x1d169 }, { 0x1d16d, 0x1d172 }, - { 0x1d17b, 0x1d182 }, { 0x1d185, 0x1d18b }, { 0x1d1aa, 0x1d1ad }, - { 0x1d242, 0x1d244 }, { 0x1d400, 0x1d454 }, { 0x1d456, 0x1d49c }, - { 0x1d49e, 0x1d49f }, { 0x1d4a2, 0x1d4a2 }, { 0x1d4a5, 0x1d4a6 }, - { 0x1d4a9, 0x1d4ac }, { 0x1d4ae, 0x1d4b9 }, { 0x1d4bb, 0x1d4bb }, - { 0x1d4bd, 0x1d4c3 }, { 0x1d4c5, 0x1d505 }, { 0x1d507, 0x1d50a }, - { 0x1d50d, 0x1d514 }, { 0x1d516, 0x1d51c }, { 0x1d51e, 0x1d539 }, - { 0x1d53b, 0x1d53e }, { 0x1d540, 0x1d544 }, { 0x1d546, 0x1d546 }, - { 0x1d54a, 0x1d550 }, { 0x1d552, 0x1d6a5 }, { 0x1d6a8, 0x1d6c0 }, - { 0x1d6c2, 0x1d6da }, { 0x1d6dc, 0x1d6fa }, { 0x1d6fc, 0x1d714 }, - { 0x1d716, 0x1d734 }, { 0x1d736, 0x1d74e }, { 0x1d750, 0x1d76e }, - { 0x1d770, 0x1d788 }, { 0x1d78a, 0x1d7a8 }, { 0x1d7aa, 0x1d7c2 }, - { 0x1d7c4, 0x1d7c9 }, { 0x20000, 0x2a6d6 }, { 0x2f800, 0x2fa1d }, - { 0xe0100, 0xe01ef } + { 0x0041, 0x005a, }, { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, }, + { 0x00b5, 0x00b5, }, { 0x00ba, 0x00ba, }, { 0x00c0, 0x00d6, }, + { 0x00d8, 0x00f6, }, { 0x00f8, 0x02c1, }, { 0x02c6, 0x02d1, }, + { 0x02e0, 0x02e4, }, { 0x02ec, 0x02ec, }, { 0x02ee, 0x02ee, }, + { 0x0345, 0x0345, }, { 0x0370, 0x0374, }, { 0x0376, 0x0377, }, + { 0x037a, 0x037d, }, { 0x037f, 0x037f, }, { 0x0386, 0x0386, }, + { 0x0388, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, }, + { 0x03a3, 0x03f5, }, { 0x03f7, 0x0481, }, { 0x048a, 0x052f, }, + { 0x0531, 0x0556, }, { 0x0559, 0x0559, }, { 0x0560, 0x0588, }, + { 0x05b0, 0x05bd, }, { 0x05bf, 0x05bf, }, { 0x05c1, 0x05c2, }, + { 0x05c4, 0x05c5, }, { 0x05c7, 0x05c7, }, { 0x05d0, 0x05ea, }, + { 0x05ef, 0x05f2, }, { 0x0610, 0x061a, }, { 0x0620, 0x0657, }, + { 0x0659, 0x065f, }, { 0x066e, 0x06d3, }, { 0x06d5, 0x06dc, }, + { 0x06e1, 0x06e8, }, { 0x06ed, 0x06ef, }, { 0x06fa, 0x06fc, }, + { 0x06ff, 0x06ff, }, { 0x0710, 0x073f, }, { 0x074d, 0x07b1, }, + { 0x07ca, 0x07ea, }, { 0x07f4, 0x07f5, }, { 0x07fa, 0x07fa, }, + { 0x0800, 0x0817, }, { 0x081a, 0x082c, }, { 0x0840, 0x0858, }, + { 0x0860, 0x086a, }, { 0x0870, 0x0887, }, { 0x0889, 0x088e, }, + { 0x08a0, 0x08c9, }, { 0x08d4, 0x08df, }, { 0x08e3, 0x08e9, }, + { 0x08f0, 0x093b, }, { 0x093d, 0x094c, }, { 0x094e, 0x0950, }, + { 0x0955, 0x0963, }, { 0x0971, 0x0983, }, { 0x0985, 0x098c, }, + { 0x098f, 0x0990, }, { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, + { 0x09b2, 0x09b2, }, { 0x09b6, 0x09b9, }, { 0x09bd, 0x09c4, }, + { 0x09c7, 0x09c8, }, { 0x09cb, 0x09cc, }, { 0x09ce, 0x09ce, }, + { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, }, { 0x09df, 0x09e3, }, + { 0x09f0, 0x09f1, }, { 0x09fc, 0x09fc, }, { 0x0a01, 0x0a03, }, + { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, }, + { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, }, + { 0x0a38, 0x0a39, }, { 0x0a3e, 0x0a42, }, { 0x0a47, 0x0a48, }, + { 0x0a4b, 0x0a4c, }, { 0x0a51, 0x0a51, }, { 0x0a59, 0x0a5c, }, + { 0x0a5e, 0x0a5e, }, { 0x0a70, 0x0a75, }, { 0x0a81, 0x0a83, }, + { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, }, { 0x0a93, 0x0aa8, }, + { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, }, { 0x0ab5, 0x0ab9, }, + { 0x0abd, 0x0ac5, }, { 0x0ac7, 0x0ac9, }, { 0x0acb, 0x0acc, }, + { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, }, { 0x0af9, 0x0afc, }, + { 0x0b01, 0x0b03, }, { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, + { 0x0b13, 0x0b28, }, { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, + { 0x0b35, 0x0b39, }, { 0x0b3d, 0x0b44, }, { 0x0b47, 0x0b48, }, + { 0x0b4b, 0x0b4c, }, { 0x0b56, 0x0b57, }, { 0x0b5c, 0x0b5d, }, + { 0x0b5f, 0x0b63, }, { 0x0b71, 0x0b71, }, { 0x0b82, 0x0b83, }, + { 0x0b85, 0x0b8a, }, { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, + { 0x0b99, 0x0b9a, }, { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, + { 0x0ba3, 0x0ba4, }, { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, + { 0x0bbe, 0x0bc2, }, { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcc, }, + { 0x0bd0, 0x0bd0, }, { 0x0bd7, 0x0bd7, }, { 0x0c00, 0x0c0c, }, + { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, }, + { 0x0c3d, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4c, }, + { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, }, + { 0x0c60, 0x0c63, }, { 0x0c80, 0x0c83, }, { 0x0c85, 0x0c8c, }, + { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, }, + { 0x0cb5, 0x0cb9, }, { 0x0cbd, 0x0cc4, }, { 0x0cc6, 0x0cc8, }, + { 0x0cca, 0x0ccc, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, }, + { 0x0ce0, 0x0ce3, }, { 0x0cf1, 0x0cf3, }, { 0x0d00, 0x0d0c, }, + { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d3a, }, { 0x0d3d, 0x0d44, }, + { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4c, }, { 0x0d4e, 0x0d4e, }, + { 0x0d54, 0x0d57, }, { 0x0d5f, 0x0d63, }, { 0x0d7a, 0x0d7f, }, + { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, }, { 0x0d9a, 0x0db1, }, + { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, }, { 0x0dc0, 0x0dc6, }, + { 0x0dcf, 0x0dd4, }, { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, + { 0x0df2, 0x0df3, }, { 0x0e01, 0x0e3a, }, { 0x0e40, 0x0e46, }, + { 0x0e4d, 0x0e4d, }, { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, + { 0x0e86, 0x0e8a, }, { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, + { 0x0ea7, 0x0eb9, }, { 0x0ebb, 0x0ebd, }, { 0x0ec0, 0x0ec4, }, + { 0x0ec6, 0x0ec6, }, { 0x0ecd, 0x0ecd, }, { 0x0edc, 0x0edf, }, + { 0x0f00, 0x0f00, }, { 0x0f40, 0x0f47, }, { 0x0f49, 0x0f6c, }, + { 0x0f71, 0x0f83, }, { 0x0f88, 0x0f97, }, { 0x0f99, 0x0fbc, }, + { 0x1000, 0x1036, }, { 0x1038, 0x1038, }, { 0x103b, 0x103f, }, + { 0x1050, 0x108f, }, { 0x109a, 0x109d, }, { 0x10a0, 0x10c5, }, + { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x10fa, }, + { 0x10fc, 0x1248, }, { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, + { 0x1258, 0x1258, }, { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, + { 0x128a, 0x128d, }, { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, + { 0x12b8, 0x12be, }, { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, + { 0x12c8, 0x12d6, }, { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, + { 0x1318, 0x135a, }, { 0x1380, 0x138f, }, { 0x13a0, 0x13f5, }, + { 0x13f8, 0x13fd, }, { 0x1401, 0x166c, }, { 0x166f, 0x167f, }, + { 0x1681, 0x169a, }, { 0x16a0, 0x16ea, }, { 0x16ee, 0x16f8, }, + { 0x1700, 0x1713, }, { 0x171f, 0x1733, }, { 0x1740, 0x1753, }, + { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, }, + { 0x1780, 0x17b3, }, { 0x17b6, 0x17c8, }, { 0x17d7, 0x17d7, }, + { 0x17dc, 0x17dc, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, }, + { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, }, + { 0x1930, 0x1938, }, { 0x1950, 0x196d, }, { 0x1970, 0x1974, }, + { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, }, { 0x1a00, 0x1a1b, }, + { 0x1a20, 0x1a5e, }, { 0x1a61, 0x1a74, }, { 0x1aa7, 0x1aa7, }, + { 0x1abf, 0x1ac0, }, { 0x1acc, 0x1ace, }, { 0x1b00, 0x1b33, }, + { 0x1b35, 0x1b43, }, { 0x1b45, 0x1b4c, }, { 0x1b80, 0x1ba9, }, + { 0x1bac, 0x1baf, }, { 0x1bba, 0x1be5, }, { 0x1be7, 0x1bf1, }, + { 0x1c00, 0x1c36, }, { 0x1c4d, 0x1c4f, }, { 0x1c5a, 0x1c7d, }, + { 0x1c80, 0x1c88, }, { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, }, + { 0x1ce9, 0x1cec, }, { 0x1cee, 0x1cf3, }, { 0x1cf5, 0x1cf6, }, + { 0x1cfa, 0x1cfa, }, { 0x1d00, 0x1dbf, }, { 0x1de7, 0x1df4, }, + { 0x1e00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, }, + { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, }, + { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, }, + { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fbc, }, { 0x1fbe, 0x1fbe, }, + { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fcc, }, { 0x1fd0, 0x1fd3, }, + { 0x1fd6, 0x1fdb, }, { 0x1fe0, 0x1fec, }, { 0x1ff2, 0x1ff4, }, + { 0x1ff6, 0x1ffc, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, }, + { 0x2090, 0x209c, }, { 0x2102, 0x2102, }, { 0x2107, 0x2107, }, + { 0x210a, 0x2113, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, }, + { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, }, + { 0x212a, 0x212d, }, { 0x212f, 0x2139, }, { 0x213c, 0x213f, }, + { 0x2145, 0x2149, }, { 0x214e, 0x214e, }, { 0x2160, 0x2188, }, + { 0x24b6, 0x24e9, }, { 0x2c00, 0x2ce4, }, { 0x2ceb, 0x2cee, }, + { 0x2cf2, 0x2cf3, }, { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, }, + { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d6f, }, + { 0x2d80, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, }, + { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, }, + { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, }, + { 0x2de0, 0x2dff, }, { 0x2e2f, 0x2e2f, }, { 0x3005, 0x3007, }, + { 0x3021, 0x3029, }, { 0x3031, 0x3035, }, { 0x3038, 0x303c, }, + { 0x3041, 0x3096, }, { 0x309d, 0x309f, }, { 0x30a1, 0x30fa, }, + { 0x30fc, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, }, + { 0x31a0, 0x31bf, }, { 0x31f0, 0x31ff, }, { 0x3400, 0x4dbf, }, + { 0x4e00, 0xa48c, }, { 0xa4d0, 0xa4fd, }, { 0xa500, 0xa60c, }, + { 0xa610, 0xa61f, }, { 0xa62a, 0xa62b, }, { 0xa640, 0xa66e, }, + { 0xa674, 0xa67b, }, { 0xa67f, 0xa6ef, }, { 0xa717, 0xa71f, }, + { 0xa722, 0xa788, }, { 0xa78b, 0xa7ca, }, { 0xa7d0, 0xa7d1, }, + { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa805, }, + { 0xa807, 0xa827, }, { 0xa840, 0xa873, }, { 0xa880, 0xa8c3, }, + { 0xa8c5, 0xa8c5, }, { 0xa8f2, 0xa8f7, }, { 0xa8fb, 0xa8fb, }, + { 0xa8fd, 0xa8ff, }, { 0xa90a, 0xa92a, }, { 0xa930, 0xa952, }, + { 0xa960, 0xa97c, }, { 0xa980, 0xa9b2, }, { 0xa9b4, 0xa9bf, }, + { 0xa9cf, 0xa9cf, }, { 0xa9e0, 0xa9ef, }, { 0xa9fa, 0xa9fe, }, + { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa60, 0xaa76, }, + { 0xaa7a, 0xaabe, }, { 0xaac0, 0xaac0, }, { 0xaac2, 0xaac2, }, + { 0xaadb, 0xaadd, }, { 0xaae0, 0xaaef, }, { 0xaaf2, 0xaaf5, }, + { 0xab01, 0xab06, }, { 0xab09, 0xab0e, }, { 0xab11, 0xab16, }, + { 0xab20, 0xab26, }, { 0xab28, 0xab2e, }, { 0xab30, 0xab5a, }, + { 0xab5c, 0xab69, }, { 0xab70, 0xabea, }, { 0xac00, 0xd7a3, }, + { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, }, { 0xf900, 0xfa6d, }, + { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, }, + { 0xfb1d, 0xfb28, }, { 0xfb2a, 0xfb36, }, { 0xfb38, 0xfb3c, }, + { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, }, + { 0xfb46, 0xfbb1, }, { 0xfbd3, 0xfd3d, }, { 0xfd50, 0xfd8f, }, + { 0xfd92, 0xfdc7, }, { 0xfdf0, 0xfdfb, }, { 0xfe70, 0xfe74, }, + { 0xfe76, 0xfefc, }, { 0xff21, 0xff3a, }, { 0xff41, 0xff5a, }, + { 0xff66, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, }, + { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0x10000, 0x1000b, }, + { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, }, + { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, }, + { 0x10140, 0x10174, }, { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, }, + { 0x10300, 0x1031f, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, }, + { 0x10380, 0x1039d, }, { 0x103a0, 0x103c3, }, { 0x103c8, 0x103cf, }, + { 0x103d1, 0x103d5, }, { 0x10400, 0x1049d, }, { 0x104b0, 0x104d3, }, + { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, }, + { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, + { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, + { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, }, + { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, }, + { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, }, + { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, }, + { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10860, 0x10876, }, + { 0x10880, 0x1089e, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, }, + { 0x10900, 0x10915, }, { 0x10920, 0x10939, }, { 0x10980, 0x109b7, }, + { 0x109be, 0x109bf, }, { 0x10a00, 0x10a03, }, { 0x10a05, 0x10a06, }, + { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, }, + { 0x10a60, 0x10a7c, }, { 0x10a80, 0x10a9c, }, { 0x10ac0, 0x10ac7, }, + { 0x10ac9, 0x10ae4, }, { 0x10b00, 0x10b35, }, { 0x10b40, 0x10b55, }, + { 0x10b60, 0x10b72, }, { 0x10b80, 0x10b91, }, { 0x10c00, 0x10c48, }, + { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, }, { 0x10d00, 0x10d27, }, + { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10eac, }, { 0x10eb0, 0x10eb1, }, + { 0x10f00, 0x10f1c, }, { 0x10f27, 0x10f27, }, { 0x10f30, 0x10f45, }, + { 0x10f70, 0x10f81, }, { 0x10fb0, 0x10fc4, }, { 0x10fe0, 0x10ff6, }, + { 0x11000, 0x11045, }, { 0x11071, 0x11075, }, { 0x11080, 0x110b8, }, + { 0x110c2, 0x110c2, }, { 0x110d0, 0x110e8, }, { 0x11100, 0x11132, }, + { 0x11144, 0x11147, }, { 0x11150, 0x11172, }, { 0x11176, 0x11176, }, + { 0x11180, 0x111bf, }, { 0x111c1, 0x111c4, }, { 0x111ce, 0x111cf, }, + { 0x111da, 0x111da, }, { 0x111dc, 0x111dc, }, { 0x11200, 0x11211, }, + { 0x11213, 0x11234, }, { 0x11237, 0x11237, }, { 0x1123e, 0x11241, }, + { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, }, + { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a8, }, { 0x112b0, 0x112e8, }, + { 0x11300, 0x11303, }, { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, }, + { 0x11313, 0x11328, }, { 0x1132a, 0x11330, }, { 0x11332, 0x11333, }, + { 0x11335, 0x11339, }, { 0x1133d, 0x11344, }, { 0x11347, 0x11348, }, + { 0x1134b, 0x1134c, }, { 0x11350, 0x11350, }, { 0x11357, 0x11357, }, + { 0x1135d, 0x11363, }, { 0x11400, 0x11441, }, { 0x11443, 0x11445, }, + { 0x11447, 0x1144a, }, { 0x1145f, 0x11461, }, { 0x11480, 0x114c1, }, + { 0x114c4, 0x114c5, }, { 0x114c7, 0x114c7, }, { 0x11580, 0x115b5, }, + { 0x115b8, 0x115be, }, { 0x115d8, 0x115dd, }, { 0x11600, 0x1163e, }, + { 0x11640, 0x11640, }, { 0x11644, 0x11644, }, { 0x11680, 0x116b5, }, + { 0x116b8, 0x116b8, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172a, }, + { 0x11740, 0x11746, }, { 0x11800, 0x11838, }, { 0x118a0, 0x118df, }, + { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, }, + { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, }, + { 0x1193b, 0x1193c, }, { 0x1193f, 0x11942, }, { 0x119a0, 0x119a7, }, + { 0x119aa, 0x119d7, }, { 0x119da, 0x119df, }, { 0x119e1, 0x119e1, }, + { 0x119e3, 0x119e4, }, { 0x11a00, 0x11a32, }, { 0x11a35, 0x11a3e, }, + { 0x11a50, 0x11a97, }, { 0x11a9d, 0x11a9d, }, { 0x11ab0, 0x11af8, }, + { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c3e, }, + { 0x11c40, 0x11c40, }, { 0x11c72, 0x11c8f, }, { 0x11c92, 0x11ca7, }, + { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, }, + { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, }, + { 0x11d3f, 0x11d41, }, { 0x11d43, 0x11d43, }, { 0x11d46, 0x11d47, }, + { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, }, + { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d96, }, { 0x11d98, 0x11d98, }, + { 0x11ee0, 0x11ef6, }, { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, }, + { 0x11f3e, 0x11f40, }, { 0x11fb0, 0x11fb0, }, { 0x12000, 0x12399, }, + { 0x12400, 0x1246e, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff0, }, + { 0x13000, 0x1342f, }, { 0x13441, 0x13446, }, { 0x14400, 0x14646, }, + { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a70, 0x16abe, }, + { 0x16ad0, 0x16aed, }, { 0x16b00, 0x16b2f, }, { 0x16b40, 0x16b43, }, + { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e7f, }, + { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, }, + { 0x16fe0, 0x16fe1, }, { 0x16fe3, 0x16fe3, }, { 0x16ff0, 0x16ff1, }, + { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, }, + { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, }, + { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, }, + { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, }, + { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, }, + { 0x1bc90, 0x1bc99, }, { 0x1bc9e, 0x1bc9e, }, { 0x1d400, 0x1d454, }, + { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, }, + { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, }, + { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, }, + { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, }, + { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, }, + { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, }, + { 0x1d6a8, 0x1d6c0, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6fa, }, + { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d734, }, { 0x1d736, 0x1d74e, }, + { 0x1d750, 0x1d76e, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d7a8, }, + { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7cb, }, { 0x1df00, 0x1df1e, }, + { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, }, + { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, }, + { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, }, + { 0x1e137, 0x1e13d, }, { 0x1e14e, 0x1e14e, }, { 0x1e290, 0x1e2ad, }, + { 0x1e2c0, 0x1e2eb, }, { 0x1e4d0, 0x1e4eb, }, { 0x1e7e0, 0x1e7e6, }, + { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, }, + { 0x1e800, 0x1e8c4, }, { 0x1e900, 0x1e943, }, { 0x1e947, 0x1e947, }, + { 0x1e94b, 0x1e94b, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, }, + { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, }, + { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, }, + { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, }, + { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, }, + { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, }, + { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, }, + { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, }, + { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, }, + { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, }, + { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, }, + { 0x1eeab, 0x1eebb, }, { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, }, + { 0x1f170, 0x1f189, }, { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, }, + { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, }, + { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, }, + { 0x31350, 0x323af, }, }}; return utils::table_lookup(alpha_table, c); diff --git a/include/peelo/unicode/ctype/isblank.hpp b/include/peelo/unicode/ctype/isblank.hpp index 1ee7282..94b8ce7 100644 --- a/include/peelo/unicode/ctype/isblank.hpp +++ b/include/peelo/unicode/ctype/isblank.hpp @@ -36,11 +36,11 @@ namespace peelo::unicode::ctype inline bool isblank(char32_t c) { - static const std::array blank_table = + static const std::array blank_table = {{ { 0x0009, 0x0009 }, { 0x0020, 0x0020 }, { 0x00a0, 0x00a0 }, - { 0x1680, 0x1680 }, { 0x180e, 0x180e }, { 0x2000, 0x200a }, - { 0x202f, 0x202f }, { 0x205f, 0x205f }, { 0x3000, 0x3000 } + { 0x1680, 0x1680 }, { 0x2000, 0x200a }, { 0x202f, 0x202f }, + { 0x205f, 0x205f }, { 0x3000, 0x3000 }, }}; return utils::table_lookup(blank_table, c); diff --git a/include/peelo/unicode/ctype/iscntrl.hpp b/include/peelo/unicode/ctype/iscntrl.hpp index bb2a00a..1b3eda7 100644 --- a/include/peelo/unicode/ctype/iscntrl.hpp +++ b/include/peelo/unicode/ctype/iscntrl.hpp @@ -26,8 +26,6 @@ */ #pragma once -#include - namespace peelo::unicode::ctype { /** @@ -36,17 +34,6 @@ namespace peelo::unicode::ctype inline bool iscntrl(char32_t c) { - static const std::array cntrl_table = - {{ - { 0x0000, 0x001f }, { 0x007f, 0x009f }, { 0x00ad, 0x00ad }, - { 0x0600, 0x0603 }, { 0x06dd, 0x06dd }, { 0x070f, 0x070f }, - { 0x17b4, 0x17b5 }, { 0x200b, 0x200f }, { 0x202a, 0x202e }, - { 0x2060, 0x2063 }, { 0x206a, 0x206f }, { 0xd800, 0xf8ff }, - { 0xfeff, 0xfeff }, { 0xfff9, 0xfffb }, { 0x1d173, 0x1d17a }, - { 0xe0001, 0xe0001 }, { 0xe0020, 0xe007f }, { 0xf0000, 0xffffd }, - { 0x100000, 0x10fffd } - }}; - - return utils::table_lookup(cntrl_table, c); + return (c >= 0x0000 && c <= 0x001f) || (c >= 0x007f && c <= 0x009f); } } diff --git a/include/peelo/unicode/ctype/isdigit.hpp b/include/peelo/unicode/ctype/isdigit.hpp index 8aaac9f..54237f8 100644 --- a/include/peelo/unicode/ctype/isdigit.hpp +++ b/include/peelo/unicode/ctype/isdigit.hpp @@ -36,16 +36,30 @@ namespace peelo::unicode::ctype inline bool isdigit(char32_t c) { - static const std::array digit_table = + static const std::array digit_table = {{ - { 0x0030, 0x0039 }, { 0x0660, 0x0669 }, { 0x06f0, 0x06f9 }, - { 0x0966, 0x096f }, { 0x09e6, 0x09ef }, { 0x0a66, 0x0a6f }, - { 0x0ae6, 0x0aef }, { 0x0b66, 0x0b6f }, { 0x0be6, 0x0bef }, - { 0x0c66, 0x0c6f }, { 0x0ce6, 0x0cef }, { 0x0d66, 0x0d6f }, - { 0x0e50, 0x0e59 }, { 0x0ed0, 0x0ed9 }, { 0x0f20, 0x0f29 }, - { 0x1040, 0x1049 }, { 0x17e0, 0x17e9 }, { 0x1810, 0x1819 }, - { 0x1946, 0x194f }, { 0x19d0, 0x19d9 }, { 0xff10, 0xff19 }, - { 0x104a0, 0x104a9 }, { 0x1d7ce, 0x1d7ff } + { 0x0030, 0x0039 }, { 0x0660, 0x0669 }, { 0x06F0, 0x06F9 }, + { 0x07C0, 0x07C9 }, { 0x0966, 0x096F }, { 0x09E6, 0x09EF }, + { 0x0A66, 0x0A6F }, { 0x0AE6, 0x0AEF }, { 0x0B66, 0x0B6F }, + { 0x0BE6, 0x0BEF }, { 0x0C66, 0x0C6F }, { 0x0CE6, 0x0CEF }, + { 0x0D66, 0x0D6F }, { 0x0DE6, 0x0DEF }, { 0x0E50, 0x0E59 }, + { 0x0ED0, 0x0ED9 }, { 0x0F20, 0x0F29 }, { 0x1040, 0x1049 }, + { 0x1090, 0x1099 }, { 0x17E0, 0x17E9 }, { 0x1810, 0x1819 }, + { 0x1946, 0x194F }, { 0x19D0, 0x19D9 }, { 0x1A80, 0x1A89 }, + { 0x1A90, 0x1A99 }, { 0x1B50, 0x1B59 }, { 0x1BB0, 0x1BB9 }, + { 0x1C40, 0x1C49 }, { 0x1C50, 0x1C59 }, { 0xA620, 0xA629 }, + { 0xA8D0, 0xA8D9 }, { 0xA900, 0xA909 }, { 0xA9D0, 0xA9D9 }, + { 0xA9F0, 0xA9F9 }, { 0xAA50, 0xAA59 }, { 0xABF0, 0xABF9 }, + { 0xFF10, 0xFF19 }, { 0x104A0, 0x104A9 }, { 0x10D30, 0x10D39 }, + { 0x11066, 0x1106F }, { 0x110F0, 0x110F9 }, { 0x11136, 0x1113F }, + { 0x111D0, 0x111D9 }, { 0x112F0, 0x112F9 }, { 0x11450, 0x11459 }, + { 0x114D0, 0x114D9 }, { 0x11650, 0x11659 }, { 0x116C0, 0x116C9 }, + { 0x11730, 0x11739 }, { 0x118E0, 0x118E9 }, { 0x11950, 0x11959 }, + { 0x11C50, 0x11C59 }, { 0x11D50, 0x11D59 }, { 0x11DA0, 0x11DA9 }, + { 0x11F50, 0x11F59 }, { 0x16A60, 0x16A69 }, { 0x16AC0, 0x16AC9 }, + { 0x16B50, 0x16B59 }, { 0x1D7CE, 0x1D7FF }, { 0x1E140, 0x1E149 }, + { 0x1E2F0, 0x1E2F9 }, { 0x1E4F0, 0x1E4F9 }, { 0x1E950, 0x1E959 }, + { 0x1FBF0, 0x1FBF9 }, }}; return utils::table_lookup(digit_table, c); diff --git a/include/peelo/unicode/ctype/isgraph.hpp b/include/peelo/unicode/ctype/isgraph.hpp index 4584520..dc06c3b 100644 --- a/include/peelo/unicode/ctype/isgraph.hpp +++ b/include/peelo/unicode/ctype/isgraph.hpp @@ -37,150 +37,246 @@ namespace peelo::unicode::ctype inline bool isgraph(char32_t c) { - static const std::array graph_table = + static const std::array graph_table = {{ - { 0x0021, 0x007e }, { 0x00a1, 0x0241 }, { 0x0250, 0x036f }, - { 0x0374, 0x0375 }, { 0x037a, 0x037a }, { 0x037e, 0x037e }, - { 0x0384, 0x038a }, { 0x038c, 0x038c }, { 0x038e, 0x03a1 }, - { 0x03a3, 0x03ce }, { 0x03d0, 0x0486 }, { 0x0488, 0x04ce }, - { 0x04d0, 0x04f9 }, { 0x0500, 0x050f }, { 0x0531, 0x0556 }, - { 0x0559, 0x055f }, { 0x0561, 0x0587 }, { 0x0589, 0x058a }, - { 0x0591, 0x05b9 }, { 0x05bb, 0x05c7 }, { 0x05d0, 0x05ea }, - { 0x05f0, 0x05f4 }, { 0x0600, 0x0603 }, { 0x060b, 0x0615 }, - { 0x061b, 0x061b }, { 0x061e, 0x061f }, { 0x0621, 0x063a }, - { 0x0640, 0x065e }, { 0x0660, 0x070d }, { 0x070f, 0x074a }, - { 0x074d, 0x076d }, { 0x0780, 0x07b1 }, { 0x0901, 0x0939 }, - { 0x093c, 0x094d }, { 0x0950, 0x0954 }, { 0x0958, 0x0970 }, - { 0x097d, 0x097d }, { 0x0981, 0x0983 }, { 0x0985, 0x098c }, - { 0x098f, 0x0990 }, { 0x0993, 0x09a8 }, { 0x09aa, 0x09b0 }, - { 0x09b2, 0x09b2 }, { 0x09b6, 0x09b9 }, { 0x09bc, 0x09c4 }, - { 0x09c7, 0x09c8 }, { 0x09cb, 0x09ce }, { 0x09d7, 0x09d7 }, - { 0x09dc, 0x09dd }, { 0x09df, 0x09e3 }, { 0x09e6, 0x09fa }, - { 0x0a01, 0x0a03 }, { 0x0a05, 0x0a0a }, { 0x0a0f, 0x0a10 }, - { 0x0a13, 0x0a28 }, { 0x0a2a, 0x0a30 }, { 0x0a32, 0x0a33 }, - { 0x0a35, 0x0a36 }, { 0x0a38, 0x0a39 }, { 0x0a3c, 0x0a3c }, - { 0x0a3e, 0x0a42 }, { 0x0a47, 0x0a48 }, { 0x0a4b, 0x0a4d }, - { 0x0a59, 0x0a5c }, { 0x0a5e, 0x0a5e }, { 0x0a66, 0x0a74 }, - { 0x0a81, 0x0a83 }, { 0x0a85, 0x0a8d }, { 0x0a8f, 0x0a91 }, - { 0x0a93, 0x0aa8 }, { 0x0aaa, 0x0ab0 }, { 0x0ab2, 0x0ab3 }, - { 0x0ab5, 0x0ab9 }, { 0x0abc, 0x0ac5 }, { 0x0ac7, 0x0ac9 }, - { 0x0acb, 0x0acd }, { 0x0ad0, 0x0ad0 }, { 0x0ae0, 0x0ae3 }, - { 0x0ae6, 0x0aef }, { 0x0af1, 0x0af1 }, { 0x0b01, 0x0b03 }, - { 0x0b05, 0x0b0c }, { 0x0b0f, 0x0b10 }, { 0x0b13, 0x0b28 }, - { 0x0b2a, 0x0b30 }, { 0x0b32, 0x0b33 }, { 0x0b35, 0x0b39 }, - { 0x0b3c, 0x0b43 }, { 0x0b47, 0x0b48 }, { 0x0b4b, 0x0b4d }, - { 0x0b56, 0x0b57 }, { 0x0b5c, 0x0b5d }, { 0x0b5f, 0x0b61 }, - { 0x0b66, 0x0b71 }, { 0x0b82, 0x0b83 }, { 0x0b85, 0x0b8a }, - { 0x0b8e, 0x0b90 }, { 0x0b92, 0x0b95 }, { 0x0b99, 0x0b9a }, - { 0x0b9c, 0x0b9c }, { 0x0b9e, 0x0b9f }, { 0x0ba3, 0x0ba4 }, - { 0x0ba8, 0x0baa }, { 0x0bae, 0x0bb9 }, { 0x0bbe, 0x0bc2 }, - { 0x0bc6, 0x0bc8 }, { 0x0bca, 0x0bcd }, { 0x0bd7, 0x0bd7 }, - { 0x0be6, 0x0bfa }, { 0x0c01, 0x0c03 }, { 0x0c05, 0x0c0c }, - { 0x0c0e, 0x0c10 }, { 0x0c12, 0x0c28 }, { 0x0c2a, 0x0c33 }, - { 0x0c35, 0x0c39 }, { 0x0c3e, 0x0c44 }, { 0x0c46, 0x0c48 }, - { 0x0c4a, 0x0c4d }, { 0x0c55, 0x0c56 }, { 0x0c60, 0x0c61 }, - { 0x0c66, 0x0c6f }, { 0x0c82, 0x0c83 }, { 0x0c85, 0x0c8c }, - { 0x0c8e, 0x0c90 }, { 0x0c92, 0x0ca8 }, { 0x0caa, 0x0cb3 }, - { 0x0cb5, 0x0cb9 }, { 0x0cbc, 0x0cc4 }, { 0x0cc6, 0x0cc8 }, - { 0x0cca, 0x0ccd }, { 0x0cd5, 0x0cd6 }, { 0x0cde, 0x0cde }, - { 0x0ce0, 0x0ce1 }, { 0x0ce6, 0x0cef }, { 0x0d02, 0x0d03 }, - { 0x0d05, 0x0d0c }, { 0x0d0e, 0x0d10 }, { 0x0d12, 0x0d28 }, - { 0x0d2a, 0x0d39 }, { 0x0d3e, 0x0d43 }, { 0x0d46, 0x0d48 }, - { 0x0d4a, 0x0d4d }, { 0x0d57, 0x0d57 }, { 0x0d60, 0x0d61 }, - { 0x0d66, 0x0d6f }, { 0x0d82, 0x0d83 }, { 0x0d85, 0x0d96 }, - { 0x0d9a, 0x0db1 }, { 0x0db3, 0x0dbb }, { 0x0dbd, 0x0dbd }, - { 0x0dc0, 0x0dc6 }, { 0x0dca, 0x0dca }, { 0x0dcf, 0x0dd4 }, - { 0x0dd6, 0x0dd6 }, { 0x0dd8, 0x0ddf }, { 0x0df2, 0x0df4 }, - { 0x0e01, 0x0e3a }, { 0x0e3f, 0x0e5b }, { 0x0e81, 0x0e82 }, - { 0x0e84, 0x0e84 }, { 0x0e87, 0x0e88 }, { 0x0e8a, 0x0e8a }, - { 0x0e8d, 0x0e8d }, { 0x0e94, 0x0e97 }, { 0x0e99, 0x0e9f }, - { 0x0ea1, 0x0ea3 }, { 0x0ea5, 0x0ea5 }, { 0x0ea7, 0x0ea7 }, - { 0x0eaa, 0x0eab }, { 0x0ead, 0x0eb9 }, { 0x0ebb, 0x0ebd }, - { 0x0ec0, 0x0ec4 }, { 0x0ec6, 0x0ec6 }, { 0x0ec8, 0x0ecd }, - { 0x0ed0, 0x0ed9 }, { 0x0edc, 0x0edd }, { 0x0f00, 0x0f47 }, - { 0x0f49, 0x0f6a }, { 0x0f71, 0x0f8b }, { 0x0f90, 0x0f97 }, - { 0x0f99, 0x0fbc }, { 0x0fbe, 0x0fcc }, { 0x0fcf, 0x0fd1 }, - { 0x1000, 0x1021 }, { 0x1023, 0x1027 }, { 0x1029, 0x102a }, - { 0x102c, 0x1032 }, { 0x1036, 0x1039 }, { 0x1040, 0x1059 }, - { 0x10a0, 0x10c5 }, { 0x10d0, 0x10fc }, { 0x1100, 0x1159 }, - { 0x115f, 0x11a2 }, { 0x11a8, 0x11f9 }, { 0x1200, 0x1248 }, - { 0x124a, 0x124d }, { 0x1250, 0x1256 }, { 0x1258, 0x1258 }, - { 0x125a, 0x125d }, { 0x1260, 0x1288 }, { 0x128a, 0x128d }, - { 0x1290, 0x12b0 }, { 0x12b2, 0x12b5 }, { 0x12b8, 0x12be }, - { 0x12c0, 0x12c0 }, { 0x12c2, 0x12c5 }, { 0x12c8, 0x12d6 }, - { 0x12d8, 0x1310 }, { 0x1312, 0x1315 }, { 0x1318, 0x135a }, - { 0x135f, 0x137c }, { 0x1380, 0x1399 }, { 0x13a0, 0x13f4 }, - { 0x1401, 0x1676 }, { 0x1681, 0x169c }, { 0x16a0, 0x16f0 }, - { 0x1700, 0x170c }, { 0x170e, 0x1714 }, { 0x1720, 0x1736 }, - { 0x1740, 0x1753 }, { 0x1760, 0x176c }, { 0x176e, 0x1770 }, - { 0x1772, 0x1773 }, { 0x1780, 0x17dd }, { 0x17e0, 0x17e9 }, - { 0x17f0, 0x17f9 }, { 0x1800, 0x180d }, { 0x1810, 0x1819 }, - { 0x1820, 0x1877 }, { 0x1880, 0x18a9 }, { 0x1900, 0x191c }, - { 0x1920, 0x192b }, { 0x1930, 0x193b }, { 0x1940, 0x1940 }, - { 0x1944, 0x196d }, { 0x1970, 0x1974 }, { 0x1980, 0x19a9 }, - { 0x19b0, 0x19c9 }, { 0x19d0, 0x19d9 }, { 0x19de, 0x1a1b }, - { 0x1a1e, 0x1a1f }, { 0x1d00, 0x1dc3 }, { 0x1e00, 0x1e9b }, - { 0x1ea0, 0x1ef9 }, { 0x1f00, 0x1f15 }, { 0x1f18, 0x1f1d }, - { 0x1f20, 0x1f45 }, { 0x1f48, 0x1f4d }, { 0x1f50, 0x1f57 }, - { 0x1f59, 0x1f59 }, { 0x1f5b, 0x1f5b }, { 0x1f5d, 0x1f5d }, - { 0x1f5f, 0x1f7d }, { 0x1f80, 0x1fb4 }, { 0x1fb6, 0x1fc4 }, - { 0x1fc6, 0x1fd3 }, { 0x1fd6, 0x1fdb }, { 0x1fdd, 0x1fef }, - { 0x1ff2, 0x1ff4 }, { 0x1ff6, 0x1ffe }, { 0x200b, 0x2027 }, - { 0x202a, 0x202e }, { 0x2030, 0x205e }, { 0x2060, 0x2063 }, - { 0x206a, 0x2071 }, { 0x2074, 0x208e }, { 0x2090, 0x2094 }, - { 0x20a0, 0x20b5 }, { 0x20d0, 0x20eb }, { 0x2100, 0x214c }, - { 0x2153, 0x2183 }, { 0x2190, 0x23db }, { 0x2400, 0x2426 }, - { 0x2440, 0x244a }, { 0x2460, 0x269c }, { 0x26a0, 0x26b1 }, - { 0x2701, 0x2704 }, { 0x2706, 0x2709 }, { 0x270c, 0x2727 }, - { 0x2729, 0x274b }, { 0x274d, 0x274d }, { 0x274f, 0x2752 }, - { 0x2756, 0x2756 }, { 0x2758, 0x275e }, { 0x2761, 0x2794 }, - { 0x2798, 0x27af }, { 0x27b1, 0x27be }, { 0x27c0, 0x27c6 }, - { 0x27d0, 0x27eb }, { 0x27f0, 0x2b13 }, { 0x2c00, 0x2c2e }, - { 0x2c30, 0x2c5e }, { 0x2c80, 0x2cea }, { 0x2cf9, 0x2d25 }, - { 0x2d30, 0x2d65 }, { 0x2d6f, 0x2d6f }, { 0x2d80, 0x2d96 }, - { 0x2da0, 0x2da6 }, { 0x2da8, 0x2dae }, { 0x2db0, 0x2db6 }, - { 0x2db8, 0x2dbe }, { 0x2dc0, 0x2dc6 }, { 0x2dc8, 0x2dce }, - { 0x2dd0, 0x2dd6 }, { 0x2dd8, 0x2dde }, { 0x2e00, 0x2e17 }, - { 0x2e1c, 0x2e1d }, { 0x2e80, 0x2e99 }, { 0x2e9b, 0x2ef3 }, - { 0x2f00, 0x2fd5 }, { 0x2ff0, 0x2ffb }, { 0x3001, 0x303f }, - { 0x3041, 0x3096 }, { 0x3099, 0x30ff }, { 0x3105, 0x312c }, - { 0x3131, 0x318e }, { 0x3190, 0x31b7 }, { 0x31c0, 0x31cf }, - { 0x31f0, 0x321e }, { 0x3220, 0x3243 }, { 0x3250, 0x32fe }, - { 0x3300, 0x4db5 }, { 0x4dc0, 0x9fbb }, { 0xa000, 0xa48c }, - { 0xa490, 0xa4c6 }, { 0xa700, 0xa716 }, { 0xa800, 0xa82b }, - { 0xac00, 0xd7a3 }, { 0xe000, 0xfa2d }, { 0xfa30, 0xfa6a }, - { 0xfa70, 0xfad9 }, { 0xfb00, 0xfb06 }, { 0xfb13, 0xfb17 }, - { 0xfb1d, 0xfb36 }, { 0xfb38, 0xfb3c }, { 0xfb3e, 0xfb3e }, - { 0xfb40, 0xfb41 }, { 0xfb43, 0xfb44 }, { 0xfb46, 0xfbb1 }, - { 0xfbd3, 0xfd3f }, { 0xfd50, 0xfd8f }, { 0xfd92, 0xfdc7 }, - { 0xfdf0, 0xfdfd }, { 0xfe00, 0xfe19 }, { 0xfe20, 0xfe23 }, - { 0xfe30, 0xfe52 }, { 0xfe54, 0xfe66 }, { 0xfe68, 0xfe6b }, - { 0xfe70, 0xfe74 }, { 0xfe76, 0xfefc }, { 0xfeff, 0xfeff }, - { 0xff01, 0xffbe }, { 0xffc2, 0xffc7 }, { 0xffca, 0xffcf }, - { 0xffd2, 0xffd7 }, { 0xffda, 0xffdc }, { 0xffe0, 0xffe6 }, - { 0xffe8, 0xffee }, { 0xfff9, 0xfffd }, { 0x10000, 0x1000b }, - { 0x1000d, 0x10026 }, { 0x10028, 0x1003a }, { 0x1003c, 0x1003d }, - { 0x1003f, 0x1004d }, { 0x10050, 0x1005d }, { 0x10080, 0x100fa }, - { 0x10100, 0x10102 }, { 0x10107, 0x10133 }, { 0x10137, 0x1018a }, - { 0x10300, 0x1031e }, { 0x10320, 0x10323 }, { 0x10330, 0x1034a }, - { 0x10380, 0x1039d }, { 0x1039f, 0x103c3 }, { 0x103c8, 0x103d5 }, - { 0x10400, 0x1049d }, { 0x104a0, 0x104a9 }, { 0x10800, 0x10805 }, - { 0x10808, 0x10808 }, { 0x1080a, 0x10835 }, { 0x10837, 0x10838 }, - { 0x1083c, 0x1083c }, { 0x1083f, 0x1083f }, { 0x10a00, 0x10a03 }, - { 0x10a05, 0x10a06 }, { 0x10a0c, 0x10a13 }, { 0x10a15, 0x10a17 }, - { 0x10a19, 0x10a33 }, { 0x10a38, 0x10a3a }, { 0x10a3f, 0x10a47 }, - { 0x10a50, 0x10a58 }, { 0x1d000, 0x1d0f5 }, { 0x1d100, 0x1d126 }, - { 0x1d12a, 0x1d1dd }, { 0x1d200, 0x1d245 }, { 0x1d300, 0x1d356 }, - { 0x1d400, 0x1d454 }, { 0x1d456, 0x1d49c }, { 0x1d49e, 0x1d49f }, - { 0x1d4a2, 0x1d4a2 }, { 0x1d4a5, 0x1d4a6 }, { 0x1d4a9, 0x1d4ac }, - { 0x1d4ae, 0x1d4b9 }, { 0x1d4bb, 0x1d4bb }, { 0x1d4bd, 0x1d4c3 }, - { 0x1d4c5, 0x1d505 }, { 0x1d507, 0x1d50a }, { 0x1d50d, 0x1d514 }, - { 0x1d516, 0x1d51c }, { 0x1d51e, 0x1d539 }, { 0x1d53b, 0x1d53e }, - { 0x1d540, 0x1d544 }, { 0x1d546, 0x1d546 }, { 0x1d54a, 0x1d550 }, - { 0x1d552, 0x1d6a5 }, { 0x1d6a8, 0x1d7c9 }, { 0x1d7ce, 0x1d7ff }, - { 0x20000, 0x2a6d6 }, { 0x2f800, 0x2fa1d }, { 0xe0001, 0xe0001 }, - { 0xe0020, 0xe007f }, { 0xe0100, 0xe01ef }, { 0xf0000, 0xffffd }, - { 0x100000, 0x10fffd }, + { 0x0021, 0x007e, }, { 0x00a1, 0x0377, }, { 0x037a, 0x037f, }, + { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, }, + { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, }, + { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, }, + { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, }, + { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, }, + { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, }, + { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, }, + { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, }, + { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, }, + { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, }, + { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, }, + { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, }, + { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, }, + { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, }, + { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, }, + { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, }, + { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, }, + { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, }, + { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, }, + { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, }, + { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, }, + { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, }, + { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, }, + { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, }, + { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, }, + { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, }, + { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, }, + { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, }, + { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, }, + { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, }, + { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, }, + { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, }, + { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, }, + { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, }, + { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, }, + { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, }, + { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, }, + { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, }, + { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, }, + { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, }, + { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, }, + { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, }, + { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, }, + { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, }, + { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, }, + { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, }, + { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, }, + { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, }, + { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, }, + { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, }, + { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, }, + { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, }, + { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, }, + { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, }, + { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, }, + { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, }, + { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, }, + { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, }, + { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, }, + { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, }, + { 0x13f8, 0x13fd, }, { 0x1400, 0x167f, }, { 0x1681, 0x169c, }, + { 0x16a0, 0x16f8, }, { 0x1700, 0x1715, }, { 0x171f, 0x1736, }, + { 0x1740, 0x1753, }, { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, + { 0x1772, 0x1773, }, { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, }, + { 0x17f0, 0x17f9, }, { 0x1800, 0x1819, }, { 0x1820, 0x1878, }, + { 0x1880, 0x18aa, }, { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, + { 0x1920, 0x192b, }, { 0x1930, 0x193b, }, { 0x1940, 0x1940, }, + { 0x1944, 0x196d, }, { 0x1970, 0x1974, }, { 0x1980, 0x19ab, }, + { 0x19b0, 0x19c9, }, { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, }, + { 0x1a1e, 0x1a5e, }, { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, }, + { 0x1a90, 0x1a99, }, { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, }, + { 0x1b00, 0x1b4c, }, { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, }, + { 0x1bfc, 0x1c37, }, { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, }, + { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, }, + { 0x1d00, 0x1f15, }, { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, }, + { 0x1f48, 0x1f4d, }, { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, }, + { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, }, + { 0x1f80, 0x1fb4, }, { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, }, + { 0x1fd6, 0x1fdb, }, { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, }, + { 0x1ff6, 0x1ffe, }, { 0x200b, 0x2027, }, { 0x202a, 0x202e, }, + { 0x2030, 0x205e, }, { 0x2060, 0x2064, }, { 0x2066, 0x2071, }, + { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, }, + { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, }, + { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, }, + { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, }, + { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, }, + { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, }, + { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, }, + { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, }, + { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, }, + { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x303f, }, + { 0x3041, 0x3096, }, { 0x3099, 0x30ff, }, { 0x3105, 0x312f, }, + { 0x3131, 0x318e, }, { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, }, + { 0x3220, 0xa48c, }, { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, }, + { 0xa640, 0xa6f7, }, { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, }, + { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, }, + { 0xa830, 0xa839, }, { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, }, + { 0xa8ce, 0xa8d9, }, { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, }, + { 0xa980, 0xa9cd, }, { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, }, + { 0xaa00, 0xaa36, }, { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, }, + { 0xaa5c, 0xaac2, }, { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, }, + { 0xab09, 0xab0e, }, { 0xab11, 0xab16, }, { 0xab20, 0xab26, }, + { 0xab28, 0xab2e, }, { 0xab30, 0xab6b, }, { 0xab70, 0xabed, }, + { 0xabf0, 0xabf9, }, { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, }, + { 0xd7cb, 0xd7fb, }, { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, }, + { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, }, + { 0xfb38, 0xfb3c, }, { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, + { 0xfb43, 0xfb44, }, { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, }, + { 0xfd92, 0xfdc7, }, { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, }, + { 0xfe20, 0xfe52, }, { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, + { 0xfe70, 0xfe74, }, { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, }, + { 0xff01, 0xffbe, }, { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, }, + { 0xffd2, 0xffd7, }, { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, }, + { 0xffe8, 0xffee, }, { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, }, + { 0x1000d, 0x10026, }, { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, }, + { 0x1003f, 0x1004d, }, { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, }, + { 0x10100, 0x10102, }, { 0x10107, 0x10133, }, { 0x10137, 0x1018e, }, + { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, }, + { 0x10280, 0x1029c, }, { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, }, + { 0x10300, 0x10323, }, { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, }, + { 0x10380, 0x1039d, }, { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, }, + { 0x10400, 0x1049d, }, { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, }, + { 0x104d8, 0x104fb, }, { 0x10500, 0x10527, }, { 0x10530, 0x10563, }, + { 0x1056f, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, + { 0x10594, 0x10595, }, { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, + { 0x105b3, 0x105b9, }, { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, }, + { 0x10740, 0x10755, }, { 0x10760, 0x10767, }, { 0x10780, 0x10785, }, + { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, }, + { 0x10808, 0x10808, }, { 0x1080a, 0x10835, }, { 0x10837, 0x10838, }, + { 0x1083c, 0x1083c, }, { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, }, + { 0x108a7, 0x108af, }, { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, }, + { 0x108fb, 0x1091b, }, { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, }, + { 0x10980, 0x109b7, }, { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, }, + { 0x10a05, 0x10a06, }, { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, + { 0x10a19, 0x10a35, }, { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, }, + { 0x10a50, 0x10a58, }, { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, }, + { 0x10aeb, 0x10af6, }, { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, }, + { 0x10b58, 0x10b72, }, { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, }, + { 0x10ba9, 0x10baf, }, { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, }, + { 0x10cc0, 0x10cf2, }, { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, }, + { 0x10e60, 0x10e7e, }, { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, }, + { 0x10eb0, 0x10eb1, }, { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, }, + { 0x10f70, 0x10f89, }, { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, }, + { 0x11000, 0x1104d, }, { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, }, + { 0x110cd, 0x110cd, }, { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, }, + { 0x11100, 0x11134, }, { 0x11136, 0x11147, }, { 0x11150, 0x11176, }, + { 0x11180, 0x111df, }, { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, }, + { 0x11213, 0x11241, }, { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, + { 0x1128a, 0x1128d, }, { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, }, + { 0x112b0, 0x112ea, }, { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, }, + { 0x11305, 0x1130c, }, { 0x1130f, 0x11310, }, { 0x11313, 0x11328, }, + { 0x1132a, 0x11330, }, { 0x11332, 0x11333, }, { 0x11335, 0x11339, }, + { 0x1133b, 0x11344, }, { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, }, + { 0x11350, 0x11350, }, { 0x11357, 0x11357, }, { 0x1135d, 0x11363, }, + { 0x11366, 0x1136c, }, { 0x11370, 0x11374, }, { 0x11400, 0x1145b, }, + { 0x1145d, 0x11461, }, { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, }, + { 0x11580, 0x115b5, }, { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, }, + { 0x11650, 0x11659, }, { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, }, + { 0x116c0, 0x116c9, }, { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, }, + { 0x11730, 0x11746, }, { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, }, + { 0x118ff, 0x11906, }, { 0x11909, 0x11909, }, { 0x1190c, 0x11913, }, + { 0x11915, 0x11916, }, { 0x11918, 0x11935, }, { 0x11937, 0x11938, }, + { 0x1193b, 0x11946, }, { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, }, + { 0x119aa, 0x119d7, }, { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, }, + { 0x11a50, 0x11aa2, }, { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, }, + { 0x11c00, 0x11c08, }, { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, }, + { 0x11c50, 0x11c6c, }, { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, }, + { 0x11ca9, 0x11cb6, }, { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, }, + { 0x11d0b, 0x11d36, }, { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, }, + { 0x11d3f, 0x11d47, }, { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, }, + { 0x11d67, 0x11d68, }, { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, }, + { 0x11d93, 0x11d98, }, { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, }, + { 0x11f00, 0x11f10, }, { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, }, + { 0x11fb0, 0x11fb0, }, { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, }, + { 0x12400, 0x1246e, }, { 0x12470, 0x12474, }, { 0x12480, 0x12543, }, + { 0x12f90, 0x12ff2, }, { 0x13000, 0x13455, }, { 0x14400, 0x14646, }, + { 0x16800, 0x16a38, }, { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, }, + { 0x16a6e, 0x16abe, }, { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, }, + { 0x16af0, 0x16af5, }, { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, }, + { 0x16b5b, 0x16b61, }, { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, + { 0x16e40, 0x16e9a, }, { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, + { 0x16f8f, 0x16f9f, }, { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, }, + { 0x17000, 0x187f7, }, { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, }, + { 0x1aff0, 0x1aff3, }, { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, }, + { 0x1b000, 0x1b122, }, { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, }, + { 0x1b155, 0x1b155, }, { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, }, + { 0x1bc00, 0x1bc6a, }, { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, }, + { 0x1bc90, 0x1bc99, }, { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, }, + { 0x1cf30, 0x1cf46, }, { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, + { 0x1d100, 0x1d126, }, { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, }, + { 0x1d2c0, 0x1d2d3, }, { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, }, + { 0x1d360, 0x1d378, }, { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, }, + { 0x1d49e, 0x1d49f, }, { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, + { 0x1d4a9, 0x1d4ac, }, { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, + { 0x1d4bd, 0x1d4c3, }, { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, }, + { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, }, + { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, }, + { 0x1d54a, 0x1d550, }, { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, }, + { 0x1d7ce, 0x1da8b, }, { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, }, + { 0x1df00, 0x1df1e, }, { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, + { 0x1e008, 0x1e018, }, { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, + { 0x1e026, 0x1e02a, }, { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, + { 0x1e100, 0x1e12c, }, { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, }, + { 0x1e14e, 0x1e14f, }, { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, }, + { 0x1e2ff, 0x1e2ff, }, { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, }, + { 0x1e7e8, 0x1e7eb, }, { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, }, + { 0x1e800, 0x1e8c4, }, { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, }, + { 0x1e950, 0x1e959, }, { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, }, + { 0x1ed01, 0x1ed3d, }, { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, }, + { 0x1ee21, 0x1ee22, }, { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, }, + { 0x1ee29, 0x1ee32, }, { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, }, + { 0x1ee3b, 0x1ee3b, }, { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, }, + { 0x1ee49, 0x1ee49, }, { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, }, + { 0x1ee51, 0x1ee52, }, { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, }, + { 0x1ee59, 0x1ee59, }, { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, }, + { 0x1ee5f, 0x1ee5f, }, { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, }, + { 0x1ee67, 0x1ee6a, }, { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, }, + { 0x1ee79, 0x1ee7c, }, { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, }, + { 0x1ee8b, 0x1ee9b, }, { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, }, + { 0x1eeab, 0x1eebb, }, { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, }, + { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, }, + { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, }, + { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, }, + { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, }, + { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, }, + { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, }, + { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, }, + { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, }, + { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, }, + { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, }, + { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, }, + { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, }, + { 0x20000, 0x2a6df, }, { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, }, + { 0x2b820, 0x2cea1, }, { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, }, + { 0x2f800, 0x2fa1d, }, { 0x30000, 0x3134a, }, { 0x31350, 0x323af, }, + { 0xe0001, 0xe0001, }, { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, }, + { 0xf0000, 0xffffd, }, { 0x100000, 0x10fffd, }, }}; return utils::table_lookup(graph_table, c); diff --git a/include/peelo/unicode/ctype/islower.hpp b/include/peelo/unicode/ctype/islower.hpp index 8860869..1388b5c 100644 --- a/include/peelo/unicode/ctype/islower.hpp +++ b/include/peelo/unicode/ctype/islower.hpp @@ -36,168 +36,232 @@ namespace peelo::unicode::ctype inline bool islower(char32_t c) { - static const std::array lower_table = + static const std::array lower_table = {{ - { 0x0061, 0x007a }, { 0x00aa, 0x00aa }, { 0x00b5, 0x00b5 }, - { 0x00ba, 0x00ba }, { 0x00df, 0x00f6 }, { 0x00f8, 0x00ff }, - { 0x0101, 0x0101 }, { 0x0103, 0x0103 }, { 0x0105, 0x0105 }, - { 0x0107, 0x0107 }, { 0x0109, 0x0109 }, { 0x010b, 0x010b }, - { 0x010d, 0x010d }, { 0x010f, 0x010f }, { 0x0111, 0x0111 }, - { 0x0113, 0x0113 }, { 0x0115, 0x0115 }, { 0x0117, 0x0117 }, - { 0x0119, 0x0119 }, { 0x011b, 0x011b }, { 0x011d, 0x011d }, - { 0x011f, 0x011f }, { 0x0121, 0x0121 }, { 0x0123, 0x0123 }, - { 0x0125, 0x0125 }, { 0x0127, 0x0127 }, { 0x0129, 0x0129 }, - { 0x012b, 0x012b }, { 0x012d, 0x012d }, { 0x012f, 0x012f }, - { 0x0131, 0x0131 }, { 0x0133, 0x0133 }, { 0x0135, 0x0135 }, - { 0x0137, 0x0138 }, { 0x013a, 0x013a }, { 0x013c, 0x013c }, - { 0x013e, 0x013e }, { 0x0140, 0x0140 }, { 0x0142, 0x0142 }, - { 0x0144, 0x0144 }, { 0x0146, 0x0146 }, { 0x0148, 0x0149 }, - { 0x014b, 0x014b }, { 0x014d, 0x014d }, { 0x014f, 0x014f }, - { 0x0151, 0x0151 }, { 0x0153, 0x0153 }, { 0x0155, 0x0155 }, - { 0x0157, 0x0157 }, { 0x0159, 0x0159 }, { 0x015b, 0x015b }, - { 0x015d, 0x015d }, { 0x015f, 0x015f }, { 0x0161, 0x0161 }, - { 0x0163, 0x0163 }, { 0x0165, 0x0165 }, { 0x0167, 0x0167 }, - { 0x0169, 0x0169 }, { 0x016b, 0x016b }, { 0x016d, 0x016d }, - { 0x016f, 0x016f }, { 0x0171, 0x0171 }, { 0x0173, 0x0173 }, - { 0x0175, 0x0175 }, { 0x0177, 0x0177 }, { 0x017a, 0x017a }, - { 0x017c, 0x017c }, { 0x017e, 0x0180 }, { 0x0183, 0x0183 }, - { 0x0185, 0x0185 }, { 0x0188, 0x0188 }, { 0x018c, 0x018d }, - { 0x0192, 0x0192 }, { 0x0195, 0x0195 }, { 0x0199, 0x019b }, - { 0x019e, 0x019e }, { 0x01a1, 0x01a1 }, { 0x01a3, 0x01a3 }, - { 0x01a5, 0x01a5 }, { 0x01a8, 0x01a8 }, { 0x01aa, 0x01ab }, - { 0x01ad, 0x01ad }, { 0x01b0, 0x01b0 }, { 0x01b4, 0x01b4 }, - { 0x01b6, 0x01b6 }, { 0x01b9, 0x01ba }, { 0x01bd, 0x01bf }, - { 0x01c6, 0x01c6 }, { 0x01c9, 0x01c9 }, { 0x01cc, 0x01cc }, - { 0x01ce, 0x01ce }, { 0x01d0, 0x01d0 }, { 0x01d2, 0x01d2 }, - { 0x01d4, 0x01d4 }, { 0x01d6, 0x01d6 }, { 0x01d8, 0x01d8 }, - { 0x01da, 0x01da }, { 0x01dc, 0x01dd }, { 0x01df, 0x01df }, - { 0x01e1, 0x01e1 }, { 0x01e3, 0x01e3 }, { 0x01e5, 0x01e5 }, - { 0x01e7, 0x01e7 }, { 0x01e9, 0x01e9 }, { 0x01eb, 0x01eb }, - { 0x01ed, 0x01ed }, { 0x01ef, 0x01f0 }, { 0x01f3, 0x01f3 }, - { 0x01f5, 0x01f5 }, { 0x01f9, 0x01f9 }, { 0x01fb, 0x01fb }, - { 0x01fd, 0x01fd }, { 0x01ff, 0x01ff }, { 0x0201, 0x0201 }, - { 0x0203, 0x0203 }, { 0x0205, 0x0205 }, { 0x0207, 0x0207 }, - { 0x0209, 0x0209 }, { 0x020b, 0x020b }, { 0x020d, 0x020d }, - { 0x020f, 0x020f }, { 0x0211, 0x0211 }, { 0x0213, 0x0213 }, - { 0x0215, 0x0215 }, { 0x0217, 0x0217 }, { 0x0219, 0x0219 }, - { 0x021b, 0x021b }, { 0x021d, 0x021d }, { 0x021f, 0x021f }, - { 0x0221, 0x0221 }, { 0x0223, 0x0223 }, { 0x0225, 0x0225 }, - { 0x0227, 0x0227 }, { 0x0229, 0x0229 }, { 0x022b, 0x022b }, - { 0x022d, 0x022d }, { 0x022f, 0x022f }, { 0x0231, 0x0231 }, - { 0x0233, 0x0239 }, { 0x023c, 0x023c }, { 0x023f, 0x0240 }, - { 0x0250, 0x02af }, { 0x0390, 0x0390 }, { 0x03ac, 0x03ce }, - { 0x03d0, 0x03d1 }, { 0x03d5, 0x03d7 }, { 0x03d9, 0x03d9 }, - { 0x03db, 0x03db }, { 0x03dd, 0x03dd }, { 0x03df, 0x03df }, - { 0x03e1, 0x03e1 }, { 0x03e3, 0x03e3 }, { 0x03e5, 0x03e5 }, - { 0x03e7, 0x03e7 }, { 0x03e9, 0x03e9 }, { 0x03eb, 0x03eb }, - { 0x03ed, 0x03ed }, { 0x03ef, 0x03f3 }, { 0x03f5, 0x03f5 }, - { 0x03f8, 0x03f8 }, { 0x03fb, 0x03fc }, { 0x0430, 0x045f }, - { 0x0461, 0x0461 }, { 0x0463, 0x0463 }, { 0x0465, 0x0465 }, - { 0x0467, 0x0467 }, { 0x0469, 0x0469 }, { 0x046b, 0x046b }, - { 0x046d, 0x046d }, { 0x046f, 0x046f }, { 0x0471, 0x0471 }, - { 0x0473, 0x0473 }, { 0x0475, 0x0475 }, { 0x0477, 0x0477 }, - { 0x0479, 0x0479 }, { 0x047b, 0x047b }, { 0x047d, 0x047d }, - { 0x047f, 0x047f }, { 0x0481, 0x0481 }, { 0x048b, 0x048b }, - { 0x048d, 0x048d }, { 0x048f, 0x048f }, { 0x0491, 0x0491 }, - { 0x0493, 0x0493 }, { 0x0495, 0x0495 }, { 0x0497, 0x0497 }, - { 0x0499, 0x0499 }, { 0x049b, 0x049b }, { 0x049d, 0x049d }, - { 0x049f, 0x049f }, { 0x04a1, 0x04a1 }, { 0x04a3, 0x04a3 }, - { 0x04a5, 0x04a5 }, { 0x04a7, 0x04a7 }, { 0x04a9, 0x04a9 }, - { 0x04ab, 0x04ab }, { 0x04ad, 0x04ad }, { 0x04af, 0x04af }, - { 0x04b1, 0x04b1 }, { 0x04b3, 0x04b3 }, { 0x04b5, 0x04b5 }, - { 0x04b7, 0x04b7 }, { 0x04b9, 0x04b9 }, { 0x04bb, 0x04bb }, - { 0x04bd, 0x04bd }, { 0x04bf, 0x04bf }, { 0x04c2, 0x04c2 }, - { 0x04c4, 0x04c4 }, { 0x04c6, 0x04c6 }, { 0x04c8, 0x04c8 }, - { 0x04ca, 0x04ca }, { 0x04cc, 0x04cc }, { 0x04ce, 0x04ce }, - { 0x04d1, 0x04d1 }, { 0x04d3, 0x04d3 }, { 0x04d5, 0x04d5 }, - { 0x04d7, 0x04d7 }, { 0x04d9, 0x04d9 }, { 0x04db, 0x04db }, - { 0x04dd, 0x04dd }, { 0x04df, 0x04df }, { 0x04e1, 0x04e1 }, - { 0x04e3, 0x04e3 }, { 0x04e5, 0x04e5 }, { 0x04e7, 0x04e7 }, - { 0x04e9, 0x04e9 }, { 0x04eb, 0x04eb }, { 0x04ed, 0x04ed }, - { 0x04ef, 0x04ef }, { 0x04f1, 0x04f1 }, { 0x04f3, 0x04f3 }, - { 0x04f5, 0x04f5 }, { 0x04f7, 0x04f7 }, { 0x04f9, 0x04f9 }, - { 0x0501, 0x0501 }, { 0x0503, 0x0503 }, { 0x0505, 0x0505 }, - { 0x0507, 0x0507 }, { 0x0509, 0x0509 }, { 0x050b, 0x050b }, - { 0x050d, 0x050d }, { 0x050f, 0x050f }, { 0x0561, 0x0587 }, - { 0x1d00, 0x1d2b }, { 0x1d62, 0x1d77 }, { 0x1d79, 0x1d9a }, - { 0x1e01, 0x1e01 }, { 0x1e03, 0x1e03 }, { 0x1e05, 0x1e05 }, - { 0x1e07, 0x1e07 }, { 0x1e09, 0x1e09 }, { 0x1e0b, 0x1e0b }, - { 0x1e0d, 0x1e0d }, { 0x1e0f, 0x1e0f }, { 0x1e11, 0x1e11 }, - { 0x1e13, 0x1e13 }, { 0x1e15, 0x1e15 }, { 0x1e17, 0x1e17 }, - { 0x1e19, 0x1e19 }, { 0x1e1b, 0x1e1b }, { 0x1e1d, 0x1e1d }, - { 0x1e1f, 0x1e1f }, { 0x1e21, 0x1e21 }, { 0x1e23, 0x1e23 }, - { 0x1e25, 0x1e25 }, { 0x1e27, 0x1e27 }, { 0x1e29, 0x1e29 }, - { 0x1e2b, 0x1e2b }, { 0x1e2d, 0x1e2d }, { 0x1e2f, 0x1e2f }, - { 0x1e31, 0x1e31 }, { 0x1e33, 0x1e33 }, { 0x1e35, 0x1e35 }, - { 0x1e37, 0x1e37 }, { 0x1e39, 0x1e39 }, { 0x1e3b, 0x1e3b }, - { 0x1e3d, 0x1e3d }, { 0x1e3f, 0x1e3f }, { 0x1e41, 0x1e41 }, - { 0x1e43, 0x1e43 }, { 0x1e45, 0x1e45 }, { 0x1e47, 0x1e47 }, - { 0x1e49, 0x1e49 }, { 0x1e4b, 0x1e4b }, { 0x1e4d, 0x1e4d }, - { 0x1e4f, 0x1e4f }, { 0x1e51, 0x1e51 }, { 0x1e53, 0x1e53 }, - { 0x1e55, 0x1e55 }, { 0x1e57, 0x1e57 }, { 0x1e59, 0x1e59 }, - { 0x1e5b, 0x1e5b }, { 0x1e5d, 0x1e5d }, { 0x1e5f, 0x1e5f }, - { 0x1e61, 0x1e61 }, { 0x1e63, 0x1e63 }, { 0x1e65, 0x1e65 }, - { 0x1e67, 0x1e67 }, { 0x1e69, 0x1e69 }, { 0x1e6b, 0x1e6b }, - { 0x1e6d, 0x1e6d }, { 0x1e6f, 0x1e6f }, { 0x1e71, 0x1e71 }, - { 0x1e73, 0x1e73 }, { 0x1e75, 0x1e75 }, { 0x1e77, 0x1e77 }, - { 0x1e79, 0x1e79 }, { 0x1e7b, 0x1e7b }, { 0x1e7d, 0x1e7d }, - { 0x1e7f, 0x1e7f }, { 0x1e81, 0x1e81 }, { 0x1e83, 0x1e83 }, - { 0x1e85, 0x1e85 }, { 0x1e87, 0x1e87 }, { 0x1e89, 0x1e89 }, - { 0x1e8b, 0x1e8b }, { 0x1e8d, 0x1e8d }, { 0x1e8f, 0x1e8f }, - { 0x1e91, 0x1e91 }, { 0x1e93, 0x1e93 }, { 0x1e95, 0x1e9b }, - { 0x1ea1, 0x1ea1 }, { 0x1ea3, 0x1ea3 }, { 0x1ea5, 0x1ea5 }, - { 0x1ea7, 0x1ea7 }, { 0x1ea9, 0x1ea9 }, { 0x1eab, 0x1eab }, - { 0x1ead, 0x1ead }, { 0x1eaf, 0x1eaf }, { 0x1eb1, 0x1eb1 }, - { 0x1eb3, 0x1eb3 }, { 0x1eb5, 0x1eb5 }, { 0x1eb7, 0x1eb7 }, - { 0x1eb9, 0x1eb9 }, { 0x1ebb, 0x1ebb }, { 0x1ebd, 0x1ebd }, - { 0x1ebf, 0x1ebf }, { 0x1ec1, 0x1ec1 }, { 0x1ec3, 0x1ec3 }, - { 0x1ec5, 0x1ec5 }, { 0x1ec7, 0x1ec7 }, { 0x1ec9, 0x1ec9 }, - { 0x1ecb, 0x1ecb }, { 0x1ecd, 0x1ecd }, { 0x1ecf, 0x1ecf }, - { 0x1ed1, 0x1ed1 }, { 0x1ed3, 0x1ed3 }, { 0x1ed5, 0x1ed5 }, - { 0x1ed7, 0x1ed7 }, { 0x1ed9, 0x1ed9 }, { 0x1edb, 0x1edb }, - { 0x1edd, 0x1edd }, { 0x1edf, 0x1edf }, { 0x1ee1, 0x1ee1 }, - { 0x1ee3, 0x1ee3 }, { 0x1ee5, 0x1ee5 }, { 0x1ee7, 0x1ee7 }, - { 0x1ee9, 0x1ee9 }, { 0x1eeb, 0x1eeb }, { 0x1eed, 0x1eed }, - { 0x1eef, 0x1eef }, { 0x1ef1, 0x1ef1 }, { 0x1ef3, 0x1ef3 }, - { 0x1ef5, 0x1ef5 }, { 0x1ef7, 0x1ef7 }, { 0x1ef9, 0x1ef9 }, - { 0x1f00, 0x1f07 }, { 0x1f10, 0x1f15 }, { 0x1f20, 0x1f27 }, - { 0x1f30, 0x1f37 }, { 0x1f40, 0x1f45 }, { 0x1f50, 0x1f57 }, - { 0x1f60, 0x1f67 }, { 0x1f70, 0x1f7d }, { 0x1f80, 0x1f87 }, - { 0x1f90, 0x1f97 }, { 0x1fa0, 0x1fa7 }, { 0x1fb0, 0x1fb4 }, - { 0x1fb6, 0x1fb7 }, { 0x1fbe, 0x1fbe }, { 0x1fc2, 0x1fc4 }, - { 0x1fc6, 0x1fc7 }, { 0x1fd0, 0x1fd3 }, { 0x1fd6, 0x1fd7 }, - { 0x1fe0, 0x1fe7 }, { 0x1ff2, 0x1ff4 }, { 0x1ff6, 0x1ff7 }, - { 0x2071, 0x2071 }, { 0x207f, 0x207f }, { 0x210a, 0x210a }, - { 0x210e, 0x210f }, { 0x2113, 0x2113 }, { 0x212f, 0x212f }, - { 0x2134, 0x2134 }, { 0x2139, 0x2139 }, { 0x213c, 0x213d }, - { 0x2146, 0x2149 }, { 0x2c30, 0x2c5e }, { 0x2c81, 0x2c81 }, - { 0x2c83, 0x2c83 }, { 0x2c85, 0x2c85 }, { 0x2c87, 0x2c87 }, - { 0x2c89, 0x2c89 }, { 0x2c8b, 0x2c8b }, { 0x2c8d, 0x2c8d }, - { 0x2c8f, 0x2c8f }, { 0x2c91, 0x2c91 }, { 0x2c93, 0x2c93 }, - { 0x2c95, 0x2c95 }, { 0x2c97, 0x2c97 }, { 0x2c99, 0x2c99 }, - { 0x2c9b, 0x2c9b }, { 0x2c9d, 0x2c9d }, { 0x2c9f, 0x2c9f }, - { 0x2ca1, 0x2ca1 }, { 0x2ca3, 0x2ca3 }, { 0x2ca5, 0x2ca5 }, - { 0x2ca7, 0x2ca7 }, { 0x2ca9, 0x2ca9 }, { 0x2cab, 0x2cab }, - { 0x2cad, 0x2cad }, { 0x2caf, 0x2caf }, { 0x2cb1, 0x2cb1 }, - { 0x2cb3, 0x2cb3 }, { 0x2cb5, 0x2cb5 }, { 0x2cb7, 0x2cb7 }, - { 0x2cb9, 0x2cb9 }, { 0x2cbb, 0x2cbb }, { 0x2cbd, 0x2cbd }, - { 0x2cbf, 0x2cbf }, { 0x2cc1, 0x2cc1 }, { 0x2cc3, 0x2cc3 }, - { 0x2cc5, 0x2cc5 }, { 0x2cc7, 0x2cc7 }, { 0x2cc9, 0x2cc9 }, - { 0x2ccb, 0x2ccb }, { 0x2ccd, 0x2ccd }, { 0x2ccf, 0x2ccf }, - { 0x2cd1, 0x2cd1 }, { 0x2cd3, 0x2cd3 }, { 0x2cd5, 0x2cd5 }, - { 0x2cd7, 0x2cd7 }, { 0x2cd9, 0x2cd9 }, { 0x2cdb, 0x2cdb }, - { 0x2cdd, 0x2cdd }, { 0x2cdf, 0x2cdf }, { 0x2ce1, 0x2ce1 }, - { 0x2ce3, 0x2ce4 }, { 0x2d00, 0x2d25 }, { 0xfb00, 0xfb06 }, - { 0xfb13, 0xfb17 }, { 0xff41, 0xff5a }, { 0x10428, 0x1044f }, - { 0x1d41a, 0x1d433 }, { 0x1d44e, 0x1d454 }, { 0x1d456, 0x1d467 }, - { 0x1d482, 0x1d49b }, { 0x1d4b6, 0x1d4b9 }, { 0x1d4bb, 0x1d4bb }, - { 0x1d4bd, 0x1d4c3 }, { 0x1d4c5, 0x1d4cf }, { 0x1d4ea, 0x1d503 }, - { 0x1d51e, 0x1d537 }, { 0x1d552, 0x1d56b }, { 0x1d586, 0x1d59f }, - { 0x1d5ba, 0x1d5d3 }, { 0x1d5ee, 0x1d607 }, { 0x1d622, 0x1d63b }, - { 0x1d656, 0x1d66f }, { 0x1d68a, 0x1d6a5 }, { 0x1d6c2, 0x1d6da }, - { 0x1d6dc, 0x1d6e1 }, { 0x1d6fc, 0x1d714 }, { 0x1d716, 0x1d71b }, - { 0x1d736, 0x1d74e }, { 0x1d750, 0x1d755 }, { 0x1d770, 0x1d788 }, - { 0x1d78a, 0x1d78f }, { 0x1d7aa, 0x1d7c2 }, { 0x1d7c4, 0x1d7c9 } + { 0x0061, 0x007a, }, { 0x00aa, 0x00aa, }, { 0x00b5, 0x00b5, }, + { 0x00ba, 0x00ba, }, { 0x00df, 0x00f6, }, { 0x00f8, 0x00ff, }, + { 0x0101, 0x0101, }, { 0x0103, 0x0103, }, { 0x0105, 0x0105, }, + { 0x0107, 0x0107, }, { 0x0109, 0x0109, }, { 0x010b, 0x010b, }, + { 0x010d, 0x010d, }, { 0x010f, 0x010f, }, { 0x0111, 0x0111, }, + { 0x0113, 0x0113, }, { 0x0115, 0x0115, }, { 0x0117, 0x0117, }, + { 0x0119, 0x0119, }, { 0x011b, 0x011b, }, { 0x011d, 0x011d, }, + { 0x011f, 0x011f, }, { 0x0121, 0x0121, }, { 0x0123, 0x0123, }, + { 0x0125, 0x0125, }, { 0x0127, 0x0127, }, { 0x0129, 0x0129, }, + { 0x012b, 0x012b, }, { 0x012d, 0x012d, }, { 0x012f, 0x012f, }, + { 0x0131, 0x0131, }, { 0x0133, 0x0133, }, { 0x0135, 0x0135, }, + { 0x0137, 0x0138, }, { 0x013a, 0x013a, }, { 0x013c, 0x013c, }, + { 0x013e, 0x013e, }, { 0x0140, 0x0140, }, { 0x0142, 0x0142, }, + { 0x0144, 0x0144, }, { 0x0146, 0x0146, }, { 0x0148, 0x0149, }, + { 0x014b, 0x014b, }, { 0x014d, 0x014d, }, { 0x014f, 0x014f, }, + { 0x0151, 0x0151, }, { 0x0153, 0x0153, }, { 0x0155, 0x0155, }, + { 0x0157, 0x0157, }, { 0x0159, 0x0159, }, { 0x015b, 0x015b, }, + { 0x015d, 0x015d, }, { 0x015f, 0x015f, }, { 0x0161, 0x0161, }, + { 0x0163, 0x0163, }, { 0x0165, 0x0165, }, { 0x0167, 0x0167, }, + { 0x0169, 0x0169, }, { 0x016b, 0x016b, }, { 0x016d, 0x016d, }, + { 0x016f, 0x016f, }, { 0x0171, 0x0171, }, { 0x0173, 0x0173, }, + { 0x0175, 0x0175, }, { 0x0177, 0x0177, }, { 0x017a, 0x017a, }, + { 0x017c, 0x017c, }, { 0x017e, 0x0180, }, { 0x0183, 0x0183, }, + { 0x0185, 0x0185, }, { 0x0188, 0x0188, }, { 0x018c, 0x018d, }, + { 0x0192, 0x0192, }, { 0x0195, 0x0195, }, { 0x0199, 0x019b, }, + { 0x019e, 0x019e, }, { 0x01a1, 0x01a1, }, { 0x01a3, 0x01a3, }, + { 0x01a5, 0x01a5, }, { 0x01a8, 0x01a8, }, { 0x01aa, 0x01ab, }, + { 0x01ad, 0x01ad, }, { 0x01b0, 0x01b0, }, { 0x01b4, 0x01b4, }, + { 0x01b6, 0x01b6, }, { 0x01b9, 0x01ba, }, { 0x01bd, 0x01bf, }, + { 0x01c6, 0x01c6, }, { 0x01c9, 0x01c9, }, { 0x01cc, 0x01cc, }, + { 0x01ce, 0x01ce, }, { 0x01d0, 0x01d0, }, { 0x01d2, 0x01d2, }, + { 0x01d4, 0x01d4, }, { 0x01d6, 0x01d6, }, { 0x01d8, 0x01d8, }, + { 0x01da, 0x01da, }, { 0x01dc, 0x01dd, }, { 0x01df, 0x01df, }, + { 0x01e1, 0x01e1, }, { 0x01e3, 0x01e3, }, { 0x01e5, 0x01e5, }, + { 0x01e7, 0x01e7, }, { 0x01e9, 0x01e9, }, { 0x01eb, 0x01eb, }, + { 0x01ed, 0x01ed, }, { 0x01ef, 0x01f0, }, { 0x01f3, 0x01f3, }, + { 0x01f5, 0x01f5, }, { 0x01f9, 0x01f9, }, { 0x01fb, 0x01fb, }, + { 0x01fd, 0x01fd, }, { 0x01ff, 0x01ff, }, { 0x0201, 0x0201, }, + { 0x0203, 0x0203, }, { 0x0205, 0x0205, }, { 0x0207, 0x0207, }, + { 0x0209, 0x0209, }, { 0x020b, 0x020b, }, { 0x020d, 0x020d, }, + { 0x020f, 0x020f, }, { 0x0211, 0x0211, }, { 0x0213, 0x0213, }, + { 0x0215, 0x0215, }, { 0x0217, 0x0217, }, { 0x0219, 0x0219, }, + { 0x021b, 0x021b, }, { 0x021d, 0x021d, }, { 0x021f, 0x021f, }, + { 0x0221, 0x0221, }, { 0x0223, 0x0223, }, { 0x0225, 0x0225, }, + { 0x0227, 0x0227, }, { 0x0229, 0x0229, }, { 0x022b, 0x022b, }, + { 0x022d, 0x022d, }, { 0x022f, 0x022f, }, { 0x0231, 0x0231, }, + { 0x0233, 0x0239, }, { 0x023c, 0x023c, }, { 0x023f, 0x0240, }, + { 0x0242, 0x0242, }, { 0x0247, 0x0247, }, { 0x0249, 0x0249, }, + { 0x024b, 0x024b, }, { 0x024d, 0x024d, }, { 0x024f, 0x0293, }, + { 0x0295, 0x02b8, }, { 0x02c0, 0x02c1, }, { 0x02e0, 0x02e4, }, + { 0x0345, 0x0345, }, { 0x0371, 0x0371, }, { 0x0373, 0x0373, }, + { 0x0377, 0x0377, }, { 0x037a, 0x037d, }, { 0x0390, 0x0390, }, + { 0x03ac, 0x03ce, }, { 0x03d0, 0x03d1, }, { 0x03d5, 0x03d7, }, + { 0x03d9, 0x03d9, }, { 0x03db, 0x03db, }, { 0x03dd, 0x03dd, }, + { 0x03df, 0x03df, }, { 0x03e1, 0x03e1, }, { 0x03e3, 0x03e3, }, + { 0x03e5, 0x03e5, }, { 0x03e7, 0x03e7, }, { 0x03e9, 0x03e9, }, + { 0x03eb, 0x03eb, }, { 0x03ed, 0x03ed, }, { 0x03ef, 0x03f3, }, + { 0x03f5, 0x03f5, }, { 0x03f8, 0x03f8, }, { 0x03fb, 0x03fc, }, + { 0x0430, 0x045f, }, { 0x0461, 0x0461, }, { 0x0463, 0x0463, }, + { 0x0465, 0x0465, }, { 0x0467, 0x0467, }, { 0x0469, 0x0469, }, + { 0x046b, 0x046b, }, { 0x046d, 0x046d, }, { 0x046f, 0x046f, }, + { 0x0471, 0x0471, }, { 0x0473, 0x0473, }, { 0x0475, 0x0475, }, + { 0x0477, 0x0477, }, { 0x0479, 0x0479, }, { 0x047b, 0x047b, }, + { 0x047d, 0x047d, }, { 0x047f, 0x047f, }, { 0x0481, 0x0481, }, + { 0x048b, 0x048b, }, { 0x048d, 0x048d, }, { 0x048f, 0x048f, }, + { 0x0491, 0x0491, }, { 0x0493, 0x0493, }, { 0x0495, 0x0495, }, + { 0x0497, 0x0497, }, { 0x0499, 0x0499, }, { 0x049b, 0x049b, }, + { 0x049d, 0x049d, }, { 0x049f, 0x049f, }, { 0x04a1, 0x04a1, }, + { 0x04a3, 0x04a3, }, { 0x04a5, 0x04a5, }, { 0x04a7, 0x04a7, }, + { 0x04a9, 0x04a9, }, { 0x04ab, 0x04ab, }, { 0x04ad, 0x04ad, }, + { 0x04af, 0x04af, }, { 0x04b1, 0x04b1, }, { 0x04b3, 0x04b3, }, + { 0x04b5, 0x04b5, }, { 0x04b7, 0x04b7, }, { 0x04b9, 0x04b9, }, + { 0x04bb, 0x04bb, }, { 0x04bd, 0x04bd, }, { 0x04bf, 0x04bf, }, + { 0x04c2, 0x04c2, }, { 0x04c4, 0x04c4, }, { 0x04c6, 0x04c6, }, + { 0x04c8, 0x04c8, }, { 0x04ca, 0x04ca, }, { 0x04cc, 0x04cc, }, + { 0x04ce, 0x04cf, }, { 0x04d1, 0x04d1, }, { 0x04d3, 0x04d3, }, + { 0x04d5, 0x04d5, }, { 0x04d7, 0x04d7, }, { 0x04d9, 0x04d9, }, + { 0x04db, 0x04db, }, { 0x04dd, 0x04dd, }, { 0x04df, 0x04df, }, + { 0x04e1, 0x04e1, }, { 0x04e3, 0x04e3, }, { 0x04e5, 0x04e5, }, + { 0x04e7, 0x04e7, }, { 0x04e9, 0x04e9, }, { 0x04eb, 0x04eb, }, + { 0x04ed, 0x04ed, }, { 0x04ef, 0x04ef, }, { 0x04f1, 0x04f1, }, + { 0x04f3, 0x04f3, }, { 0x04f5, 0x04f5, }, { 0x04f7, 0x04f7, }, + { 0x04f9, 0x04f9, }, { 0x04fb, 0x04fb, }, { 0x04fd, 0x04fd, }, + { 0x04ff, 0x04ff, }, { 0x0501, 0x0501, }, { 0x0503, 0x0503, }, + { 0x0505, 0x0505, }, { 0x0507, 0x0507, }, { 0x0509, 0x0509, }, + { 0x050b, 0x050b, }, { 0x050d, 0x050d, }, { 0x050f, 0x050f, }, + { 0x0511, 0x0511, }, { 0x0513, 0x0513, }, { 0x0515, 0x0515, }, + { 0x0517, 0x0517, }, { 0x0519, 0x0519, }, { 0x051b, 0x051b, }, + { 0x051d, 0x051d, }, { 0x051f, 0x051f, }, { 0x0521, 0x0521, }, + { 0x0523, 0x0523, }, { 0x0525, 0x0525, }, { 0x0527, 0x0527, }, + { 0x0529, 0x0529, }, { 0x052b, 0x052b, }, { 0x052d, 0x052d, }, + { 0x052f, 0x052f, }, { 0x0560, 0x0588, }, { 0x10d0, 0x10fa, }, + { 0x10fc, 0x10ff, }, { 0x13f8, 0x13fd, }, { 0x1c80, 0x1c88, }, + { 0x1d00, 0x1dbf, }, { 0x1e01, 0x1e01, }, { 0x1e03, 0x1e03, }, + { 0x1e05, 0x1e05, }, { 0x1e07, 0x1e07, }, { 0x1e09, 0x1e09, }, + { 0x1e0b, 0x1e0b, }, { 0x1e0d, 0x1e0d, }, { 0x1e0f, 0x1e0f, }, + { 0x1e11, 0x1e11, }, { 0x1e13, 0x1e13, }, { 0x1e15, 0x1e15, }, + { 0x1e17, 0x1e17, }, { 0x1e19, 0x1e19, }, { 0x1e1b, 0x1e1b, }, + { 0x1e1d, 0x1e1d, }, { 0x1e1f, 0x1e1f, }, { 0x1e21, 0x1e21, }, + { 0x1e23, 0x1e23, }, { 0x1e25, 0x1e25, }, { 0x1e27, 0x1e27, }, + { 0x1e29, 0x1e29, }, { 0x1e2b, 0x1e2b, }, { 0x1e2d, 0x1e2d, }, + { 0x1e2f, 0x1e2f, }, { 0x1e31, 0x1e31, }, { 0x1e33, 0x1e33, }, + { 0x1e35, 0x1e35, }, { 0x1e37, 0x1e37, }, { 0x1e39, 0x1e39, }, + { 0x1e3b, 0x1e3b, }, { 0x1e3d, 0x1e3d, }, { 0x1e3f, 0x1e3f, }, + { 0x1e41, 0x1e41, }, { 0x1e43, 0x1e43, }, { 0x1e45, 0x1e45, }, + { 0x1e47, 0x1e47, }, { 0x1e49, 0x1e49, }, { 0x1e4b, 0x1e4b, }, + { 0x1e4d, 0x1e4d, }, { 0x1e4f, 0x1e4f, }, { 0x1e51, 0x1e51, }, + { 0x1e53, 0x1e53, }, { 0x1e55, 0x1e55, }, { 0x1e57, 0x1e57, }, + { 0x1e59, 0x1e59, }, { 0x1e5b, 0x1e5b, }, { 0x1e5d, 0x1e5d, }, + { 0x1e5f, 0x1e5f, }, { 0x1e61, 0x1e61, }, { 0x1e63, 0x1e63, }, + { 0x1e65, 0x1e65, }, { 0x1e67, 0x1e67, }, { 0x1e69, 0x1e69, }, + { 0x1e6b, 0x1e6b, }, { 0x1e6d, 0x1e6d, }, { 0x1e6f, 0x1e6f, }, + { 0x1e71, 0x1e71, }, { 0x1e73, 0x1e73, }, { 0x1e75, 0x1e75, }, + { 0x1e77, 0x1e77, }, { 0x1e79, 0x1e79, }, { 0x1e7b, 0x1e7b, }, + { 0x1e7d, 0x1e7d, }, { 0x1e7f, 0x1e7f, }, { 0x1e81, 0x1e81, }, + { 0x1e83, 0x1e83, }, { 0x1e85, 0x1e85, }, { 0x1e87, 0x1e87, }, + { 0x1e89, 0x1e89, }, { 0x1e8b, 0x1e8b, }, { 0x1e8d, 0x1e8d, }, + { 0x1e8f, 0x1e8f, }, { 0x1e91, 0x1e91, }, { 0x1e93, 0x1e93, }, + { 0x1e95, 0x1e9d, }, { 0x1e9f, 0x1e9f, }, { 0x1ea1, 0x1ea1, }, + { 0x1ea3, 0x1ea3, }, { 0x1ea5, 0x1ea5, }, { 0x1ea7, 0x1ea7, }, + { 0x1ea9, 0x1ea9, }, { 0x1eab, 0x1eab, }, { 0x1ead, 0x1ead, }, + { 0x1eaf, 0x1eaf, }, { 0x1eb1, 0x1eb1, }, { 0x1eb3, 0x1eb3, }, + { 0x1eb5, 0x1eb5, }, { 0x1eb7, 0x1eb7, }, { 0x1eb9, 0x1eb9, }, + { 0x1ebb, 0x1ebb, }, { 0x1ebd, 0x1ebd, }, { 0x1ebf, 0x1ebf, }, + { 0x1ec1, 0x1ec1, }, { 0x1ec3, 0x1ec3, }, { 0x1ec5, 0x1ec5, }, + { 0x1ec7, 0x1ec7, }, { 0x1ec9, 0x1ec9, }, { 0x1ecb, 0x1ecb, }, + { 0x1ecd, 0x1ecd, }, { 0x1ecf, 0x1ecf, }, { 0x1ed1, 0x1ed1, }, + { 0x1ed3, 0x1ed3, }, { 0x1ed5, 0x1ed5, }, { 0x1ed7, 0x1ed7, }, + { 0x1ed9, 0x1ed9, }, { 0x1edb, 0x1edb, }, { 0x1edd, 0x1edd, }, + { 0x1edf, 0x1edf, }, { 0x1ee1, 0x1ee1, }, { 0x1ee3, 0x1ee3, }, + { 0x1ee5, 0x1ee5, }, { 0x1ee7, 0x1ee7, }, { 0x1ee9, 0x1ee9, }, + { 0x1eeb, 0x1eeb, }, { 0x1eed, 0x1eed, }, { 0x1eef, 0x1eef, }, + { 0x1ef1, 0x1ef1, }, { 0x1ef3, 0x1ef3, }, { 0x1ef5, 0x1ef5, }, + { 0x1ef7, 0x1ef7, }, { 0x1ef9, 0x1ef9, }, { 0x1efb, 0x1efb, }, + { 0x1efd, 0x1efd, }, { 0x1eff, 0x1f07, }, { 0x1f10, 0x1f15, }, + { 0x1f20, 0x1f27, }, { 0x1f30, 0x1f37, }, { 0x1f40, 0x1f45, }, + { 0x1f50, 0x1f57, }, { 0x1f60, 0x1f67, }, { 0x1f70, 0x1f7d, }, + { 0x1f80, 0x1f87, }, { 0x1f90, 0x1f97, }, { 0x1fa0, 0x1fa7, }, + { 0x1fb0, 0x1fb4, }, { 0x1fb6, 0x1fb7, }, { 0x1fbe, 0x1fbe, }, + { 0x1fc2, 0x1fc4, }, { 0x1fc6, 0x1fc7, }, { 0x1fd0, 0x1fd3, }, + { 0x1fd6, 0x1fd7, }, { 0x1fe0, 0x1fe7, }, { 0x1ff2, 0x1ff4, }, + { 0x1ff6, 0x1ff7, }, { 0x2071, 0x2071, }, { 0x207f, 0x207f, }, + { 0x2090, 0x209c, }, { 0x210a, 0x210a, }, { 0x210e, 0x210f, }, + { 0x2113, 0x2113, }, { 0x212f, 0x212f, }, { 0x2134, 0x2134, }, + { 0x2139, 0x2139, }, { 0x213c, 0x213d, }, { 0x2146, 0x2149, }, + { 0x214e, 0x214e, }, { 0x2170, 0x217f, }, { 0x2184, 0x2184, }, + { 0x24d0, 0x24e9, }, { 0x2c30, 0x2c5f, }, { 0x2c61, 0x2c61, }, + { 0x2c65, 0x2c66, }, { 0x2c68, 0x2c68, }, { 0x2c6a, 0x2c6a, }, + { 0x2c6c, 0x2c6c, }, { 0x2c71, 0x2c71, }, { 0x2c73, 0x2c74, }, + { 0x2c76, 0x2c7d, }, { 0x2c81, 0x2c81, }, { 0x2c83, 0x2c83, }, + { 0x2c85, 0x2c85, }, { 0x2c87, 0x2c87, }, { 0x2c89, 0x2c89, }, + { 0x2c8b, 0x2c8b, }, { 0x2c8d, 0x2c8d, }, { 0x2c8f, 0x2c8f, }, + { 0x2c91, 0x2c91, }, { 0x2c93, 0x2c93, }, { 0x2c95, 0x2c95, }, + { 0x2c97, 0x2c97, }, { 0x2c99, 0x2c99, }, { 0x2c9b, 0x2c9b, }, + { 0x2c9d, 0x2c9d, }, { 0x2c9f, 0x2c9f, }, { 0x2ca1, 0x2ca1, }, + { 0x2ca3, 0x2ca3, }, { 0x2ca5, 0x2ca5, }, { 0x2ca7, 0x2ca7, }, + { 0x2ca9, 0x2ca9, }, { 0x2cab, 0x2cab, }, { 0x2cad, 0x2cad, }, + { 0x2caf, 0x2caf, }, { 0x2cb1, 0x2cb1, }, { 0x2cb3, 0x2cb3, }, + { 0x2cb5, 0x2cb5, }, { 0x2cb7, 0x2cb7, }, { 0x2cb9, 0x2cb9, }, + { 0x2cbb, 0x2cbb, }, { 0x2cbd, 0x2cbd, }, { 0x2cbf, 0x2cbf, }, + { 0x2cc1, 0x2cc1, }, { 0x2cc3, 0x2cc3, }, { 0x2cc5, 0x2cc5, }, + { 0x2cc7, 0x2cc7, }, { 0x2cc9, 0x2cc9, }, { 0x2ccb, 0x2ccb, }, + { 0x2ccd, 0x2ccd, }, { 0x2ccf, 0x2ccf, }, { 0x2cd1, 0x2cd1, }, + { 0x2cd3, 0x2cd3, }, { 0x2cd5, 0x2cd5, }, { 0x2cd7, 0x2cd7, }, + { 0x2cd9, 0x2cd9, }, { 0x2cdb, 0x2cdb, }, { 0x2cdd, 0x2cdd, }, + { 0x2cdf, 0x2cdf, }, { 0x2ce1, 0x2ce1, }, { 0x2ce3, 0x2ce4, }, + { 0x2cec, 0x2cec, }, { 0x2cee, 0x2cee, }, { 0x2cf3, 0x2cf3, }, + { 0x2d00, 0x2d25, }, { 0x2d27, 0x2d27, }, { 0x2d2d, 0x2d2d, }, + { 0xa641, 0xa641, }, { 0xa643, 0xa643, }, { 0xa645, 0xa645, }, + { 0xa647, 0xa647, }, { 0xa649, 0xa649, }, { 0xa64b, 0xa64b, }, + { 0xa64d, 0xa64d, }, { 0xa64f, 0xa64f, }, { 0xa651, 0xa651, }, + { 0xa653, 0xa653, }, { 0xa655, 0xa655, }, { 0xa657, 0xa657, }, + { 0xa659, 0xa659, }, { 0xa65b, 0xa65b, }, { 0xa65d, 0xa65d, }, + { 0xa65f, 0xa65f, }, { 0xa661, 0xa661, }, { 0xa663, 0xa663, }, + { 0xa665, 0xa665, }, { 0xa667, 0xa667, }, { 0xa669, 0xa669, }, + { 0xa66b, 0xa66b, }, { 0xa66d, 0xa66d, }, { 0xa681, 0xa681, }, + { 0xa683, 0xa683, }, { 0xa685, 0xa685, }, { 0xa687, 0xa687, }, + { 0xa689, 0xa689, }, { 0xa68b, 0xa68b, }, { 0xa68d, 0xa68d, }, + { 0xa68f, 0xa68f, }, { 0xa691, 0xa691, }, { 0xa693, 0xa693, }, + { 0xa695, 0xa695, }, { 0xa697, 0xa697, }, { 0xa699, 0xa699, }, + { 0xa69b, 0xa69d, }, { 0xa723, 0xa723, }, { 0xa725, 0xa725, }, + { 0xa727, 0xa727, }, { 0xa729, 0xa729, }, { 0xa72b, 0xa72b, }, + { 0xa72d, 0xa72d, }, { 0xa72f, 0xa731, }, { 0xa733, 0xa733, }, + { 0xa735, 0xa735, }, { 0xa737, 0xa737, }, { 0xa739, 0xa739, }, + { 0xa73b, 0xa73b, }, { 0xa73d, 0xa73d, }, { 0xa73f, 0xa73f, }, + { 0xa741, 0xa741, }, { 0xa743, 0xa743, }, { 0xa745, 0xa745, }, + { 0xa747, 0xa747, }, { 0xa749, 0xa749, }, { 0xa74b, 0xa74b, }, + { 0xa74d, 0xa74d, }, { 0xa74f, 0xa74f, }, { 0xa751, 0xa751, }, + { 0xa753, 0xa753, }, { 0xa755, 0xa755, }, { 0xa757, 0xa757, }, + { 0xa759, 0xa759, }, { 0xa75b, 0xa75b, }, { 0xa75d, 0xa75d, }, + { 0xa75f, 0xa75f, }, { 0xa761, 0xa761, }, { 0xa763, 0xa763, }, + { 0xa765, 0xa765, }, { 0xa767, 0xa767, }, { 0xa769, 0xa769, }, + { 0xa76b, 0xa76b, }, { 0xa76d, 0xa76d, }, { 0xa76f, 0xa778, }, + { 0xa77a, 0xa77a, }, { 0xa77c, 0xa77c, }, { 0xa77f, 0xa77f, }, + { 0xa781, 0xa781, }, { 0xa783, 0xa783, }, { 0xa785, 0xa785, }, + { 0xa787, 0xa787, }, { 0xa78c, 0xa78c, }, { 0xa78e, 0xa78e, }, + { 0xa791, 0xa791, }, { 0xa793, 0xa795, }, { 0xa797, 0xa797, }, + { 0xa799, 0xa799, }, { 0xa79b, 0xa79b, }, { 0xa79d, 0xa79d, }, + { 0xa79f, 0xa79f, }, { 0xa7a1, 0xa7a1, }, { 0xa7a3, 0xa7a3, }, + { 0xa7a5, 0xa7a5, }, { 0xa7a7, 0xa7a7, }, { 0xa7a9, 0xa7a9, }, + { 0xa7af, 0xa7af, }, { 0xa7b5, 0xa7b5, }, { 0xa7b7, 0xa7b7, }, + { 0xa7b9, 0xa7b9, }, { 0xa7bb, 0xa7bb, }, { 0xa7bd, 0xa7bd, }, + { 0xa7bf, 0xa7bf, }, { 0xa7c1, 0xa7c1, }, { 0xa7c3, 0xa7c3, }, + { 0xa7c8, 0xa7c8, }, { 0xa7ca, 0xa7ca, }, { 0xa7d1, 0xa7d1, }, + { 0xa7d3, 0xa7d3, }, { 0xa7d5, 0xa7d5, }, { 0xa7d7, 0xa7d7, }, + { 0xa7d9, 0xa7d9, }, { 0xa7f2, 0xa7f4, }, { 0xa7f6, 0xa7f6, }, + { 0xa7f8, 0xa7fa, }, { 0xab30, 0xab5a, }, { 0xab5c, 0xab69, }, + { 0xab70, 0xabbf, }, { 0xfb00, 0xfb06, }, { 0xfb13, 0xfb17, }, + { 0xff41, 0xff5a, }, { 0x10428, 0x1044f, }, { 0x104d8, 0x104fb, }, + { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, }, + { 0x105bb, 0x105bc, }, { 0x10780, 0x10780, }, { 0x10783, 0x10785, }, + { 0x10787, 0x107b0, }, { 0x107b2, 0x107ba, }, { 0x10cc0, 0x10cf2, }, + { 0x118c0, 0x118df, }, { 0x16e60, 0x16e7f, }, { 0x1d41a, 0x1d433, }, + { 0x1d44e, 0x1d454, }, { 0x1d456, 0x1d467, }, { 0x1d482, 0x1d49b, }, + { 0x1d4b6, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, }, + { 0x1d4c5, 0x1d4cf, }, { 0x1d4ea, 0x1d503, }, { 0x1d51e, 0x1d537, }, + { 0x1d552, 0x1d56b, }, { 0x1d586, 0x1d59f, }, { 0x1d5ba, 0x1d5d3, }, + { 0x1d5ee, 0x1d607, }, { 0x1d622, 0x1d63b, }, { 0x1d656, 0x1d66f, }, + { 0x1d68a, 0x1d6a5, }, { 0x1d6c2, 0x1d6da, }, { 0x1d6dc, 0x1d6e1, }, + { 0x1d6fc, 0x1d714, }, { 0x1d716, 0x1d71b, }, { 0x1d736, 0x1d74e, }, + { 0x1d750, 0x1d755, }, { 0x1d770, 0x1d788, }, { 0x1d78a, 0x1d78f, }, + { 0x1d7aa, 0x1d7c2, }, { 0x1d7c4, 0x1d7c9, }, { 0x1d7cb, 0x1d7cb, }, + { 0x1df00, 0x1df09, }, { 0x1df0b, 0x1df1e, }, { 0x1df25, 0x1df2a, }, + { 0x1e030, 0x1e06d, }, { 0x1e922, 0x1e943, }, }}; return utils::table_lookup(lower_table, c); diff --git a/include/peelo/unicode/ctype/isprint.hpp b/include/peelo/unicode/ctype/isprint.hpp index a77a9ab..7733fa8 100644 --- a/include/peelo/unicode/ctype/isprint.hpp +++ b/include/peelo/unicode/ctype/isprint.hpp @@ -36,149 +36,245 @@ namespace peelo::unicode::ctype inline bool isprint(char32_t c) { - static const std::array print_table = + static const std::array print_table = {{ - { 0x0009, 0x000d }, { 0x0020, 0x007e }, { 0x0085, 0x0085 }, - { 0x00a0, 0x0241 }, { 0x0250, 0x036f }, { 0x0374, 0x0375 }, - { 0x037a, 0x037a }, { 0x037e, 0x037e }, { 0x0384, 0x038a }, - { 0x038c, 0x038c }, { 0x038e, 0x03a1 }, { 0x03a3, 0x03ce }, - { 0x03d0, 0x0486 }, { 0x0488, 0x04ce }, { 0x04d0, 0x04f9 }, - { 0x0500, 0x050f }, { 0x0531, 0x0556 }, { 0x0559, 0x055f }, - { 0x0561, 0x0587 }, { 0x0589, 0x058a }, { 0x0591, 0x05b9 }, - { 0x05bb, 0x05c7 }, { 0x05d0, 0x05ea }, { 0x05f0, 0x05f4 }, - { 0x0600, 0x0603 }, { 0x060b, 0x0615 }, { 0x061b, 0x061b }, - { 0x061e, 0x061f }, { 0x0621, 0x063a }, { 0x0640, 0x065e }, - { 0x0660, 0x070d }, { 0x070f, 0x074a }, { 0x074d, 0x076d }, - { 0x0780, 0x07b1 }, { 0x0901, 0x0939 }, { 0x093c, 0x094d }, - { 0x0950, 0x0954 }, { 0x0958, 0x0970 }, { 0x097d, 0x097d }, - { 0x0981, 0x0983 }, { 0x0985, 0x098c }, { 0x098f, 0x0990 }, - { 0x0993, 0x09a8 }, { 0x09aa, 0x09b0 }, { 0x09b2, 0x09b2 }, - { 0x09b6, 0x09b9 }, { 0x09bc, 0x09c4 }, { 0x09c7, 0x09c8 }, - { 0x09cb, 0x09ce }, { 0x09d7, 0x09d7 }, { 0x09dc, 0x09dd }, - { 0x09df, 0x09e3 }, { 0x09e6, 0x09fa }, { 0x0a01, 0x0a03 }, - { 0x0a05, 0x0a0a }, { 0x0a0f, 0x0a10 }, { 0x0a13, 0x0a28 }, - { 0x0a2a, 0x0a30 }, { 0x0a32, 0x0a33 }, { 0x0a35, 0x0a36 }, - { 0x0a38, 0x0a39 }, { 0x0a3c, 0x0a3c }, { 0x0a3e, 0x0a42 }, - { 0x0a47, 0x0a48 }, { 0x0a4b, 0x0a4d }, { 0x0a59, 0x0a5c }, - { 0x0a5e, 0x0a5e }, { 0x0a66, 0x0a74 }, { 0x0a81, 0x0a83 }, - { 0x0a85, 0x0a8d }, { 0x0a8f, 0x0a91 }, { 0x0a93, 0x0aa8 }, - { 0x0aaa, 0x0ab0 }, { 0x0ab2, 0x0ab3 }, { 0x0ab5, 0x0ab9 }, - { 0x0abc, 0x0ac5 }, { 0x0ac7, 0x0ac9 }, { 0x0acb, 0x0acd }, - { 0x0ad0, 0x0ad0 }, { 0x0ae0, 0x0ae3 }, { 0x0ae6, 0x0aef }, - { 0x0af1, 0x0af1 }, { 0x0b01, 0x0b03 }, { 0x0b05, 0x0b0c }, - { 0x0b0f, 0x0b10 }, { 0x0b13, 0x0b28 }, { 0x0b2a, 0x0b30 }, - { 0x0b32, 0x0b33 }, { 0x0b35, 0x0b39 }, { 0x0b3c, 0x0b43 }, - { 0x0b47, 0x0b48 }, { 0x0b4b, 0x0b4d }, { 0x0b56, 0x0b57 }, - { 0x0b5c, 0x0b5d }, { 0x0b5f, 0x0b61 }, { 0x0b66, 0x0b71 }, - { 0x0b82, 0x0b83 }, { 0x0b85, 0x0b8a }, { 0x0b8e, 0x0b90 }, - { 0x0b92, 0x0b95 }, { 0x0b99, 0x0b9a }, { 0x0b9c, 0x0b9c }, - { 0x0b9e, 0x0b9f }, { 0x0ba3, 0x0ba4 }, { 0x0ba8, 0x0baa }, - { 0x0bae, 0x0bb9 }, { 0x0bbe, 0x0bc2 }, { 0x0bc6, 0x0bc8 }, - { 0x0bca, 0x0bcd }, { 0x0bd7, 0x0bd7 }, { 0x0be6, 0x0bfa }, - { 0x0c01, 0x0c03 }, { 0x0c05, 0x0c0c }, { 0x0c0e, 0x0c10 }, - { 0x0c12, 0x0c28 }, { 0x0c2a, 0x0c33 }, { 0x0c35, 0x0c39 }, - { 0x0c3e, 0x0c44 }, { 0x0c46, 0x0c48 }, { 0x0c4a, 0x0c4d }, - { 0x0c55, 0x0c56 }, { 0x0c60, 0x0c61 }, { 0x0c66, 0x0c6f }, - { 0x0c82, 0x0c83 }, { 0x0c85, 0x0c8c }, { 0x0c8e, 0x0c90 }, - { 0x0c92, 0x0ca8 }, { 0x0caa, 0x0cb3 }, { 0x0cb5, 0x0cb9 }, - { 0x0cbc, 0x0cc4 }, { 0x0cc6, 0x0cc8 }, { 0x0cca, 0x0ccd }, - { 0x0cd5, 0x0cd6 }, { 0x0cde, 0x0cde }, { 0x0ce0, 0x0ce1 }, - { 0x0ce6, 0x0cef }, { 0x0d02, 0x0d03 }, { 0x0d05, 0x0d0c }, - { 0x0d0e, 0x0d10 }, { 0x0d12, 0x0d28 }, { 0x0d2a, 0x0d39 }, - { 0x0d3e, 0x0d43 }, { 0x0d46, 0x0d48 }, { 0x0d4a, 0x0d4d }, - { 0x0d57, 0x0d57 }, { 0x0d60, 0x0d61 }, { 0x0d66, 0x0d6f }, - { 0x0d82, 0x0d83 }, { 0x0d85, 0x0d96 }, { 0x0d9a, 0x0db1 }, - { 0x0db3, 0x0dbb }, { 0x0dbd, 0x0dbd }, { 0x0dc0, 0x0dc6 }, - { 0x0dca, 0x0dca }, { 0x0dcf, 0x0dd4 }, { 0x0dd6, 0x0dd6 }, - { 0x0dd8, 0x0ddf }, { 0x0df2, 0x0df4 }, { 0x0e01, 0x0e3a }, - { 0x0e3f, 0x0e5b }, { 0x0e81, 0x0e82 }, { 0x0e84, 0x0e84 }, - { 0x0e87, 0x0e88 }, { 0x0e8a, 0x0e8a }, { 0x0e8d, 0x0e8d }, - { 0x0e94, 0x0e97 }, { 0x0e99, 0x0e9f }, { 0x0ea1, 0x0ea3 }, - { 0x0ea5, 0x0ea5 }, { 0x0ea7, 0x0ea7 }, { 0x0eaa, 0x0eab }, - { 0x0ead, 0x0eb9 }, { 0x0ebb, 0x0ebd }, { 0x0ec0, 0x0ec4 }, - { 0x0ec6, 0x0ec6 }, { 0x0ec8, 0x0ecd }, { 0x0ed0, 0x0ed9 }, - { 0x0edc, 0x0edd }, { 0x0f00, 0x0f47 }, { 0x0f49, 0x0f6a }, - { 0x0f71, 0x0f8b }, { 0x0f90, 0x0f97 }, { 0x0f99, 0x0fbc }, - { 0x0fbe, 0x0fcc }, { 0x0fcf, 0x0fd1 }, { 0x1000, 0x1021 }, - { 0x1023, 0x1027 }, { 0x1029, 0x102a }, { 0x102c, 0x1032 }, - { 0x1036, 0x1039 }, { 0x1040, 0x1059 }, { 0x10a0, 0x10c5 }, - { 0x10d0, 0x10fc }, { 0x1100, 0x1159 }, { 0x115f, 0x11a2 }, - { 0x11a8, 0x11f9 }, { 0x1200, 0x1248 }, { 0x124a, 0x124d }, - { 0x1250, 0x1256 }, { 0x1258, 0x1258 }, { 0x125a, 0x125d }, - { 0x1260, 0x1288 }, { 0x128a, 0x128d }, { 0x1290, 0x12b0 }, - { 0x12b2, 0x12b5 }, { 0x12b8, 0x12be }, { 0x12c0, 0x12c0 }, - { 0x12c2, 0x12c5 }, { 0x12c8, 0x12d6 }, { 0x12d8, 0x1310 }, - { 0x1312, 0x1315 }, { 0x1318, 0x135a }, { 0x135f, 0x137c }, - { 0x1380, 0x1399 }, { 0x13a0, 0x13f4 }, { 0x1401, 0x1676 }, - { 0x1680, 0x169c }, { 0x16a0, 0x16f0 }, { 0x1700, 0x170c }, - { 0x170e, 0x1714 }, { 0x1720, 0x1736 }, { 0x1740, 0x1753 }, - { 0x1760, 0x176c }, { 0x176e, 0x1770 }, { 0x1772, 0x1773 }, - { 0x1780, 0x17dd }, { 0x17e0, 0x17e9 }, { 0x17f0, 0x17f9 }, - { 0x1800, 0x180e }, { 0x1810, 0x1819 }, { 0x1820, 0x1877 }, - { 0x1880, 0x18a9 }, { 0x1900, 0x191c }, { 0x1920, 0x192b }, - { 0x1930, 0x193b }, { 0x1940, 0x1940 }, { 0x1944, 0x196d }, - { 0x1970, 0x1974 }, { 0x1980, 0x19a9 }, { 0x19b0, 0x19c9 }, - { 0x19d0, 0x19d9 }, { 0x19de, 0x1a1b }, { 0x1a1e, 0x1a1f }, - { 0x1d00, 0x1dc3 }, { 0x1e00, 0x1e9b }, { 0x1ea0, 0x1ef9 }, - { 0x1f00, 0x1f15 }, { 0x1f18, 0x1f1d }, { 0x1f20, 0x1f45 }, - { 0x1f48, 0x1f4d }, { 0x1f50, 0x1f57 }, { 0x1f59, 0x1f59 }, - { 0x1f5b, 0x1f5b }, { 0x1f5d, 0x1f5d }, { 0x1f5f, 0x1f7d }, - { 0x1f80, 0x1fb4 }, { 0x1fb6, 0x1fc4 }, { 0x1fc6, 0x1fd3 }, - { 0x1fd6, 0x1fdb }, { 0x1fdd, 0x1fef }, { 0x1ff2, 0x1ff4 }, - { 0x1ff6, 0x1ffe }, { 0x2000, 0x2063 }, { 0x206a, 0x2071 }, - { 0x2074, 0x208e }, { 0x2090, 0x2094 }, { 0x20a0, 0x20b5 }, - { 0x20d0, 0x20eb }, { 0x2100, 0x214c }, { 0x2153, 0x2183 }, - { 0x2190, 0x23db }, { 0x2400, 0x2426 }, { 0x2440, 0x244a }, - { 0x2460, 0x269c }, { 0x26a0, 0x26b1 }, { 0x2701, 0x2704 }, - { 0x2706, 0x2709 }, { 0x270c, 0x2727 }, { 0x2729, 0x274b }, - { 0x274d, 0x274d }, { 0x274f, 0x2752 }, { 0x2756, 0x2756 }, - { 0x2758, 0x275e }, { 0x2761, 0x2794 }, { 0x2798, 0x27af }, - { 0x27b1, 0x27be }, { 0x27c0, 0x27c6 }, { 0x27d0, 0x27eb }, - { 0x27f0, 0x2b13 }, { 0x2c00, 0x2c2e }, { 0x2c30, 0x2c5e }, - { 0x2c80, 0x2cea }, { 0x2cf9, 0x2d25 }, { 0x2d30, 0x2d65 }, - { 0x2d6f, 0x2d6f }, { 0x2d80, 0x2d96 }, { 0x2da0, 0x2da6 }, - { 0x2da8, 0x2dae }, { 0x2db0, 0x2db6 }, { 0x2db8, 0x2dbe }, - { 0x2dc0, 0x2dc6 }, { 0x2dc8, 0x2dce }, { 0x2dd0, 0x2dd6 }, - { 0x2dd8, 0x2dde }, { 0x2e00, 0x2e17 }, { 0x2e1c, 0x2e1d }, - { 0x2e80, 0x2e99 }, { 0x2e9b, 0x2ef3 }, { 0x2f00, 0x2fd5 }, - { 0x2ff0, 0x2ffb }, { 0x3000, 0x303f }, { 0x3041, 0x3096 }, - { 0x3099, 0x30ff }, { 0x3105, 0x312c }, { 0x3131, 0x318e }, - { 0x3190, 0x31b7 }, { 0x31c0, 0x31cf }, { 0x31f0, 0x321e }, - { 0x3220, 0x3243 }, { 0x3250, 0x32fe }, { 0x3300, 0x4db5 }, - { 0x4dc0, 0x9fbb }, { 0xa000, 0xa48c }, { 0xa490, 0xa4c6 }, - { 0xa700, 0xa716 }, { 0xa800, 0xa82b }, { 0xac00, 0xd7a3 }, - { 0xe000, 0xfa2d }, { 0xfa30, 0xfa6a }, { 0xfa70, 0xfad9 }, - { 0xfb00, 0xfb06 }, { 0xfb13, 0xfb17 }, { 0xfb1d, 0xfb36 }, - { 0xfb38, 0xfb3c }, { 0xfb3e, 0xfb3e }, { 0xfb40, 0xfb41 }, - { 0xfb43, 0xfb44 }, { 0xfb46, 0xfbb1 }, { 0xfbd3, 0xfd3f }, - { 0xfd50, 0xfd8f }, { 0xfd92, 0xfdc7 }, { 0xfdf0, 0xfdfd }, - { 0xfe00, 0xfe19 }, { 0xfe20, 0xfe23 }, { 0xfe30, 0xfe52 }, - { 0xfe54, 0xfe66 }, { 0xfe68, 0xfe6b }, { 0xfe70, 0xfe74 }, - { 0xfe76, 0xfefc }, { 0xfeff, 0xfeff }, { 0xff01, 0xffbe }, - { 0xffc2, 0xffc7 }, { 0xffca, 0xffcf }, { 0xffd2, 0xffd7 }, - { 0xffda, 0xffdc }, { 0xffe0, 0xffe6 }, { 0xffe8, 0xffee }, - { 0xfff9, 0xfffd }, { 0x10000, 0x1000b }, { 0x1000d, 0x10026 }, - { 0x10028, 0x1003a }, { 0x1003c, 0x1003d }, { 0x1003f, 0x1004d }, - { 0x10050, 0x1005d }, { 0x10080, 0x100fa }, { 0x10100, 0x10102 }, - { 0x10107, 0x10133 }, { 0x10137, 0x1018a }, { 0x10300, 0x1031e }, - { 0x10320, 0x10323 }, { 0x10330, 0x1034a }, { 0x10380, 0x1039d }, - { 0x1039f, 0x103c3 }, { 0x103c8, 0x103d5 }, { 0x10400, 0x1049d }, - { 0x104a0, 0x104a9 }, { 0x10800, 0x10805 }, { 0x10808, 0x10808 }, - { 0x1080a, 0x10835 }, { 0x10837, 0x10838 }, { 0x1083c, 0x1083c }, - { 0x1083f, 0x1083f }, { 0x10a00, 0x10a03 }, { 0x10a05, 0x10a06 }, - { 0x10a0c, 0x10a13 }, { 0x10a15, 0x10a17 }, { 0x10a19, 0x10a33 }, - { 0x10a38, 0x10a3a }, { 0x10a3f, 0x10a47 }, { 0x10a50, 0x10a58 }, - { 0x1d000, 0x1d0f5 }, { 0x1d100, 0x1d126 }, { 0x1d12a, 0x1d1dd }, - { 0x1d200, 0x1d245 }, { 0x1d300, 0x1d356 }, { 0x1d400, 0x1d454 }, - { 0x1d456, 0x1d49c }, { 0x1d49e, 0x1d49f }, { 0x1d4a2, 0x1d4a2 }, - { 0x1d4a5, 0x1d4a6 }, { 0x1d4a9, 0x1d4ac }, { 0x1d4ae, 0x1d4b9 }, - { 0x1d4bb, 0x1d4bb }, { 0x1d4bd, 0x1d4c3 }, { 0x1d4c5, 0x1d505 }, - { 0x1d507, 0x1d50a }, { 0x1d50d, 0x1d514 }, { 0x1d516, 0x1d51c }, - { 0x1d51e, 0x1d539 }, { 0x1d53b, 0x1d53e }, { 0x1d540, 0x1d544 }, - { 0x1d546, 0x1d546 }, { 0x1d54a, 0x1d550 }, { 0x1d552, 0x1d6a5 }, - { 0x1d6a8, 0x1d7c9 }, { 0x1d7ce, 0x1d7ff }, { 0x20000, 0x2a6d6 }, - { 0x2f800, 0x2fa1d }, { 0xe0001, 0xe0001 }, { 0xe0020, 0xe007f }, - { 0xe0100, 0xe01ef }, { 0xf0000, 0xffffd }, { 0x100000, 0x10fffd }, + { 0x0020, 0x007e, }, { 0x00a0, 0x0377, }, { 0x037a, 0x037f, }, + { 0x0384, 0x038a, }, { 0x038c, 0x038c, }, { 0x038e, 0x03a1, }, + { 0x03a3, 0x052f, }, { 0x0531, 0x0556, }, { 0x0559, 0x058a, }, + { 0x058d, 0x058f, }, { 0x0591, 0x05c7, }, { 0x05d0, 0x05ea, }, + { 0x05ef, 0x05f4, }, { 0x0600, 0x070d, }, { 0x070f, 0x074a, }, + { 0x074d, 0x07b1, }, { 0x07c0, 0x07fa, }, { 0x07fd, 0x082d, }, + { 0x0830, 0x083e, }, { 0x0840, 0x085b, }, { 0x085e, 0x085e, }, + { 0x0860, 0x086a, }, { 0x0870, 0x088e, }, { 0x0890, 0x0891, }, + { 0x0898, 0x0983, }, { 0x0985, 0x098c, }, { 0x098f, 0x0990, }, + { 0x0993, 0x09a8, }, { 0x09aa, 0x09b0, }, { 0x09b2, 0x09b2, }, + { 0x09b6, 0x09b9, }, { 0x09bc, 0x09c4, }, { 0x09c7, 0x09c8, }, + { 0x09cb, 0x09ce, }, { 0x09d7, 0x09d7, }, { 0x09dc, 0x09dd, }, + { 0x09df, 0x09e3, }, { 0x09e6, 0x09fe, }, { 0x0a01, 0x0a03, }, + { 0x0a05, 0x0a0a, }, { 0x0a0f, 0x0a10, }, { 0x0a13, 0x0a28, }, + { 0x0a2a, 0x0a30, }, { 0x0a32, 0x0a33, }, { 0x0a35, 0x0a36, }, + { 0x0a38, 0x0a39, }, { 0x0a3c, 0x0a3c, }, { 0x0a3e, 0x0a42, }, + { 0x0a47, 0x0a48, }, { 0x0a4b, 0x0a4d, }, { 0x0a51, 0x0a51, }, + { 0x0a59, 0x0a5c, }, { 0x0a5e, 0x0a5e, }, { 0x0a66, 0x0a76, }, + { 0x0a81, 0x0a83, }, { 0x0a85, 0x0a8d, }, { 0x0a8f, 0x0a91, }, + { 0x0a93, 0x0aa8, }, { 0x0aaa, 0x0ab0, }, { 0x0ab2, 0x0ab3, }, + { 0x0ab5, 0x0ab9, }, { 0x0abc, 0x0ac5, }, { 0x0ac7, 0x0ac9, }, + { 0x0acb, 0x0acd, }, { 0x0ad0, 0x0ad0, }, { 0x0ae0, 0x0ae3, }, + { 0x0ae6, 0x0af1, }, { 0x0af9, 0x0aff, }, { 0x0b01, 0x0b03, }, + { 0x0b05, 0x0b0c, }, { 0x0b0f, 0x0b10, }, { 0x0b13, 0x0b28, }, + { 0x0b2a, 0x0b30, }, { 0x0b32, 0x0b33, }, { 0x0b35, 0x0b39, }, + { 0x0b3c, 0x0b44, }, { 0x0b47, 0x0b48, }, { 0x0b4b, 0x0b4d, }, + { 0x0b55, 0x0b57, }, { 0x0b5c, 0x0b5d, }, { 0x0b5f, 0x0b63, }, + { 0x0b66, 0x0b77, }, { 0x0b82, 0x0b83, }, { 0x0b85, 0x0b8a, }, + { 0x0b8e, 0x0b90, }, { 0x0b92, 0x0b95, }, { 0x0b99, 0x0b9a, }, + { 0x0b9c, 0x0b9c, }, { 0x0b9e, 0x0b9f, }, { 0x0ba3, 0x0ba4, }, + { 0x0ba8, 0x0baa, }, { 0x0bae, 0x0bb9, }, { 0x0bbe, 0x0bc2, }, + { 0x0bc6, 0x0bc8, }, { 0x0bca, 0x0bcd, }, { 0x0bd0, 0x0bd0, }, + { 0x0bd7, 0x0bd7, }, { 0x0be6, 0x0bfa, }, { 0x0c00, 0x0c0c, }, + { 0x0c0e, 0x0c10, }, { 0x0c12, 0x0c28, }, { 0x0c2a, 0x0c39, }, + { 0x0c3c, 0x0c44, }, { 0x0c46, 0x0c48, }, { 0x0c4a, 0x0c4d, }, + { 0x0c55, 0x0c56, }, { 0x0c58, 0x0c5a, }, { 0x0c5d, 0x0c5d, }, + { 0x0c60, 0x0c63, }, { 0x0c66, 0x0c6f, }, { 0x0c77, 0x0c8c, }, + { 0x0c8e, 0x0c90, }, { 0x0c92, 0x0ca8, }, { 0x0caa, 0x0cb3, }, + { 0x0cb5, 0x0cb9, }, { 0x0cbc, 0x0cc4, }, { 0x0cc6, 0x0cc8, }, + { 0x0cca, 0x0ccd, }, { 0x0cd5, 0x0cd6, }, { 0x0cdd, 0x0cde, }, + { 0x0ce0, 0x0ce3, }, { 0x0ce6, 0x0cef, }, { 0x0cf1, 0x0cf3, }, + { 0x0d00, 0x0d0c, }, { 0x0d0e, 0x0d10, }, { 0x0d12, 0x0d44, }, + { 0x0d46, 0x0d48, }, { 0x0d4a, 0x0d4f, }, { 0x0d54, 0x0d63, }, + { 0x0d66, 0x0d7f, }, { 0x0d81, 0x0d83, }, { 0x0d85, 0x0d96, }, + { 0x0d9a, 0x0db1, }, { 0x0db3, 0x0dbb, }, { 0x0dbd, 0x0dbd, }, + { 0x0dc0, 0x0dc6, }, { 0x0dca, 0x0dca, }, { 0x0dcf, 0x0dd4, }, + { 0x0dd6, 0x0dd6, }, { 0x0dd8, 0x0ddf, }, { 0x0de6, 0x0def, }, + { 0x0df2, 0x0df4, }, { 0x0e01, 0x0e3a, }, { 0x0e3f, 0x0e5b, }, + { 0x0e81, 0x0e82, }, { 0x0e84, 0x0e84, }, { 0x0e86, 0x0e8a, }, + { 0x0e8c, 0x0ea3, }, { 0x0ea5, 0x0ea5, }, { 0x0ea7, 0x0ebd, }, + { 0x0ec0, 0x0ec4, }, { 0x0ec6, 0x0ec6, }, { 0x0ec8, 0x0ece, }, + { 0x0ed0, 0x0ed9, }, { 0x0edc, 0x0edf, }, { 0x0f00, 0x0f47, }, + { 0x0f49, 0x0f6c, }, { 0x0f71, 0x0f97, }, { 0x0f99, 0x0fbc, }, + { 0x0fbe, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x1000, 0x10c5, }, + { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x10d0, 0x1248, }, + { 0x124a, 0x124d, }, { 0x1250, 0x1256, }, { 0x1258, 0x1258, }, + { 0x125a, 0x125d, }, { 0x1260, 0x1288, }, { 0x128a, 0x128d, }, + { 0x1290, 0x12b0, }, { 0x12b2, 0x12b5, }, { 0x12b8, 0x12be, }, + { 0x12c0, 0x12c0, }, { 0x12c2, 0x12c5, }, { 0x12c8, 0x12d6, }, + { 0x12d8, 0x1310, }, { 0x1312, 0x1315, }, { 0x1318, 0x135a, }, + { 0x135d, 0x137c, }, { 0x1380, 0x1399, }, { 0x13a0, 0x13f5, }, + { 0x13f8, 0x13fd, }, { 0x1400, 0x169c, }, { 0x16a0, 0x16f8, }, + { 0x1700, 0x1715, }, { 0x171f, 0x1736, }, { 0x1740, 0x1753, }, + { 0x1760, 0x176c, }, { 0x176e, 0x1770, }, { 0x1772, 0x1773, }, + { 0x1780, 0x17dd, }, { 0x17e0, 0x17e9, }, { 0x17f0, 0x17f9, }, + { 0x1800, 0x1819, }, { 0x1820, 0x1878, }, { 0x1880, 0x18aa, }, + { 0x18b0, 0x18f5, }, { 0x1900, 0x191e, }, { 0x1920, 0x192b, }, + { 0x1930, 0x193b, }, { 0x1940, 0x1940, }, { 0x1944, 0x196d, }, + { 0x1970, 0x1974, }, { 0x1980, 0x19ab, }, { 0x19b0, 0x19c9, }, + { 0x19d0, 0x19da, }, { 0x19de, 0x1a1b, }, { 0x1a1e, 0x1a5e, }, + { 0x1a60, 0x1a7c, }, { 0x1a7f, 0x1a89, }, { 0x1a90, 0x1a99, }, + { 0x1aa0, 0x1aad, }, { 0x1ab0, 0x1ace, }, { 0x1b00, 0x1b4c, }, + { 0x1b50, 0x1b7e, }, { 0x1b80, 0x1bf3, }, { 0x1bfc, 0x1c37, }, + { 0x1c3b, 0x1c49, }, { 0x1c4d, 0x1c88, }, { 0x1c90, 0x1cba, }, + { 0x1cbd, 0x1cc7, }, { 0x1cd0, 0x1cfa, }, { 0x1d00, 0x1f15, }, + { 0x1f18, 0x1f1d, }, { 0x1f20, 0x1f45, }, { 0x1f48, 0x1f4d, }, + { 0x1f50, 0x1f57, }, { 0x1f59, 0x1f59, }, { 0x1f5b, 0x1f5b, }, + { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f7d, }, { 0x1f80, 0x1fb4, }, + { 0x1fb6, 0x1fc4, }, { 0x1fc6, 0x1fd3, }, { 0x1fd6, 0x1fdb, }, + { 0x1fdd, 0x1fef, }, { 0x1ff2, 0x1ff4, }, { 0x1ff6, 0x1ffe, }, + { 0x2000, 0x2027, }, { 0x202a, 0x2064, }, { 0x2066, 0x2071, }, + { 0x2074, 0x208e, }, { 0x2090, 0x209c, }, { 0x20a0, 0x20c0, }, + { 0x20d0, 0x20f0, }, { 0x2100, 0x218b, }, { 0x2190, 0x2426, }, + { 0x2440, 0x244a, }, { 0x2460, 0x2b73, }, { 0x2b76, 0x2b95, }, + { 0x2b97, 0x2cf3, }, { 0x2cf9, 0x2d25, }, { 0x2d27, 0x2d27, }, + { 0x2d2d, 0x2d2d, }, { 0x2d30, 0x2d67, }, { 0x2d6f, 0x2d70, }, + { 0x2d7f, 0x2d96, }, { 0x2da0, 0x2da6, }, { 0x2da8, 0x2dae, }, + { 0x2db0, 0x2db6, }, { 0x2db8, 0x2dbe, }, { 0x2dc0, 0x2dc6, }, + { 0x2dc8, 0x2dce, }, { 0x2dd0, 0x2dd6, }, { 0x2dd8, 0x2dde, }, + { 0x2de0, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, }, + { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x303f, }, { 0x3041, 0x3096, }, + { 0x3099, 0x30ff, }, { 0x3105, 0x312f, }, { 0x3131, 0x318e, }, + { 0x3190, 0x31e3, }, { 0x31ef, 0x321e, }, { 0x3220, 0xa48c, }, + { 0xa490, 0xa4c6, }, { 0xa4d0, 0xa62b, }, { 0xa640, 0xa6f7, }, + { 0xa700, 0xa7ca, }, { 0xa7d0, 0xa7d1, }, { 0xa7d3, 0xa7d3, }, + { 0xa7d5, 0xa7d9, }, { 0xa7f2, 0xa82c, }, { 0xa830, 0xa839, }, + { 0xa840, 0xa877, }, { 0xa880, 0xa8c5, }, { 0xa8ce, 0xa8d9, }, + { 0xa8e0, 0xa953, }, { 0xa95f, 0xa97c, }, { 0xa980, 0xa9cd, }, + { 0xa9cf, 0xa9d9, }, { 0xa9de, 0xa9fe, }, { 0xaa00, 0xaa36, }, + { 0xaa40, 0xaa4d, }, { 0xaa50, 0xaa59, }, { 0xaa5c, 0xaac2, }, + { 0xaadb, 0xaaf6, }, { 0xab01, 0xab06, }, { 0xab09, 0xab0e, }, + { 0xab11, 0xab16, }, { 0xab20, 0xab26, }, { 0xab28, 0xab2e, }, + { 0xab30, 0xab6b, }, { 0xab70, 0xabed, }, { 0xabf0, 0xabf9, }, + { 0xac00, 0xd7a3, }, { 0xd7b0, 0xd7c6, }, { 0xd7cb, 0xd7fb, }, + { 0xe000, 0xfa6d, }, { 0xfa70, 0xfad9, }, { 0xfb00, 0xfb06, }, + { 0xfb13, 0xfb17, }, { 0xfb1d, 0xfb36, }, { 0xfb38, 0xfb3c, }, + { 0xfb3e, 0xfb3e, }, { 0xfb40, 0xfb41, }, { 0xfb43, 0xfb44, }, + { 0xfb46, 0xfbc2, }, { 0xfbd3, 0xfd8f, }, { 0xfd92, 0xfdc7, }, + { 0xfdcf, 0xfdcf, }, { 0xfdf0, 0xfe19, }, { 0xfe20, 0xfe52, }, + { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xfe70, 0xfe74, }, + { 0xfe76, 0xfefc, }, { 0xfeff, 0xfeff, }, { 0xff01, 0xffbe, }, + { 0xffc2, 0xffc7, }, { 0xffca, 0xffcf, }, { 0xffd2, 0xffd7, }, + { 0xffda, 0xffdc, }, { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, }, + { 0xfff9, 0xfffd, }, { 0x10000, 0x1000b, }, { 0x1000d, 0x10026, }, + { 0x10028, 0x1003a, }, { 0x1003c, 0x1003d, }, { 0x1003f, 0x1004d, }, + { 0x10050, 0x1005d, }, { 0x10080, 0x100fa, }, { 0x10100, 0x10102, }, + { 0x10107, 0x10133, }, { 0x10137, 0x1018e, }, { 0x10190, 0x1019c, }, + { 0x101a0, 0x101a0, }, { 0x101d0, 0x101fd, }, { 0x10280, 0x1029c, }, + { 0x102a0, 0x102d0, }, { 0x102e0, 0x102fb, }, { 0x10300, 0x10323, }, + { 0x1032d, 0x1034a, }, { 0x10350, 0x1037a, }, { 0x10380, 0x1039d, }, + { 0x1039f, 0x103c3, }, { 0x103c8, 0x103d5, }, { 0x10400, 0x1049d, }, + { 0x104a0, 0x104a9, }, { 0x104b0, 0x104d3, }, { 0x104d8, 0x104fb, }, + { 0x10500, 0x10527, }, { 0x10530, 0x10563, }, { 0x1056f, 0x1057a, }, + { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, { 0x10594, 0x10595, }, + { 0x10597, 0x105a1, }, { 0x105a3, 0x105b1, }, { 0x105b3, 0x105b9, }, + { 0x105bb, 0x105bc, }, { 0x10600, 0x10736, }, { 0x10740, 0x10755, }, + { 0x10760, 0x10767, }, { 0x10780, 0x10785, }, { 0x10787, 0x107b0, }, + { 0x107b2, 0x107ba, }, { 0x10800, 0x10805, }, { 0x10808, 0x10808, }, + { 0x1080a, 0x10835, }, { 0x10837, 0x10838, }, { 0x1083c, 0x1083c, }, + { 0x1083f, 0x10855, }, { 0x10857, 0x1089e, }, { 0x108a7, 0x108af, }, + { 0x108e0, 0x108f2, }, { 0x108f4, 0x108f5, }, { 0x108fb, 0x1091b, }, + { 0x1091f, 0x10939, }, { 0x1093f, 0x1093f, }, { 0x10980, 0x109b7, }, + { 0x109bc, 0x109cf, }, { 0x109d2, 0x10a03, }, { 0x10a05, 0x10a06, }, + { 0x10a0c, 0x10a13, }, { 0x10a15, 0x10a17, }, { 0x10a19, 0x10a35, }, + { 0x10a38, 0x10a3a, }, { 0x10a3f, 0x10a48, }, { 0x10a50, 0x10a58, }, + { 0x10a60, 0x10a9f, }, { 0x10ac0, 0x10ae6, }, { 0x10aeb, 0x10af6, }, + { 0x10b00, 0x10b35, }, { 0x10b39, 0x10b55, }, { 0x10b58, 0x10b72, }, + { 0x10b78, 0x10b91, }, { 0x10b99, 0x10b9c, }, { 0x10ba9, 0x10baf, }, + { 0x10c00, 0x10c48, }, { 0x10c80, 0x10cb2, }, { 0x10cc0, 0x10cf2, }, + { 0x10cfa, 0x10d27, }, { 0x10d30, 0x10d39, }, { 0x10e60, 0x10e7e, }, + { 0x10e80, 0x10ea9, }, { 0x10eab, 0x10ead, }, { 0x10eb0, 0x10eb1, }, + { 0x10efd, 0x10f27, }, { 0x10f30, 0x10f59, }, { 0x10f70, 0x10f89, }, + { 0x10fb0, 0x10fcb, }, { 0x10fe0, 0x10ff6, }, { 0x11000, 0x1104d, }, + { 0x11052, 0x11075, }, { 0x1107f, 0x110c2, }, { 0x110cd, 0x110cd, }, + { 0x110d0, 0x110e8, }, { 0x110f0, 0x110f9, }, { 0x11100, 0x11134, }, + { 0x11136, 0x11147, }, { 0x11150, 0x11176, }, { 0x11180, 0x111df, }, + { 0x111e1, 0x111f4, }, { 0x11200, 0x11211, }, { 0x11213, 0x11241, }, + { 0x11280, 0x11286, }, { 0x11288, 0x11288, }, { 0x1128a, 0x1128d, }, + { 0x1128f, 0x1129d, }, { 0x1129f, 0x112a9, }, { 0x112b0, 0x112ea, }, + { 0x112f0, 0x112f9, }, { 0x11300, 0x11303, }, { 0x11305, 0x1130c, }, + { 0x1130f, 0x11310, }, { 0x11313, 0x11328, }, { 0x1132a, 0x11330, }, + { 0x11332, 0x11333, }, { 0x11335, 0x11339, }, { 0x1133b, 0x11344, }, + { 0x11347, 0x11348, }, { 0x1134b, 0x1134d, }, { 0x11350, 0x11350, }, + { 0x11357, 0x11357, }, { 0x1135d, 0x11363, }, { 0x11366, 0x1136c, }, + { 0x11370, 0x11374, }, { 0x11400, 0x1145b, }, { 0x1145d, 0x11461, }, + { 0x11480, 0x114c7, }, { 0x114d0, 0x114d9, }, { 0x11580, 0x115b5, }, + { 0x115b8, 0x115dd, }, { 0x11600, 0x11644, }, { 0x11650, 0x11659, }, + { 0x11660, 0x1166c, }, { 0x11680, 0x116b9, }, { 0x116c0, 0x116c9, }, + { 0x11700, 0x1171a, }, { 0x1171d, 0x1172b, }, { 0x11730, 0x11746, }, + { 0x11800, 0x1183b, }, { 0x118a0, 0x118f2, }, { 0x118ff, 0x11906, }, + { 0x11909, 0x11909, }, { 0x1190c, 0x11913, }, { 0x11915, 0x11916, }, + { 0x11918, 0x11935, }, { 0x11937, 0x11938, }, { 0x1193b, 0x11946, }, + { 0x11950, 0x11959, }, { 0x119a0, 0x119a7, }, { 0x119aa, 0x119d7, }, + { 0x119da, 0x119e4, }, { 0x11a00, 0x11a47, }, { 0x11a50, 0x11aa2, }, + { 0x11ab0, 0x11af8, }, { 0x11b00, 0x11b09, }, { 0x11c00, 0x11c08, }, + { 0x11c0a, 0x11c36, }, { 0x11c38, 0x11c45, }, { 0x11c50, 0x11c6c, }, + { 0x11c70, 0x11c8f, }, { 0x11c92, 0x11ca7, }, { 0x11ca9, 0x11cb6, }, + { 0x11d00, 0x11d06, }, { 0x11d08, 0x11d09, }, { 0x11d0b, 0x11d36, }, + { 0x11d3a, 0x11d3a, }, { 0x11d3c, 0x11d3d, }, { 0x11d3f, 0x11d47, }, + { 0x11d50, 0x11d59, }, { 0x11d60, 0x11d65, }, { 0x11d67, 0x11d68, }, + { 0x11d6a, 0x11d8e, }, { 0x11d90, 0x11d91, }, { 0x11d93, 0x11d98, }, + { 0x11da0, 0x11da9, }, { 0x11ee0, 0x11ef8, }, { 0x11f00, 0x11f10, }, + { 0x11f12, 0x11f3a, }, { 0x11f3e, 0x11f59, }, { 0x11fb0, 0x11fb0, }, + { 0x11fc0, 0x11ff1, }, { 0x11fff, 0x12399, }, { 0x12400, 0x1246e, }, + { 0x12470, 0x12474, }, { 0x12480, 0x12543, }, { 0x12f90, 0x12ff2, }, + { 0x13000, 0x13455, }, { 0x14400, 0x14646, }, { 0x16800, 0x16a38, }, + { 0x16a40, 0x16a5e, }, { 0x16a60, 0x16a69, }, { 0x16a6e, 0x16abe, }, + { 0x16ac0, 0x16ac9, }, { 0x16ad0, 0x16aed, }, { 0x16af0, 0x16af5, }, + { 0x16b00, 0x16b45, }, { 0x16b50, 0x16b59, }, { 0x16b5b, 0x16b61, }, + { 0x16b63, 0x16b77, }, { 0x16b7d, 0x16b8f, }, { 0x16e40, 0x16e9a, }, + { 0x16f00, 0x16f4a, }, { 0x16f4f, 0x16f87, }, { 0x16f8f, 0x16f9f, }, + { 0x16fe0, 0x16fe4, }, { 0x16ff0, 0x16ff1, }, { 0x17000, 0x187f7, }, + { 0x18800, 0x18cd5, }, { 0x18d00, 0x18d08, }, { 0x1aff0, 0x1aff3, }, + { 0x1aff5, 0x1affb, }, { 0x1affd, 0x1affe, }, { 0x1b000, 0x1b122, }, + { 0x1b132, 0x1b132, }, { 0x1b150, 0x1b152, }, { 0x1b155, 0x1b155, }, + { 0x1b164, 0x1b167, }, { 0x1b170, 0x1b2fb, }, { 0x1bc00, 0x1bc6a, }, + { 0x1bc70, 0x1bc7c, }, { 0x1bc80, 0x1bc88, }, { 0x1bc90, 0x1bc99, }, + { 0x1bc9c, 0x1bca3, }, { 0x1cf00, 0x1cf2d, }, { 0x1cf30, 0x1cf46, }, + { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, }, + { 0x1d129, 0x1d1ea, }, { 0x1d200, 0x1d245, }, { 0x1d2c0, 0x1d2d3, }, + { 0x1d2e0, 0x1d2f3, }, { 0x1d300, 0x1d356, }, { 0x1d360, 0x1d378, }, + { 0x1d400, 0x1d454, }, { 0x1d456, 0x1d49c, }, { 0x1d49e, 0x1d49f, }, + { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, }, + { 0x1d4ae, 0x1d4b9, }, { 0x1d4bb, 0x1d4bb, }, { 0x1d4bd, 0x1d4c3, }, + { 0x1d4c5, 0x1d505, }, { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, + { 0x1d516, 0x1d51c, }, { 0x1d51e, 0x1d539, }, { 0x1d53b, 0x1d53e, }, + { 0x1d540, 0x1d544, }, { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, + { 0x1d552, 0x1d6a5, }, { 0x1d6a8, 0x1d7cb, }, { 0x1d7ce, 0x1da8b, }, + { 0x1da9b, 0x1da9f, }, { 0x1daa1, 0x1daaf, }, { 0x1df00, 0x1df1e, }, + { 0x1df25, 0x1df2a, }, { 0x1e000, 0x1e006, }, { 0x1e008, 0x1e018, }, + { 0x1e01b, 0x1e021, }, { 0x1e023, 0x1e024, }, { 0x1e026, 0x1e02a, }, + { 0x1e030, 0x1e06d, }, { 0x1e08f, 0x1e08f, }, { 0x1e100, 0x1e12c, }, + { 0x1e130, 0x1e13d, }, { 0x1e140, 0x1e149, }, { 0x1e14e, 0x1e14f, }, + { 0x1e290, 0x1e2ae, }, { 0x1e2c0, 0x1e2f9, }, { 0x1e2ff, 0x1e2ff, }, + { 0x1e4d0, 0x1e4f9, }, { 0x1e7e0, 0x1e7e6, }, { 0x1e7e8, 0x1e7eb, }, + { 0x1e7ed, 0x1e7ee, }, { 0x1e7f0, 0x1e7fe, }, { 0x1e800, 0x1e8c4, }, + { 0x1e8c7, 0x1e8d6, }, { 0x1e900, 0x1e94b, }, { 0x1e950, 0x1e959, }, + { 0x1e95e, 0x1e95f, }, { 0x1ec71, 0x1ecb4, }, { 0x1ed01, 0x1ed3d, }, + { 0x1ee00, 0x1ee03, }, { 0x1ee05, 0x1ee1f, }, { 0x1ee21, 0x1ee22, }, + { 0x1ee24, 0x1ee24, }, { 0x1ee27, 0x1ee27, }, { 0x1ee29, 0x1ee32, }, + { 0x1ee34, 0x1ee37, }, { 0x1ee39, 0x1ee39, }, { 0x1ee3b, 0x1ee3b, }, + { 0x1ee42, 0x1ee42, }, { 0x1ee47, 0x1ee47, }, { 0x1ee49, 0x1ee49, }, + { 0x1ee4b, 0x1ee4b, }, { 0x1ee4d, 0x1ee4f, }, { 0x1ee51, 0x1ee52, }, + { 0x1ee54, 0x1ee54, }, { 0x1ee57, 0x1ee57, }, { 0x1ee59, 0x1ee59, }, + { 0x1ee5b, 0x1ee5b, }, { 0x1ee5d, 0x1ee5d, }, { 0x1ee5f, 0x1ee5f, }, + { 0x1ee61, 0x1ee62, }, { 0x1ee64, 0x1ee64, }, { 0x1ee67, 0x1ee6a, }, + { 0x1ee6c, 0x1ee72, }, { 0x1ee74, 0x1ee77, }, { 0x1ee79, 0x1ee7c, }, + { 0x1ee7e, 0x1ee7e, }, { 0x1ee80, 0x1ee89, }, { 0x1ee8b, 0x1ee9b, }, + { 0x1eea1, 0x1eea3, }, { 0x1eea5, 0x1eea9, }, { 0x1eeab, 0x1eebb, }, + { 0x1eef0, 0x1eef1, }, { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, }, + { 0x1f0a0, 0x1f0ae, }, { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, }, + { 0x1f0d1, 0x1f0f5, }, { 0x1f100, 0x1f1ad, }, { 0x1f1e6, 0x1f202, }, + { 0x1f210, 0x1f23b, }, { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, }, + { 0x1f260, 0x1f265, }, { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, }, + { 0x1f6f0, 0x1f6fc, }, { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, }, + { 0x1f7e0, 0x1f7eb, }, { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, }, + { 0x1f810, 0x1f847, }, { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, }, + { 0x1f890, 0x1f8ad, }, { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, }, + { 0x1fa60, 0x1fa6d, }, { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, }, + { 0x1fa90, 0x1fabd, }, { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, }, + { 0x1fae0, 0x1fae8, }, { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, }, + { 0x1fb94, 0x1fbca, }, { 0x1fbf0, 0x1fbf9, }, { 0x20000, 0x2a6df, }, + { 0x2a700, 0x2b739, }, { 0x2b740, 0x2b81d, }, { 0x2b820, 0x2cea1, }, + { 0x2ceb0, 0x2ebe0, }, { 0x2ebf0, 0x2ee5d, }, { 0x2f800, 0x2fa1d, }, + { 0x30000, 0x3134a, }, { 0x31350, 0x323af, }, { 0xe0001, 0xe0001, }, + { 0xe0020, 0xe007f, }, { 0xe0100, 0xe01ef, }, { 0xf0000, 0xffffd, }, + { 0x100000, 0x10fffd, }, }}; return utils::table_lookup(print_table, c); diff --git a/include/peelo/unicode/ctype/ispunct.hpp b/include/peelo/unicode/ctype/ispunct.hpp index 2db201d..6365ebe 100644 --- a/include/peelo/unicode/ctype/ispunct.hpp +++ b/include/peelo/unicode/ctype/ispunct.hpp @@ -37,40 +37,121 @@ namespace peelo::unicode::ctype inline bool ispunct(char32_t c) { - static const std::array punct_table = + static const std::array punct_table = {{ - { 0x0021, 0x0023 }, { 0x0025, 0x002a }, { 0x002c, 0x002f }, - { 0x003a, 0x003b }, { 0x003f, 0x0040 }, { 0x005b, 0x005d }, - { 0x005f, 0x005f }, { 0x007b, 0x007b }, { 0x007d, 0x007d }, - { 0x00a1, 0x00a1 }, { 0x00ab, 0x00ab }, { 0x00b7, 0x00b7 }, - { 0x00bb, 0x00bb }, { 0x00bf, 0x00bf }, { 0x037e, 0x037e }, - { 0x0387, 0x0387 }, { 0x055a, 0x055f }, { 0x0589, 0x058a }, - { 0x05be, 0x05be }, { 0x05c0, 0x05c0 }, { 0x05c3, 0x05c3 }, - { 0x05c6, 0x05c6 }, { 0x05f3, 0x05f4 }, { 0x060c, 0x060d }, - { 0x061b, 0x061b }, { 0x061e, 0x061f }, { 0x066a, 0x066d }, - { 0x06d4, 0x06d4 }, { 0x0700, 0x070d }, { 0x0964, 0x0965 }, - { 0x0970, 0x0970 }, { 0x0df4, 0x0df4 }, { 0x0e4f, 0x0e4f }, - { 0x0e5a, 0x0e5b }, { 0x0f04, 0x0f12 }, { 0x0f3a, 0x0f3d }, - { 0x0f85, 0x0f85 }, { 0x0fd0, 0x0fd1 }, { 0x104a, 0x104f }, - { 0x10fb, 0x10fb }, { 0x1361, 0x1368 }, { 0x166d, 0x166e }, - { 0x169b, 0x169c }, { 0x16eb, 0x16ed }, { 0x1735, 0x1736 }, - { 0x17d4, 0x17d6 }, { 0x17d8, 0x17da }, { 0x1800, 0x180a }, - { 0x1944, 0x1945 }, { 0x19de, 0x19df }, { 0x1a1e, 0x1a1f }, - { 0x2010, 0x2027 }, { 0x2030, 0x2043 }, { 0x2045, 0x2051 }, - { 0x2053, 0x205e }, { 0x207d, 0x207e }, { 0x208d, 0x208e }, - { 0x2329, 0x232a }, { 0x23b4, 0x23b6 }, { 0x2768, 0x2775 }, - { 0x27c5, 0x27c6 }, { 0x27e6, 0x27eb }, { 0x2983, 0x2998 }, - { 0x29d8, 0x29db }, { 0x29fc, 0x29fd }, { 0x2cf9, 0x2cfc }, - { 0x2cfe, 0x2cff }, { 0x2e00, 0x2e17 }, { 0x2e1c, 0x2e1d }, - { 0x3001, 0x3003 }, { 0x3008, 0x3011 }, { 0x3014, 0x301f }, - { 0x3030, 0x3030 }, { 0x303d, 0x303d }, { 0x30a0, 0x30a0 }, - { 0x30fb, 0x30fb }, { 0xfd3e, 0xfd3f }, { 0xfe10, 0xfe19 }, - { 0xfe30, 0xfe52 }, { 0xfe54, 0xfe61 }, { 0xfe63, 0xfe63 }, - { 0xfe68, 0xfe68 }, { 0xfe6a, 0xfe6b }, { 0xff01, 0xff03 }, - { 0xff05, 0xff0a }, { 0xff0c, 0xff0f }, { 0xff1a, 0xff1b }, - { 0xff1f, 0xff20 }, { 0xff3b, 0xff3d }, { 0xff3f, 0xff3f }, - { 0xff5b, 0xff5b }, { 0xff5d, 0xff5d }, { 0xff5f, 0xff65 }, - { 0x10100, 0x10101 }, { 0x1039f, 0x1039f }, { 0x10a50, 0x10a58 } + { 0x0021, 0x002f, }, { 0x003a, 0x0040, }, { 0x005b, 0x0060, }, + { 0x007b, 0x007e, }, { 0x00a1, 0x00a9, }, { 0x00ab, 0x00ac, }, + { 0x00ae, 0x00b1, }, { 0x00b4, 0x00b4, }, { 0x00b6, 0x00b8, }, + { 0x00bb, 0x00bb, }, { 0x00bf, 0x00bf, }, { 0x00d7, 0x00d7, }, + { 0x00f7, 0x00f7, }, { 0x02c2, 0x02c5, }, { 0x02d2, 0x02df, }, + { 0x02e5, 0x02eb, }, { 0x02ed, 0x02ed, }, { 0x02ef, 0x02ff, }, + { 0x0375, 0x0375, }, { 0x037e, 0x037e, }, { 0x0384, 0x0385, }, + { 0x0387, 0x0387, }, { 0x03f6, 0x03f6, }, { 0x0482, 0x0482, }, + { 0x055a, 0x055f, }, { 0x0589, 0x058a, }, { 0x058d, 0x058f, }, + { 0x05be, 0x05be, }, { 0x05c0, 0x05c0, }, { 0x05c3, 0x05c3, }, + { 0x05c6, 0x05c6, }, { 0x05f3, 0x05f4, }, { 0x0606, 0x060f, }, + { 0x061b, 0x061b, }, { 0x061d, 0x061f, }, { 0x066a, 0x066d, }, + { 0x06d4, 0x06d4, }, { 0x06de, 0x06de, }, { 0x06e9, 0x06e9, }, + { 0x06fd, 0x06fe, }, { 0x0700, 0x070d, }, { 0x07f6, 0x07f9, }, + { 0x07fe, 0x07ff, }, { 0x0830, 0x083e, }, { 0x085e, 0x085e, }, + { 0x0888, 0x0888, }, { 0x0964, 0x0965, }, { 0x0970, 0x0970, }, + { 0x09f2, 0x09f3, }, { 0x09fa, 0x09fb, }, { 0x09fd, 0x09fd, }, + { 0x0a76, 0x0a76, }, { 0x0af0, 0x0af1, }, { 0x0b70, 0x0b70, }, + { 0x0bf3, 0x0bfa, }, { 0x0c77, 0x0c77, }, { 0x0c7f, 0x0c7f, }, + { 0x0c84, 0x0c84, }, { 0x0d4f, 0x0d4f, }, { 0x0d79, 0x0d79, }, + { 0x0df4, 0x0df4, }, { 0x0e3f, 0x0e3f, }, { 0x0e4f, 0x0e4f, }, + { 0x0e5a, 0x0e5b, }, { 0x0f01, 0x0f17, }, { 0x0f1a, 0x0f1f, }, + { 0x0f34, 0x0f34, }, { 0x0f36, 0x0f36, }, { 0x0f38, 0x0f38, }, + { 0x0f3a, 0x0f3d, }, { 0x0f85, 0x0f85, }, { 0x0fbe, 0x0fc5, }, + { 0x0fc7, 0x0fcc, }, { 0x0fce, 0x0fda, }, { 0x104a, 0x104f, }, + { 0x109e, 0x109f, }, { 0x10fb, 0x10fb, }, { 0x1360, 0x1368, }, + { 0x1390, 0x1399, }, { 0x1400, 0x1400, }, { 0x166d, 0x166e, }, + { 0x169b, 0x169c, }, { 0x16eb, 0x16ed, }, { 0x1735, 0x1736, }, + { 0x17d4, 0x17d6, }, { 0x17d8, 0x17db, }, { 0x1800, 0x180a, }, + { 0x1940, 0x1940, }, { 0x1944, 0x1945, }, { 0x19de, 0x19ff, }, + { 0x1a1e, 0x1a1f, }, { 0x1aa0, 0x1aa6, }, { 0x1aa8, 0x1aad, }, + { 0x1b5a, 0x1b6a, }, { 0x1b74, 0x1b7e, }, { 0x1bfc, 0x1bff, }, + { 0x1c3b, 0x1c3f, }, { 0x1c7e, 0x1c7f, }, { 0x1cc0, 0x1cc7, }, + { 0x1cd3, 0x1cd3, }, { 0x1fbd, 0x1fbd, }, { 0x1fbf, 0x1fc1, }, + { 0x1fcd, 0x1fcf, }, { 0x1fdd, 0x1fdf, }, { 0x1fed, 0x1fef, }, + { 0x1ffd, 0x1ffe, }, { 0x2010, 0x2027, }, { 0x2030, 0x205e, }, + { 0x207a, 0x207e, }, { 0x208a, 0x208e, }, { 0x20a0, 0x20c0, }, + { 0x2100, 0x2101, }, { 0x2103, 0x2106, }, { 0x2108, 0x2109, }, + { 0x2114, 0x2114, }, { 0x2116, 0x2118, }, { 0x211e, 0x2123, }, + { 0x2125, 0x2125, }, { 0x2127, 0x2127, }, { 0x2129, 0x2129, }, + { 0x212e, 0x212e, }, { 0x213a, 0x213b, }, { 0x2140, 0x2144, }, + { 0x214a, 0x214d, }, { 0x214f, 0x214f, }, { 0x218a, 0x218b, }, + { 0x2190, 0x2426, }, { 0x2440, 0x244a, }, { 0x249c, 0x24e9, }, + { 0x2500, 0x2775, }, { 0x2794, 0x2b73, }, { 0x2b76, 0x2b95, }, + { 0x2b97, 0x2bff, }, { 0x2ce5, 0x2cea, }, { 0x2cf9, 0x2cfc, }, + { 0x2cfe, 0x2cff, }, { 0x2d70, 0x2d70, }, { 0x2e00, 0x2e2e, }, + { 0x2e30, 0x2e5d, }, { 0x2e80, 0x2e99, }, { 0x2e9b, 0x2ef3, }, + { 0x2f00, 0x2fd5, }, { 0x2ff0, 0x2fff, }, { 0x3001, 0x3004, }, + { 0x3008, 0x3020, }, { 0x3030, 0x3030, }, { 0x3036, 0x3037, }, + { 0x303d, 0x303f, }, { 0x309b, 0x309c, }, { 0x30a0, 0x30a0, }, + { 0x30fb, 0x30fb, }, { 0x3190, 0x3191, }, { 0x3196, 0x319f, }, + { 0x31c0, 0x31e3, }, { 0x31ef, 0x31ef, }, { 0x3200, 0x321e, }, + { 0x322a, 0x3247, }, { 0x3250, 0x3250, }, { 0x3260, 0x327f, }, + { 0x328a, 0x32b0, }, { 0x32c0, 0x33ff, }, { 0x4dc0, 0x4dff, }, + { 0xa490, 0xa4c6, }, { 0xa4fe, 0xa4ff, }, { 0xa60d, 0xa60f, }, + { 0xa673, 0xa673, }, { 0xa67e, 0xa67e, }, { 0xa6f2, 0xa6f7, }, + { 0xa700, 0xa716, }, { 0xa720, 0xa721, }, { 0xa789, 0xa78a, }, + { 0xa828, 0xa82b, }, { 0xa836, 0xa839, }, { 0xa874, 0xa877, }, + { 0xa8ce, 0xa8cf, }, { 0xa8f8, 0xa8fa, }, { 0xa8fc, 0xa8fc, }, + { 0xa92e, 0xa92f, }, { 0xa95f, 0xa95f, }, { 0xa9c1, 0xa9cd, }, + { 0xa9de, 0xa9df, }, { 0xaa5c, 0xaa5f, }, { 0xaa77, 0xaa79, }, + { 0xaade, 0xaadf, }, { 0xaaf0, 0xaaf1, }, { 0xab5b, 0xab5b, }, + { 0xab6a, 0xab6b, }, { 0xabeb, 0xabeb, }, { 0xfb29, 0xfb29, }, + { 0xfbb2, 0xfbc2, }, { 0xfd3e, 0xfd4f, }, { 0xfdcf, 0xfdcf, }, + { 0xfdfc, 0xfdff, }, { 0xfe10, 0xfe19, }, { 0xfe30, 0xfe52, }, + { 0xfe54, 0xfe66, }, { 0xfe68, 0xfe6b, }, { 0xff01, 0xff0f, }, + { 0xff1a, 0xff20, }, { 0xff3b, 0xff40, }, { 0xff5b, 0xff65, }, + { 0xffe0, 0xffe6, }, { 0xffe8, 0xffee, }, { 0xfffc, 0xfffd, }, + { 0x10100, 0x10102, }, { 0x10137, 0x1013f, }, { 0x10179, 0x10189, }, + { 0x1018c, 0x1018e, }, { 0x10190, 0x1019c, }, { 0x101a0, 0x101a0, }, + { 0x101d0, 0x101fc, }, { 0x1039f, 0x1039f, }, { 0x103d0, 0x103d0, }, + { 0x1056f, 0x1056f, }, { 0x10857, 0x10857, }, { 0x10877, 0x10878, }, + { 0x1091f, 0x1091f, }, { 0x1093f, 0x1093f, }, { 0x10a50, 0x10a58, }, + { 0x10a7f, 0x10a7f, }, { 0x10ac8, 0x10ac8, }, { 0x10af0, 0x10af6, }, + { 0x10b39, 0x10b3f, }, { 0x10b99, 0x10b9c, }, { 0x10ead, 0x10ead, }, + { 0x10f55, 0x10f59, }, { 0x10f86, 0x10f89, }, { 0x11047, 0x1104d, }, + { 0x110bb, 0x110bc, }, { 0x110be, 0x110c1, }, { 0x11140, 0x11143, }, + { 0x11174, 0x11175, }, { 0x111c5, 0x111c8, }, { 0x111cd, 0x111cd, }, + { 0x111db, 0x111db, }, { 0x111dd, 0x111df, }, { 0x11238, 0x1123d, }, + { 0x112a9, 0x112a9, }, { 0x1144b, 0x1144f, }, { 0x1145a, 0x1145b, }, + { 0x1145d, 0x1145d, }, { 0x114c6, 0x114c6, }, { 0x115c1, 0x115d7, }, + { 0x11641, 0x11643, }, { 0x11660, 0x1166c, }, { 0x116b9, 0x116b9, }, + { 0x1173c, 0x1173f, }, { 0x1183b, 0x1183b, }, { 0x11944, 0x11946, }, + { 0x119e2, 0x119e2, }, { 0x11a3f, 0x11a46, }, { 0x11a9a, 0x11a9c, }, + { 0x11a9e, 0x11aa2, }, { 0x11b00, 0x11b09, }, { 0x11c41, 0x11c45, }, + { 0x11c70, 0x11c71, }, { 0x11ef7, 0x11ef8, }, { 0x11f43, 0x11f4f, }, + { 0x11fd5, 0x11ff1, }, { 0x11fff, 0x11fff, }, { 0x12470, 0x12474, }, + { 0x12ff1, 0x12ff2, }, { 0x16a6e, 0x16a6f, }, { 0x16af5, 0x16af5, }, + { 0x16b37, 0x16b3f, }, { 0x16b44, 0x16b45, }, { 0x16e97, 0x16e9a, }, + { 0x16fe2, 0x16fe2, }, { 0x1bc9c, 0x1bc9c, }, { 0x1bc9f, 0x1bc9f, }, + { 0x1cf50, 0x1cfc3, }, { 0x1d000, 0x1d0f5, }, { 0x1d100, 0x1d126, }, + { 0x1d129, 0x1d164, }, { 0x1d16a, 0x1d16c, }, { 0x1d183, 0x1d184, }, + { 0x1d18c, 0x1d1a9, }, { 0x1d1ae, 0x1d1ea, }, { 0x1d200, 0x1d241, }, + { 0x1d245, 0x1d245, }, { 0x1d300, 0x1d356, }, { 0x1d6c1, 0x1d6c1, }, + { 0x1d6db, 0x1d6db, }, { 0x1d6fb, 0x1d6fb, }, { 0x1d715, 0x1d715, }, + { 0x1d735, 0x1d735, }, { 0x1d74f, 0x1d74f, }, { 0x1d76f, 0x1d76f, }, + { 0x1d789, 0x1d789, }, { 0x1d7a9, 0x1d7a9, }, { 0x1d7c3, 0x1d7c3, }, + { 0x1d800, 0x1d9ff, }, { 0x1da37, 0x1da3a, }, { 0x1da6d, 0x1da74, }, + { 0x1da76, 0x1da83, }, { 0x1da85, 0x1da8b, }, { 0x1e14f, 0x1e14f, }, + { 0x1e2ff, 0x1e2ff, }, { 0x1e95e, 0x1e95f, }, { 0x1ecac, 0x1ecac, }, + { 0x1ecb0, 0x1ecb0, }, { 0x1ed2e, 0x1ed2e, }, { 0x1eef0, 0x1eef1, }, + { 0x1f000, 0x1f02b, }, { 0x1f030, 0x1f093, }, { 0x1f0a0, 0x1f0ae, }, + { 0x1f0b1, 0x1f0bf, }, { 0x1f0c1, 0x1f0cf, }, { 0x1f0d1, 0x1f0f5, }, + { 0x1f10d, 0x1f1ad, }, { 0x1f1e6, 0x1f202, }, { 0x1f210, 0x1f23b, }, + { 0x1f240, 0x1f248, }, { 0x1f250, 0x1f251, }, { 0x1f260, 0x1f265, }, + { 0x1f300, 0x1f6d7, }, { 0x1f6dc, 0x1f6ec, }, { 0x1f6f0, 0x1f6fc, }, + { 0x1f700, 0x1f776, }, { 0x1f77b, 0x1f7d9, }, { 0x1f7e0, 0x1f7eb, }, + { 0x1f7f0, 0x1f7f0, }, { 0x1f800, 0x1f80b, }, { 0x1f810, 0x1f847, }, + { 0x1f850, 0x1f859, }, { 0x1f860, 0x1f887, }, { 0x1f890, 0x1f8ad, }, + { 0x1f8b0, 0x1f8b1, }, { 0x1f900, 0x1fa53, }, { 0x1fa60, 0x1fa6d, }, + { 0x1fa70, 0x1fa7c, }, { 0x1fa80, 0x1fa88, }, { 0x1fa90, 0x1fabd, }, + { 0x1fabf, 0x1fac5, }, { 0x1face, 0x1fadb, }, { 0x1fae0, 0x1fae8, }, + { 0x1faf0, 0x1faf8, }, { 0x1fb00, 0x1fb92, }, { 0x1fb94, 0x1fbca, }, }}; return utils::table_lookup(punct_table, c); diff --git a/include/peelo/unicode/ctype/isspace.hpp b/include/peelo/unicode/ctype/isspace.hpp index eead878..78b003c 100644 --- a/include/peelo/unicode/ctype/isspace.hpp +++ b/include/peelo/unicode/ctype/isspace.hpp @@ -38,12 +38,10 @@ namespace peelo::unicode::ctype { static const std::array space_table = {{ - { 0x0009, 0x000d }, { 0x0020, 0x0020 }, - { 0x0085, 0x0085 }, { 0x00a0, 0x00a0 }, - { 0x1680, 0x1680 }, { 0x180e, 0x180e }, - { 0x2000, 0x200a }, { 0x2028, 0x2029 }, - { 0x202f, 0x202f }, { 0x205f, 0x205f }, - { 0x3000, 0x3000 } + { 0x0009, 0x000D }, { 0x0020, 0x0020 }, { 0x0085, 0x0085 }, + { 0x00A0, 0x00A0 }, { 0x1680, 0x1680 }, { 0x2000, 0x200A }, + { 0x2028, 0x2028 }, { 0x2029, 0x2029 }, { 0x202F, 0x202F }, + { 0x205F, 0x205F }, { 0x3000, 0x3000 }, }}; return utils::table_lookup(space_table, c); diff --git a/include/peelo/unicode/ctype/isupper.hpp b/include/peelo/unicode/ctype/isupper.hpp index 9bd1e40..dce4d87 100644 --- a/include/peelo/unicode/ctype/isupper.hpp +++ b/include/peelo/unicode/ctype/isupper.hpp @@ -37,167 +37,225 @@ namespace peelo::unicode::ctype inline bool isupper(char32_t c) { - static const std::array upper_table = + static const std::array upper_table = {{ - { 0x0041, 0x005a }, { 0x00c0, 0x00d6 }, { 0x00d8, 0x00de }, - { 0x0100, 0x0100 }, { 0x0102, 0x0102 }, { 0x0104, 0x0104 }, - { 0x0106, 0x0106 }, { 0x0108, 0x0108 }, { 0x010a, 0x010a }, - { 0x010c, 0x010c }, { 0x010e, 0x010e }, { 0x0110, 0x0110 }, - { 0x0112, 0x0112 }, { 0x0114, 0x0114 }, { 0x0116, 0x0116 }, - { 0x0118, 0x0118 }, { 0x011a, 0x011a }, { 0x011c, 0x011c }, - { 0x011e, 0x011e }, { 0x0120, 0x0120 }, { 0x0122, 0x0122 }, - { 0x0124, 0x0124 }, { 0x0126, 0x0126 }, { 0x0128, 0x0128 }, - { 0x012a, 0x012a }, { 0x012c, 0x012c }, { 0x012e, 0x012e }, - { 0x0130, 0x0130 }, { 0x0132, 0x0132 }, { 0x0134, 0x0134 }, - { 0x0136, 0x0136 }, { 0x0139, 0x0139 }, { 0x013b, 0x013b }, - { 0x013d, 0x013d }, { 0x013f, 0x013f }, { 0x0141, 0x0141 }, - { 0x0143, 0x0143 }, { 0x0145, 0x0145 }, { 0x0147, 0x0147 }, - { 0x014a, 0x014a }, { 0x014c, 0x014c }, { 0x014e, 0x014e }, - { 0x0150, 0x0150 }, { 0x0152, 0x0152 }, { 0x0154, 0x0154 }, - { 0x0156, 0x0156 }, { 0x0158, 0x0158 }, { 0x015a, 0x015a }, - { 0x015c, 0x015c }, { 0x015e, 0x015e }, { 0x0160, 0x0160 }, - { 0x0162, 0x0162 }, { 0x0164, 0x0164 }, { 0x0166, 0x0166 }, - { 0x0168, 0x0168 }, { 0x016a, 0x016a }, { 0x016c, 0x016c }, - { 0x016e, 0x016e }, { 0x0170, 0x0170 }, { 0x0172, 0x0172 }, - { 0x0174, 0x0174 }, { 0x0176, 0x0176 }, { 0x0178, 0x0179 }, - { 0x017b, 0x017b }, { 0x017d, 0x017d }, { 0x0181, 0x0182 }, - { 0x0184, 0x0184 }, { 0x0186, 0x0187 }, { 0x0189, 0x018b }, - { 0x018e, 0x0191 }, { 0x0193, 0x0194 }, { 0x0196, 0x0198 }, - { 0x019c, 0x019d }, { 0x019f, 0x01a0 }, { 0x01a2, 0x01a2 }, - { 0x01a4, 0x01a4 }, { 0x01a6, 0x01a7 }, { 0x01a9, 0x01a9 }, - { 0x01ac, 0x01ac }, { 0x01ae, 0x01af }, { 0x01b1, 0x01b3 }, - { 0x01b5, 0x01b5 }, { 0x01b7, 0x01b8 }, { 0x01bc, 0x01bc }, - { 0x01c4, 0x01c4 }, { 0x01c7, 0x01c7 }, { 0x01ca, 0x01ca }, - { 0x01cd, 0x01cd }, { 0x01cf, 0x01cf }, { 0x01d1, 0x01d1 }, - { 0x01d3, 0x01d3 }, { 0x01d5, 0x01d5 }, { 0x01d7, 0x01d7 }, - { 0x01d9, 0x01d9 }, { 0x01db, 0x01db }, { 0x01de, 0x01de }, - { 0x01e0, 0x01e0 }, { 0x01e2, 0x01e2 }, { 0x01e4, 0x01e4 }, - { 0x01e6, 0x01e6 }, { 0x01e8, 0x01e8 }, { 0x01ea, 0x01ea }, - { 0x01ec, 0x01ec }, { 0x01ee, 0x01ee }, { 0x01f1, 0x01f1 }, - { 0x01f4, 0x01f4 }, { 0x01f6, 0x01f8 }, { 0x01fa, 0x01fa }, - { 0x01fc, 0x01fc }, { 0x01fe, 0x01fe }, { 0x0200, 0x0200 }, - { 0x0202, 0x0202 }, { 0x0204, 0x0204 }, { 0x0206, 0x0206 }, - { 0x0208, 0x0208 }, { 0x020a, 0x020a }, { 0x020c, 0x020c }, - { 0x020e, 0x020e }, { 0x0210, 0x0210 }, { 0x0212, 0x0212 }, - { 0x0214, 0x0214 }, { 0x0216, 0x0216 }, { 0x0218, 0x0218 }, - { 0x021a, 0x021a }, { 0x021c, 0x021c }, { 0x021e, 0x021e }, - { 0x0220, 0x0220 }, { 0x0222, 0x0222 }, { 0x0224, 0x0224 }, - { 0x0226, 0x0226 }, { 0x0228, 0x0228 }, { 0x022a, 0x022a }, - { 0x022c, 0x022c }, { 0x022e, 0x022e }, { 0x0230, 0x0230 }, - { 0x0232, 0x0232 }, { 0x023a, 0x023b }, { 0x023d, 0x023e }, - { 0x0241, 0x0241 }, { 0x0386, 0x0386 }, { 0x0388, 0x038a }, - { 0x038c, 0x038c }, { 0x038e, 0x038f }, { 0x0391, 0x03a1 }, - { 0x03a3, 0x03ab }, { 0x03d2, 0x03d4 }, { 0x03d8, 0x03d8 }, - { 0x03da, 0x03da }, { 0x03dc, 0x03dc }, { 0x03de, 0x03de }, - { 0x03e0, 0x03e0 }, { 0x03e2, 0x03e2 }, { 0x03e4, 0x03e4 }, - { 0x03e6, 0x03e6 }, { 0x03e8, 0x03e8 }, { 0x03ea, 0x03ea }, - { 0x03ec, 0x03ec }, { 0x03ee, 0x03ee }, { 0x03f4, 0x03f4 }, - { 0x03f7, 0x03f7 }, { 0x03f9, 0x03fa }, { 0x03fd, 0x042f }, - { 0x0460, 0x0460 }, { 0x0462, 0x0462 }, { 0x0464, 0x0464 }, - { 0x0466, 0x0466 }, { 0x0468, 0x0468 }, { 0x046a, 0x046a }, - { 0x046c, 0x046c }, { 0x046e, 0x046e }, { 0x0470, 0x0470 }, - { 0x0472, 0x0472 }, { 0x0474, 0x0474 }, { 0x0476, 0x0476 }, - { 0x0478, 0x0478 }, { 0x047a, 0x047a }, { 0x047c, 0x047c }, - { 0x047e, 0x047e }, { 0x0480, 0x0480 }, { 0x048a, 0x048a }, - { 0x048c, 0x048c }, { 0x048e, 0x048e }, { 0x0490, 0x0490 }, - { 0x0492, 0x0492 }, { 0x0494, 0x0494 }, { 0x0496, 0x0496 }, - { 0x0498, 0x0498 }, { 0x049a, 0x049a }, { 0x049c, 0x049c }, - { 0x049e, 0x049e }, { 0x04a0, 0x04a0 }, { 0x04a2, 0x04a2 }, - { 0x04a4, 0x04a4 }, { 0x04a6, 0x04a6 }, { 0x04a8, 0x04a8 }, - { 0x04aa, 0x04aa }, { 0x04ac, 0x04ac }, { 0x04ae, 0x04ae }, - { 0x04b0, 0x04b0 }, { 0x04b2, 0x04b2 }, { 0x04b4, 0x04b4 }, - { 0x04b6, 0x04b6 }, { 0x04b8, 0x04b8 }, { 0x04ba, 0x04ba }, - { 0x04bc, 0x04bc }, { 0x04be, 0x04be }, { 0x04c0, 0x04c1 }, - { 0x04c3, 0x04c3 }, { 0x04c5, 0x04c5 }, { 0x04c7, 0x04c7 }, - { 0x04c9, 0x04c9 }, { 0x04cb, 0x04cb }, { 0x04cd, 0x04cd }, - { 0x04d0, 0x04d0 }, { 0x04d2, 0x04d2 }, { 0x04d4, 0x04d4 }, - { 0x04d6, 0x04d6 }, { 0x04d8, 0x04d8 }, { 0x04da, 0x04da }, - { 0x04dc, 0x04dc }, { 0x04de, 0x04de }, { 0x04e0, 0x04e0 }, - { 0x04e2, 0x04e2 }, { 0x04e4, 0x04e4 }, { 0x04e6, 0x04e6 }, - { 0x04e8, 0x04e8 }, { 0x04ea, 0x04ea }, { 0x04ec, 0x04ec }, - { 0x04ee, 0x04ee }, { 0x04f0, 0x04f0 }, { 0x04f2, 0x04f2 }, - { 0x04f4, 0x04f4 }, { 0x04f6, 0x04f6 }, { 0x04f8, 0x04f8 }, - { 0x0500, 0x0500 }, { 0x0502, 0x0502 }, { 0x0504, 0x0504 }, - { 0x0506, 0x0506 }, { 0x0508, 0x0508 }, { 0x050a, 0x050a }, - { 0x050c, 0x050c }, { 0x050e, 0x050e }, { 0x0531, 0x0556 }, - { 0x10a0, 0x10c5 }, { 0x1e00, 0x1e00 }, { 0x1e02, 0x1e02 }, - { 0x1e04, 0x1e04 }, { 0x1e06, 0x1e06 }, { 0x1e08, 0x1e08 }, - { 0x1e0a, 0x1e0a }, { 0x1e0c, 0x1e0c }, { 0x1e0e, 0x1e0e }, - { 0x1e10, 0x1e10 }, { 0x1e12, 0x1e12 }, { 0x1e14, 0x1e14 }, - { 0x1e16, 0x1e16 }, { 0x1e18, 0x1e18 }, { 0x1e1a, 0x1e1a }, - { 0x1e1c, 0x1e1c }, { 0x1e1e, 0x1e1e }, { 0x1e20, 0x1e20 }, - { 0x1e22, 0x1e22 }, { 0x1e24, 0x1e24 }, { 0x1e26, 0x1e26 }, - { 0x1e28, 0x1e28 }, { 0x1e2a, 0x1e2a }, { 0x1e2c, 0x1e2c }, - { 0x1e2e, 0x1e2e }, { 0x1e30, 0x1e30 }, { 0x1e32, 0x1e32 }, - { 0x1e34, 0x1e34 }, { 0x1e36, 0x1e36 }, { 0x1e38, 0x1e38 }, - { 0x1e3a, 0x1e3a }, { 0x1e3c, 0x1e3c }, { 0x1e3e, 0x1e3e }, - { 0x1e40, 0x1e40 }, { 0x1e42, 0x1e42 }, { 0x1e44, 0x1e44 }, - { 0x1e46, 0x1e46 }, { 0x1e48, 0x1e48 }, { 0x1e4a, 0x1e4a }, - { 0x1e4c, 0x1e4c }, { 0x1e4e, 0x1e4e }, { 0x1e50, 0x1e50 }, - { 0x1e52, 0x1e52 }, { 0x1e54, 0x1e54 }, { 0x1e56, 0x1e56 }, - { 0x1e58, 0x1e58 }, { 0x1e5a, 0x1e5a }, { 0x1e5c, 0x1e5c }, - { 0x1e5e, 0x1e5e }, { 0x1e60, 0x1e60 }, { 0x1e62, 0x1e62 }, - { 0x1e64, 0x1e64 }, { 0x1e66, 0x1e66 }, { 0x1e68, 0x1e68 }, - { 0x1e6a, 0x1e6a }, { 0x1e6c, 0x1e6c }, { 0x1e6e, 0x1e6e }, - { 0x1e70, 0x1e70 }, { 0x1e72, 0x1e72 }, { 0x1e74, 0x1e74 }, - { 0x1e76, 0x1e76 }, { 0x1e78, 0x1e78 }, { 0x1e7a, 0x1e7a }, - { 0x1e7c, 0x1e7c }, { 0x1e7e, 0x1e7e }, { 0x1e80, 0x1e80 }, - { 0x1e82, 0x1e82 }, { 0x1e84, 0x1e84 }, { 0x1e86, 0x1e86 }, - { 0x1e88, 0x1e88 }, { 0x1e8a, 0x1e8a }, { 0x1e8c, 0x1e8c }, - { 0x1e8e, 0x1e8e }, { 0x1e90, 0x1e90 }, { 0x1e92, 0x1e92 }, - { 0x1e94, 0x1e94 }, { 0x1ea0, 0x1ea0 }, { 0x1ea2, 0x1ea2 }, - { 0x1ea4, 0x1ea4 }, { 0x1ea6, 0x1ea6 }, { 0x1ea8, 0x1ea8 }, - { 0x1eaa, 0x1eaa }, { 0x1eac, 0x1eac }, { 0x1eae, 0x1eae }, - { 0x1eb0, 0x1eb0 }, { 0x1eb2, 0x1eb2 }, { 0x1eb4, 0x1eb4 }, - { 0x1eb6, 0x1eb6 }, { 0x1eb8, 0x1eb8 }, { 0x1eba, 0x1eba }, - { 0x1ebc, 0x1ebc }, { 0x1ebe, 0x1ebe }, { 0x1ec0, 0x1ec0 }, - { 0x1ec2, 0x1ec2 }, { 0x1ec4, 0x1ec4 }, { 0x1ec6, 0x1ec6 }, - { 0x1ec8, 0x1ec8 }, { 0x1eca, 0x1eca }, { 0x1ecc, 0x1ecc }, - { 0x1ece, 0x1ece }, { 0x1ed0, 0x1ed0 }, { 0x1ed2, 0x1ed2 }, - { 0x1ed4, 0x1ed4 }, { 0x1ed6, 0x1ed6 }, { 0x1ed8, 0x1ed8 }, - { 0x1eda, 0x1eda }, { 0x1edc, 0x1edc }, { 0x1ede, 0x1ede }, - { 0x1ee0, 0x1ee0 }, { 0x1ee2, 0x1ee2 }, { 0x1ee4, 0x1ee4 }, - { 0x1ee6, 0x1ee6 }, { 0x1ee8, 0x1ee8 }, { 0x1eea, 0x1eea }, - { 0x1eec, 0x1eec }, { 0x1eee, 0x1eee }, { 0x1ef0, 0x1ef0 }, - { 0x1ef2, 0x1ef2 }, { 0x1ef4, 0x1ef4 }, { 0x1ef6, 0x1ef6 }, - { 0x1ef8, 0x1ef8 }, { 0x1f08, 0x1f0f }, { 0x1f18, 0x1f1d }, - { 0x1f28, 0x1f2f }, { 0x1f38, 0x1f3f }, { 0x1f48, 0x1f4d }, - { 0x1f59, 0x1f59 }, { 0x1f5b, 0x1f5b }, { 0x1f5d, 0x1f5d }, - { 0x1f5f, 0x1f5f }, { 0x1f68, 0x1f6f }, { 0x1fb8, 0x1fbb }, - { 0x1fc8, 0x1fcb }, { 0x1fd8, 0x1fdb }, { 0x1fe8, 0x1fec }, - { 0x1ff8, 0x1ffb }, { 0x2102, 0x2102 }, { 0x2107, 0x2107 }, - { 0x210b, 0x210d }, { 0x2110, 0x2112 }, { 0x2115, 0x2115 }, - { 0x2119, 0x211d }, { 0x2124, 0x2124 }, { 0x2126, 0x2126 }, - { 0x2128, 0x2128 }, { 0x212a, 0x212d }, { 0x2130, 0x2131 }, - { 0x2133, 0x2133 }, { 0x213e, 0x213f }, { 0x2145, 0x2145 }, - { 0x2c00, 0x2c2e }, { 0x2c80, 0x2c80 }, { 0x2c82, 0x2c82 }, - { 0x2c84, 0x2c84 }, { 0x2c86, 0x2c86 }, { 0x2c88, 0x2c88 }, - { 0x2c8a, 0x2c8a }, { 0x2c8c, 0x2c8c }, { 0x2c8e, 0x2c8e }, - { 0x2c90, 0x2c90 }, { 0x2c92, 0x2c92 }, { 0x2c94, 0x2c94 }, - { 0x2c96, 0x2c96 }, { 0x2c98, 0x2c98 }, { 0x2c9a, 0x2c9a }, - { 0x2c9c, 0x2c9c }, { 0x2c9e, 0x2c9e }, { 0x2ca0, 0x2ca0 }, - { 0x2ca2, 0x2ca2 }, { 0x2ca4, 0x2ca4 }, { 0x2ca6, 0x2ca6 }, - { 0x2ca8, 0x2ca8 }, { 0x2caa, 0x2caa }, { 0x2cac, 0x2cac }, - { 0x2cae, 0x2cae }, { 0x2cb0, 0x2cb0 }, { 0x2cb2, 0x2cb2 }, - { 0x2cb4, 0x2cb4 }, { 0x2cb6, 0x2cb6 }, { 0x2cb8, 0x2cb8 }, - { 0x2cba, 0x2cba }, { 0x2cbc, 0x2cbc }, { 0x2cbe, 0x2cbe }, - { 0x2cc0, 0x2cc0 }, { 0x2cc2, 0x2cc2 }, { 0x2cc4, 0x2cc4 }, - { 0x2cc6, 0x2cc6 }, { 0x2cc8, 0x2cc8 }, { 0x2cca, 0x2cca }, - { 0x2ccc, 0x2ccc }, { 0x2cce, 0x2cce }, { 0x2cd0, 0x2cd0 }, - { 0x2cd2, 0x2cd2 }, { 0x2cd4, 0x2cd4 }, { 0x2cd6, 0x2cd6 }, - { 0x2cd8, 0x2cd8 }, { 0x2cda, 0x2cda }, { 0x2cdc, 0x2cdc }, - { 0x2cde, 0x2cde }, { 0x2ce0, 0x2ce0 }, { 0x2ce2, 0x2ce2 }, - { 0xff21, 0xff3a }, { 0x10400, 0x10427 }, { 0x1d400, 0x1d419 }, - { 0x1d434, 0x1d44d }, { 0x1d468, 0x1d481 }, { 0x1d49c, 0x1d49c }, - { 0x1d49e, 0x1d49f }, { 0x1d4a2, 0x1d4a2 }, { 0x1d4a5, 0x1d4a6 }, - { 0x1d4a9, 0x1d4ac }, { 0x1d4ae, 0x1d4b5 }, { 0x1d4d0, 0x1d4e9 }, - { 0x1d504, 0x1d505 }, { 0x1d507, 0x1d50a }, { 0x1d50d, 0x1d514 }, - { 0x1d516, 0x1d51c }, { 0x1d538, 0x1d539 }, { 0x1d53b, 0x1d53e }, - { 0x1d540, 0x1d544 }, { 0x1d546, 0x1d546 }, { 0x1d54a, 0x1d550 }, - { 0x1d56c, 0x1d585 }, { 0x1d5a0, 0x1d5b9 }, { 0x1d5d4, 0x1d5ed }, - { 0x1d608, 0x1d621 }, { 0x1d63c, 0x1d655 }, { 0x1d670, 0x1d689 }, - { 0x1d6a8, 0x1d6c0 }, { 0x1d6e2, 0x1d6fa }, { 0x1d71c, 0x1d734 }, - { 0x1d756, 0x1d76e }, { 0x1d790, 0x1d7a8 } + { 0x0041, 0x005a, }, { 0x00c0, 0x00d6, }, { 0x00d8, 0x00de, }, + { 0x0100, 0x0100, }, { 0x0102, 0x0102, }, { 0x0104, 0x0104, }, + { 0x0106, 0x0106, }, { 0x0108, 0x0108, }, { 0x010a, 0x010a, }, + { 0x010c, 0x010c, }, { 0x010e, 0x010e, }, { 0x0110, 0x0110, }, + { 0x0112, 0x0112, }, { 0x0114, 0x0114, }, { 0x0116, 0x0116, }, + { 0x0118, 0x0118, }, { 0x011a, 0x011a, }, { 0x011c, 0x011c, }, + { 0x011e, 0x011e, }, { 0x0120, 0x0120, }, { 0x0122, 0x0122, }, + { 0x0124, 0x0124, }, { 0x0126, 0x0126, }, { 0x0128, 0x0128, }, + { 0x012a, 0x012a, }, { 0x012c, 0x012c, }, { 0x012e, 0x012e, }, + { 0x0130, 0x0130, }, { 0x0132, 0x0132, }, { 0x0134, 0x0134, }, + { 0x0136, 0x0136, }, { 0x0139, 0x0139, }, { 0x013b, 0x013b, }, + { 0x013d, 0x013d, }, { 0x013f, 0x013f, }, { 0x0141, 0x0141, }, + { 0x0143, 0x0143, }, { 0x0145, 0x0145, }, { 0x0147, 0x0147, }, + { 0x014a, 0x014a, }, { 0x014c, 0x014c, }, { 0x014e, 0x014e, }, + { 0x0150, 0x0150, }, { 0x0152, 0x0152, }, { 0x0154, 0x0154, }, + { 0x0156, 0x0156, }, { 0x0158, 0x0158, }, { 0x015a, 0x015a, }, + { 0x015c, 0x015c, }, { 0x015e, 0x015e, }, { 0x0160, 0x0160, }, + { 0x0162, 0x0162, }, { 0x0164, 0x0164, }, { 0x0166, 0x0166, }, + { 0x0168, 0x0168, }, { 0x016a, 0x016a, }, { 0x016c, 0x016c, }, + { 0x016e, 0x016e, }, { 0x0170, 0x0170, }, { 0x0172, 0x0172, }, + { 0x0174, 0x0174, }, { 0x0176, 0x0176, }, { 0x0178, 0x0179, }, + { 0x017b, 0x017b, }, { 0x017d, 0x017d, }, { 0x0181, 0x0182, }, + { 0x0184, 0x0184, }, { 0x0186, 0x0187, }, { 0x0189, 0x018b, }, + { 0x018e, 0x0191, }, { 0x0193, 0x0194, }, { 0x0196, 0x0198, }, + { 0x019c, 0x019d, }, { 0x019f, 0x01a0, }, { 0x01a2, 0x01a2, }, + { 0x01a4, 0x01a4, }, { 0x01a6, 0x01a7, }, { 0x01a9, 0x01a9, }, + { 0x01ac, 0x01ac, }, { 0x01ae, 0x01af, }, { 0x01b1, 0x01b3, }, + { 0x01b5, 0x01b5, }, { 0x01b7, 0x01b8, }, { 0x01bc, 0x01bc, }, + { 0x01c4, 0x01c4, }, { 0x01c7, 0x01c7, }, { 0x01ca, 0x01ca, }, + { 0x01cd, 0x01cd, }, { 0x01cf, 0x01cf, }, { 0x01d1, 0x01d1, }, + { 0x01d3, 0x01d3, }, { 0x01d5, 0x01d5, }, { 0x01d7, 0x01d7, }, + { 0x01d9, 0x01d9, }, { 0x01db, 0x01db, }, { 0x01de, 0x01de, }, + { 0x01e0, 0x01e0, }, { 0x01e2, 0x01e2, }, { 0x01e4, 0x01e4, }, + { 0x01e6, 0x01e6, }, { 0x01e8, 0x01e8, }, { 0x01ea, 0x01ea, }, + { 0x01ec, 0x01ec, }, { 0x01ee, 0x01ee, }, { 0x01f1, 0x01f1, }, + { 0x01f4, 0x01f4, }, { 0x01f6, 0x01f8, }, { 0x01fa, 0x01fa, }, + { 0x01fc, 0x01fc, }, { 0x01fe, 0x01fe, }, { 0x0200, 0x0200, }, + { 0x0202, 0x0202, }, { 0x0204, 0x0204, }, { 0x0206, 0x0206, }, + { 0x0208, 0x0208, }, { 0x020a, 0x020a, }, { 0x020c, 0x020c, }, + { 0x020e, 0x020e, }, { 0x0210, 0x0210, }, { 0x0212, 0x0212, }, + { 0x0214, 0x0214, }, { 0x0216, 0x0216, }, { 0x0218, 0x0218, }, + { 0x021a, 0x021a, }, { 0x021c, 0x021c, }, { 0x021e, 0x021e, }, + { 0x0220, 0x0220, }, { 0x0222, 0x0222, }, { 0x0224, 0x0224, }, + { 0x0226, 0x0226, }, { 0x0228, 0x0228, }, { 0x022a, 0x022a, }, + { 0x022c, 0x022c, }, { 0x022e, 0x022e, }, { 0x0230, 0x0230, }, + { 0x0232, 0x0232, }, { 0x023a, 0x023b, }, { 0x023d, 0x023e, }, + { 0x0241, 0x0241, }, { 0x0243, 0x0246, }, { 0x0248, 0x0248, }, + { 0x024a, 0x024a, }, { 0x024c, 0x024c, }, { 0x024e, 0x024e, }, + { 0x0370, 0x0370, }, { 0x0372, 0x0372, }, { 0x0376, 0x0376, }, + { 0x037f, 0x037f, }, { 0x0386, 0x0386, }, { 0x0388, 0x038a, }, + { 0x038c, 0x038c, }, { 0x038e, 0x038f, }, { 0x0391, 0x03a1, }, + { 0x03a3, 0x03ab, }, { 0x03cf, 0x03cf, }, { 0x03d2, 0x03d4, }, + { 0x03d8, 0x03d8, }, { 0x03da, 0x03da, }, { 0x03dc, 0x03dc, }, + { 0x03de, 0x03de, }, { 0x03e0, 0x03e0, }, { 0x03e2, 0x03e2, }, + { 0x03e4, 0x03e4, }, { 0x03e6, 0x03e6, }, { 0x03e8, 0x03e8, }, + { 0x03ea, 0x03ea, }, { 0x03ec, 0x03ec, }, { 0x03ee, 0x03ee, }, + { 0x03f4, 0x03f4, }, { 0x03f7, 0x03f7, }, { 0x03f9, 0x03fa, }, + { 0x03fd, 0x042f, }, { 0x0460, 0x0460, }, { 0x0462, 0x0462, }, + { 0x0464, 0x0464, }, { 0x0466, 0x0466, }, { 0x0468, 0x0468, }, + { 0x046a, 0x046a, }, { 0x046c, 0x046c, }, { 0x046e, 0x046e, }, + { 0x0470, 0x0470, }, { 0x0472, 0x0472, }, { 0x0474, 0x0474, }, + { 0x0476, 0x0476, }, { 0x0478, 0x0478, }, { 0x047a, 0x047a, }, + { 0x047c, 0x047c, }, { 0x047e, 0x047e, }, { 0x0480, 0x0480, }, + { 0x048a, 0x048a, }, { 0x048c, 0x048c, }, { 0x048e, 0x048e, }, + { 0x0490, 0x0490, }, { 0x0492, 0x0492, }, { 0x0494, 0x0494, }, + { 0x0496, 0x0496, }, { 0x0498, 0x0498, }, { 0x049a, 0x049a, }, + { 0x049c, 0x049c, }, { 0x049e, 0x049e, }, { 0x04a0, 0x04a0, }, + { 0x04a2, 0x04a2, }, { 0x04a4, 0x04a4, }, { 0x04a6, 0x04a6, }, + { 0x04a8, 0x04a8, }, { 0x04aa, 0x04aa, }, { 0x04ac, 0x04ac, }, + { 0x04ae, 0x04ae, }, { 0x04b0, 0x04b0, }, { 0x04b2, 0x04b2, }, + { 0x04b4, 0x04b4, }, { 0x04b6, 0x04b6, }, { 0x04b8, 0x04b8, }, + { 0x04ba, 0x04ba, }, { 0x04bc, 0x04bc, }, { 0x04be, 0x04be, }, + { 0x04c0, 0x04c1, }, { 0x04c3, 0x04c3, }, { 0x04c5, 0x04c5, }, + { 0x04c7, 0x04c7, }, { 0x04c9, 0x04c9, }, { 0x04cb, 0x04cb, }, + { 0x04cd, 0x04cd, }, { 0x04d0, 0x04d0, }, { 0x04d2, 0x04d2, }, + { 0x04d4, 0x04d4, }, { 0x04d6, 0x04d6, }, { 0x04d8, 0x04d8, }, + { 0x04da, 0x04da, }, { 0x04dc, 0x04dc, }, { 0x04de, 0x04de, }, + { 0x04e0, 0x04e0, }, { 0x04e2, 0x04e2, }, { 0x04e4, 0x04e4, }, + { 0x04e6, 0x04e6, }, { 0x04e8, 0x04e8, }, { 0x04ea, 0x04ea, }, + { 0x04ec, 0x04ec, }, { 0x04ee, 0x04ee, }, { 0x04f0, 0x04f0, }, + { 0x04f2, 0x04f2, }, { 0x04f4, 0x04f4, }, { 0x04f6, 0x04f6, }, + { 0x04f8, 0x04f8, }, { 0x04fa, 0x04fa, }, { 0x04fc, 0x04fc, }, + { 0x04fe, 0x04fe, }, { 0x0500, 0x0500, }, { 0x0502, 0x0502, }, + { 0x0504, 0x0504, }, { 0x0506, 0x0506, }, { 0x0508, 0x0508, }, + { 0x050a, 0x050a, }, { 0x050c, 0x050c, }, { 0x050e, 0x050e, }, + { 0x0510, 0x0510, }, { 0x0512, 0x0512, }, { 0x0514, 0x0514, }, + { 0x0516, 0x0516, }, { 0x0518, 0x0518, }, { 0x051a, 0x051a, }, + { 0x051c, 0x051c, }, { 0x051e, 0x051e, }, { 0x0520, 0x0520, }, + { 0x0522, 0x0522, }, { 0x0524, 0x0524, }, { 0x0526, 0x0526, }, + { 0x0528, 0x0528, }, { 0x052a, 0x052a, }, { 0x052c, 0x052c, }, + { 0x052e, 0x052e, }, { 0x0531, 0x0556, }, { 0x10a0, 0x10c5, }, + { 0x10c7, 0x10c7, }, { 0x10cd, 0x10cd, }, { 0x13a0, 0x13f5, }, + { 0x1c90, 0x1cba, }, { 0x1cbd, 0x1cbf, }, { 0x1e00, 0x1e00, }, + { 0x1e02, 0x1e02, }, { 0x1e04, 0x1e04, }, { 0x1e06, 0x1e06, }, + { 0x1e08, 0x1e08, }, { 0x1e0a, 0x1e0a, }, { 0x1e0c, 0x1e0c, }, + { 0x1e0e, 0x1e0e, }, { 0x1e10, 0x1e10, }, { 0x1e12, 0x1e12, }, + { 0x1e14, 0x1e14, }, { 0x1e16, 0x1e16, }, { 0x1e18, 0x1e18, }, + { 0x1e1a, 0x1e1a, }, { 0x1e1c, 0x1e1c, }, { 0x1e1e, 0x1e1e, }, + { 0x1e20, 0x1e20, }, { 0x1e22, 0x1e22, }, { 0x1e24, 0x1e24, }, + { 0x1e26, 0x1e26, }, { 0x1e28, 0x1e28, }, { 0x1e2a, 0x1e2a, }, + { 0x1e2c, 0x1e2c, }, { 0x1e2e, 0x1e2e, }, { 0x1e30, 0x1e30, }, + { 0x1e32, 0x1e32, }, { 0x1e34, 0x1e34, }, { 0x1e36, 0x1e36, }, + { 0x1e38, 0x1e38, }, { 0x1e3a, 0x1e3a, }, { 0x1e3c, 0x1e3c, }, + { 0x1e3e, 0x1e3e, }, { 0x1e40, 0x1e40, }, { 0x1e42, 0x1e42, }, + { 0x1e44, 0x1e44, }, { 0x1e46, 0x1e46, }, { 0x1e48, 0x1e48, }, + { 0x1e4a, 0x1e4a, }, { 0x1e4c, 0x1e4c, }, { 0x1e4e, 0x1e4e, }, + { 0x1e50, 0x1e50, }, { 0x1e52, 0x1e52, }, { 0x1e54, 0x1e54, }, + { 0x1e56, 0x1e56, }, { 0x1e58, 0x1e58, }, { 0x1e5a, 0x1e5a, }, + { 0x1e5c, 0x1e5c, }, { 0x1e5e, 0x1e5e, }, { 0x1e60, 0x1e60, }, + { 0x1e62, 0x1e62, }, { 0x1e64, 0x1e64, }, { 0x1e66, 0x1e66, }, + { 0x1e68, 0x1e68, }, { 0x1e6a, 0x1e6a, }, { 0x1e6c, 0x1e6c, }, + { 0x1e6e, 0x1e6e, }, { 0x1e70, 0x1e70, }, { 0x1e72, 0x1e72, }, + { 0x1e74, 0x1e74, }, { 0x1e76, 0x1e76, }, { 0x1e78, 0x1e78, }, + { 0x1e7a, 0x1e7a, }, { 0x1e7c, 0x1e7c, }, { 0x1e7e, 0x1e7e, }, + { 0x1e80, 0x1e80, }, { 0x1e82, 0x1e82, }, { 0x1e84, 0x1e84, }, + { 0x1e86, 0x1e86, }, { 0x1e88, 0x1e88, }, { 0x1e8a, 0x1e8a, }, + { 0x1e8c, 0x1e8c, }, { 0x1e8e, 0x1e8e, }, { 0x1e90, 0x1e90, }, + { 0x1e92, 0x1e92, }, { 0x1e94, 0x1e94, }, { 0x1e9e, 0x1e9e, }, + { 0x1ea0, 0x1ea0, }, { 0x1ea2, 0x1ea2, }, { 0x1ea4, 0x1ea4, }, + { 0x1ea6, 0x1ea6, }, { 0x1ea8, 0x1ea8, }, { 0x1eaa, 0x1eaa, }, + { 0x1eac, 0x1eac, }, { 0x1eae, 0x1eae, }, { 0x1eb0, 0x1eb0, }, + { 0x1eb2, 0x1eb2, }, { 0x1eb4, 0x1eb4, }, { 0x1eb6, 0x1eb6, }, + { 0x1eb8, 0x1eb8, }, { 0x1eba, 0x1eba, }, { 0x1ebc, 0x1ebc, }, + { 0x1ebe, 0x1ebe, }, { 0x1ec0, 0x1ec0, }, { 0x1ec2, 0x1ec2, }, + { 0x1ec4, 0x1ec4, }, { 0x1ec6, 0x1ec6, }, { 0x1ec8, 0x1ec8, }, + { 0x1eca, 0x1eca, }, { 0x1ecc, 0x1ecc, }, { 0x1ece, 0x1ece, }, + { 0x1ed0, 0x1ed0, }, { 0x1ed2, 0x1ed2, }, { 0x1ed4, 0x1ed4, }, + { 0x1ed6, 0x1ed6, }, { 0x1ed8, 0x1ed8, }, { 0x1eda, 0x1eda, }, + { 0x1edc, 0x1edc, }, { 0x1ede, 0x1ede, }, { 0x1ee0, 0x1ee0, }, + { 0x1ee2, 0x1ee2, }, { 0x1ee4, 0x1ee4, }, { 0x1ee6, 0x1ee6, }, + { 0x1ee8, 0x1ee8, }, { 0x1eea, 0x1eea, }, { 0x1eec, 0x1eec, }, + { 0x1eee, 0x1eee, }, { 0x1ef0, 0x1ef0, }, { 0x1ef2, 0x1ef2, }, + { 0x1ef4, 0x1ef4, }, { 0x1ef6, 0x1ef6, }, { 0x1ef8, 0x1ef8, }, + { 0x1efa, 0x1efa, }, { 0x1efc, 0x1efc, }, { 0x1efe, 0x1efe, }, + { 0x1f08, 0x1f0f, }, { 0x1f18, 0x1f1d, }, { 0x1f28, 0x1f2f, }, + { 0x1f38, 0x1f3f, }, { 0x1f48, 0x1f4d, }, { 0x1f59, 0x1f59, }, + { 0x1f5b, 0x1f5b, }, { 0x1f5d, 0x1f5d, }, { 0x1f5f, 0x1f5f, }, + { 0x1f68, 0x1f6f, }, { 0x1fb8, 0x1fbb, }, { 0x1fc8, 0x1fcb, }, + { 0x1fd8, 0x1fdb, }, { 0x1fe8, 0x1fec, }, { 0x1ff8, 0x1ffb, }, + { 0x2102, 0x2102, }, { 0x2107, 0x2107, }, { 0x210b, 0x210d, }, + { 0x2110, 0x2112, }, { 0x2115, 0x2115, }, { 0x2119, 0x211d, }, + { 0x2124, 0x2124, }, { 0x2126, 0x2126, }, { 0x2128, 0x2128, }, + { 0x212a, 0x212d, }, { 0x2130, 0x2133, }, { 0x213e, 0x213f, }, + { 0x2145, 0x2145, }, { 0x2160, 0x216f, }, { 0x2183, 0x2183, }, + { 0x24b6, 0x24cf, }, { 0x2c00, 0x2c2f, }, { 0x2c60, 0x2c60, }, + { 0x2c62, 0x2c64, }, { 0x2c67, 0x2c67, }, { 0x2c69, 0x2c69, }, + { 0x2c6b, 0x2c6b, }, { 0x2c6d, 0x2c70, }, { 0x2c72, 0x2c72, }, + { 0x2c75, 0x2c75, }, { 0x2c7e, 0x2c80, }, { 0x2c82, 0x2c82, }, + { 0x2c84, 0x2c84, }, { 0x2c86, 0x2c86, }, { 0x2c88, 0x2c88, }, + { 0x2c8a, 0x2c8a, }, { 0x2c8c, 0x2c8c, }, { 0x2c8e, 0x2c8e, }, + { 0x2c90, 0x2c90, }, { 0x2c92, 0x2c92, }, { 0x2c94, 0x2c94, }, + { 0x2c96, 0x2c96, }, { 0x2c98, 0x2c98, }, { 0x2c9a, 0x2c9a, }, + { 0x2c9c, 0x2c9c, }, { 0x2c9e, 0x2c9e, }, { 0x2ca0, 0x2ca0, }, + { 0x2ca2, 0x2ca2, }, { 0x2ca4, 0x2ca4, }, { 0x2ca6, 0x2ca6, }, + { 0x2ca8, 0x2ca8, }, { 0x2caa, 0x2caa, }, { 0x2cac, 0x2cac, }, + { 0x2cae, 0x2cae, }, { 0x2cb0, 0x2cb0, }, { 0x2cb2, 0x2cb2, }, + { 0x2cb4, 0x2cb4, }, { 0x2cb6, 0x2cb6, }, { 0x2cb8, 0x2cb8, }, + { 0x2cba, 0x2cba, }, { 0x2cbc, 0x2cbc, }, { 0x2cbe, 0x2cbe, }, + { 0x2cc0, 0x2cc0, }, { 0x2cc2, 0x2cc2, }, { 0x2cc4, 0x2cc4, }, + { 0x2cc6, 0x2cc6, }, { 0x2cc8, 0x2cc8, }, { 0x2cca, 0x2cca, }, + { 0x2ccc, 0x2ccc, }, { 0x2cce, 0x2cce, }, { 0x2cd0, 0x2cd0, }, + { 0x2cd2, 0x2cd2, }, { 0x2cd4, 0x2cd4, }, { 0x2cd6, 0x2cd6, }, + { 0x2cd8, 0x2cd8, }, { 0x2cda, 0x2cda, }, { 0x2cdc, 0x2cdc, }, + { 0x2cde, 0x2cde, }, { 0x2ce0, 0x2ce0, }, { 0x2ce2, 0x2ce2, }, + { 0x2ceb, 0x2ceb, }, { 0x2ced, 0x2ced, }, { 0x2cf2, 0x2cf2, }, + { 0xa640, 0xa640, }, { 0xa642, 0xa642, }, { 0xa644, 0xa644, }, + { 0xa646, 0xa646, }, { 0xa648, 0xa648, }, { 0xa64a, 0xa64a, }, + { 0xa64c, 0xa64c, }, { 0xa64e, 0xa64e, }, { 0xa650, 0xa650, }, + { 0xa652, 0xa652, }, { 0xa654, 0xa654, }, { 0xa656, 0xa656, }, + { 0xa658, 0xa658, }, { 0xa65a, 0xa65a, }, { 0xa65c, 0xa65c, }, + { 0xa65e, 0xa65e, }, { 0xa660, 0xa660, }, { 0xa662, 0xa662, }, + { 0xa664, 0xa664, }, { 0xa666, 0xa666, }, { 0xa668, 0xa668, }, + { 0xa66a, 0xa66a, }, { 0xa66c, 0xa66c, }, { 0xa680, 0xa680, }, + { 0xa682, 0xa682, }, { 0xa684, 0xa684, }, { 0xa686, 0xa686, }, + { 0xa688, 0xa688, }, { 0xa68a, 0xa68a, }, { 0xa68c, 0xa68c, }, + { 0xa68e, 0xa68e, }, { 0xa690, 0xa690, }, { 0xa692, 0xa692, }, + { 0xa694, 0xa694, }, { 0xa696, 0xa696, }, { 0xa698, 0xa698, }, + { 0xa69a, 0xa69a, }, { 0xa722, 0xa722, }, { 0xa724, 0xa724, }, + { 0xa726, 0xa726, }, { 0xa728, 0xa728, }, { 0xa72a, 0xa72a, }, + { 0xa72c, 0xa72c, }, { 0xa72e, 0xa72e, }, { 0xa732, 0xa732, }, + { 0xa734, 0xa734, }, { 0xa736, 0xa736, }, { 0xa738, 0xa738, }, + { 0xa73a, 0xa73a, }, { 0xa73c, 0xa73c, }, { 0xa73e, 0xa73e, }, + { 0xa740, 0xa740, }, { 0xa742, 0xa742, }, { 0xa744, 0xa744, }, + { 0xa746, 0xa746, }, { 0xa748, 0xa748, }, { 0xa74a, 0xa74a, }, + { 0xa74c, 0xa74c, }, { 0xa74e, 0xa74e, }, { 0xa750, 0xa750, }, + { 0xa752, 0xa752, }, { 0xa754, 0xa754, }, { 0xa756, 0xa756, }, + { 0xa758, 0xa758, }, { 0xa75a, 0xa75a, }, { 0xa75c, 0xa75c, }, + { 0xa75e, 0xa75e, }, { 0xa760, 0xa760, }, { 0xa762, 0xa762, }, + { 0xa764, 0xa764, }, { 0xa766, 0xa766, }, { 0xa768, 0xa768, }, + { 0xa76a, 0xa76a, }, { 0xa76c, 0xa76c, }, { 0xa76e, 0xa76e, }, + { 0xa779, 0xa779, }, { 0xa77b, 0xa77b, }, { 0xa77d, 0xa77e, }, + { 0xa780, 0xa780, }, { 0xa782, 0xa782, }, { 0xa784, 0xa784, }, + { 0xa786, 0xa786, }, { 0xa78b, 0xa78b, }, { 0xa78d, 0xa78d, }, + { 0xa790, 0xa790, }, { 0xa792, 0xa792, }, { 0xa796, 0xa796, }, + { 0xa798, 0xa798, }, { 0xa79a, 0xa79a, }, { 0xa79c, 0xa79c, }, + { 0xa79e, 0xa79e, }, { 0xa7a0, 0xa7a0, }, { 0xa7a2, 0xa7a2, }, + { 0xa7a4, 0xa7a4, }, { 0xa7a6, 0xa7a6, }, { 0xa7a8, 0xa7a8, }, + { 0xa7aa, 0xa7ae, }, { 0xa7b0, 0xa7b4, }, { 0xa7b6, 0xa7b6, }, + { 0xa7b8, 0xa7b8, }, { 0xa7ba, 0xa7ba, }, { 0xa7bc, 0xa7bc, }, + { 0xa7be, 0xa7be, }, { 0xa7c0, 0xa7c0, }, { 0xa7c2, 0xa7c2, }, + { 0xa7c4, 0xa7c7, }, { 0xa7c9, 0xa7c9, }, { 0xa7d0, 0xa7d0, }, + { 0xa7d6, 0xa7d6, }, { 0xa7d8, 0xa7d8, }, { 0xa7f5, 0xa7f5, }, + { 0xff21, 0xff3a, }, { 0x10400, 0x10427, }, { 0x104b0, 0x104d3, }, + { 0x10570, 0x1057a, }, { 0x1057c, 0x1058a, }, { 0x1058c, 0x10592, }, + { 0x10594, 0x10595, }, { 0x10c80, 0x10cb2, }, { 0x118a0, 0x118bf, }, + { 0x16e40, 0x16e5f, }, { 0x1d400, 0x1d419, }, { 0x1d434, 0x1d44d, }, + { 0x1d468, 0x1d481, }, { 0x1d49c, 0x1d49c, }, { 0x1d49e, 0x1d49f, }, + { 0x1d4a2, 0x1d4a2, }, { 0x1d4a5, 0x1d4a6, }, { 0x1d4a9, 0x1d4ac, }, + { 0x1d4ae, 0x1d4b5, }, { 0x1d4d0, 0x1d4e9, }, { 0x1d504, 0x1d505, }, + { 0x1d507, 0x1d50a, }, { 0x1d50d, 0x1d514, }, { 0x1d516, 0x1d51c, }, + { 0x1d538, 0x1d539, }, { 0x1d53b, 0x1d53e, }, { 0x1d540, 0x1d544, }, + { 0x1d546, 0x1d546, }, { 0x1d54a, 0x1d550, }, { 0x1d56c, 0x1d585, }, + { 0x1d5a0, 0x1d5b9, }, { 0x1d5d4, 0x1d5ed, }, { 0x1d608, 0x1d621, }, + { 0x1d63c, 0x1d655, }, { 0x1d670, 0x1d689, }, { 0x1d6a8, 0x1d6c0, }, + { 0x1d6e2, 0x1d6fa, }, { 0x1d71c, 0x1d734, }, { 0x1d756, 0x1d76e, }, + { 0x1d790, 0x1d7a8, }, { 0x1d7ca, 0x1d7ca, }, { 0x1e900, 0x1e921, }, + { 0x1f130, 0x1f149, }, { 0x1f150, 0x1f169, }, { 0x1f170, 0x1f189, }, }}; return utils::table_lookup(upper_table, c); diff --git a/include/peelo/unicode/ctype/tolower.hpp b/include/peelo/unicode/ctype/tolower.hpp index d4411c0..e6c0cf3 100644 --- a/include/peelo/unicode/ctype/tolower.hpp +++ b/include/peelo/unicode/ctype/tolower.hpp @@ -26,6 +26,8 @@ */ #pragma once +#include + namespace peelo::unicode::ctype { /** @@ -34,74 +36,474 @@ namespace peelo::unicode::ctype inline char32_t tolower(char32_t c) { + static const std::unordered_map tolower_map = + {{ + { 125216, 125250 }, { 125214, 125248 }, { 125212, 125246 }, + { 125210, 125244 }, { 125206, 125240 }, { 71871, 71903 }, + { 71870, 71902 }, { 71869, 71901 }, { 71868, 71900 }, + { 71867, 71899 }, { 71866, 71898 }, { 71865, 71897 }, + { 71864, 71896 }, { 71863, 71895 }, { 71861, 71893 }, + { 71859, 71891 }, { 71857, 71889 }, { 71855, 71887 }, + { 71853, 71885 }, { 71851, 71883 }, { 71849, 71881 }, + { 71847, 71879 }, { 71845, 71877 }, { 71843, 71875 }, + { 71841, 71873 }, { 68782, 68846 }, { 68780, 68844 }, + { 68774, 68838 }, { 68772, 68836 }, { 68770, 68834 }, + { 68764, 68828 }, { 68762, 68826 }, { 68758, 68822 }, + { 68750, 68814 }, { 66964, 67003 }, { 66962, 67001 }, + { 66961, 67000 }, { 66960, 66999 }, { 66959, 66998 }, + { 66958, 66997 }, { 66957, 66996 }, { 66953, 66992 }, + { 66951, 66990 }, { 66949, 66988 }, { 66948, 66987 }, + { 66947, 66986 }, { 66946, 66985 }, { 66945, 66984 }, + { 66944, 66983 }, { 66943, 66982 }, { 66942, 66981 }, + { 66941, 66980 }, { 66940, 66979 }, { 66770, 66810 }, + { 66768, 66808 }, { 66766, 66806 }, { 66764, 66804 }, + { 66762, 66802 }, { 66761, 66801 }, { 66760, 66800 }, + { 66759, 66799 }, { 66758, 66798 }, { 66757, 66797 }, + { 66756, 66796 }, { 66755, 66795 }, { 66754, 66794 }, + { 66752, 66792 }, { 66750, 66790 }, { 66748, 66788 }, + { 66746, 66786 }, { 66744, 66784 }, { 66742, 66782 }, + { 66740, 66780 }, { 66738, 66778 }, { 66736, 66776 }, + { 66599, 66639 }, { 66598, 66638 }, { 66597, 66637 }, + { 66596, 66636 }, { 66595, 66635 }, { 66594, 66634 }, + { 66593, 66633 }, { 66592, 66632 }, { 66591, 66631 }, + { 66590, 66630 }, { 66589, 66629 }, { 66588, 66628 }, + { 66587, 66627 }, { 66585, 66625 }, { 66583, 66623 }, + { 66581, 66621 }, { 66579, 66619 }, { 66574, 66614 }, + { 66572, 66612 }, { 66571, 66611 }, { 66568, 66608 }, + { 66565, 66605 }, { 66564, 66604 }, { 66563, 66603 }, + { 66562, 66602 }, { 66561, 66601 }, { 66560, 66600 }, + { 65338, 65370 }, { 65337, 65369 }, { 65336, 65368 }, + { 65335, 65367 }, { 65334, 65366 }, { 65333, 65365 }, + { 65332, 65364 }, { 65331, 65363 }, { 125194, 125228 }, + { 7344, 4336 }, { 125192, 125226 }, { 7342, 4334 }, + { 125190, 125224 }, { 7340, 4332 }, { 68755, 68819 }, + { 42828, 42829 }, { 125188, 125222 }, { 7338, 4330 }, + { 125186, 125220 }, { 7336, 4328 }, { 125184, 125218 }, + { 7334, 4326 }, { 68749, 68813 }, { 42822, 42823 }, + { 7332, 4324 }, { 7330, 4322 }, { 7328, 4320 }, + { 7326, 4318 }, { 7324, 4316 }, { 68745, 68809 }, + { 42818, 42819 }, { 5106, 5114 }, { 7322, 4314 }, + { 7320, 4312 }, { 7318, 4310 }, { 4266, 11530 }, + { 4259, 11523 }, { 66928, 66967 }, { 932, 964 }, + { 4257, 11521 }, { 7316, 4308 }, { 68737, 68801 }, + { 42810, 42811 }, { 5098, 43962 }, { 1365, 1413 }, + { 7314, 4306 }, { 42808, 42809 }, { 5096, 43960 }, + { 1363, 1411 }, { 7312, 4304 }, { 42806, 42807 }, + { 5094, 43958 }, { 1361, 1409 }, { 1359, 1407 }, + { 66938, 66977 }, { 8013, 8005 }, { 1357, 1405 }, + { 66936, 66975 }, { 8011, 8003 }, { 1355, 1403 }, + { 1353, 1401 }, { 1351, 1399 }, { 1349, 1397 }, + { 1347, 1395 }, { 1345, 1393 }, { 1343, 1391 }, + { 1341, 1389 }, { 1339, 1387 }, { 1337, 1385 }, + { 1336, 1384 }, { 1335, 1383 }, { 1334, 1382 }, + { 1333, 1381 }, { 1332, 1380 }, { 1331, 1379 }, + { 1330, 1378 }, { 221, 253 }, { 11311, 11359 }, + { 1329, 1377 }, { 7983, 7975 }, { 11310, 11358 }, + { 1326, 1327 }, { 217, 249 }, { 7980, 7972 }, + { 11307, 11355 }, { 1324, 1325 }, { 7978, 7970 }, + { 11305, 11353 }, { 256, 257 }, { 7327, 4319 }, + { 1322, 1323 }, { 213, 245 }, { 11303, 11351 }, + { 7325, 4317 }, { 1320, 1321 }, { 211, 243 }, + { 11301, 11349 }, { 7323, 4315 }, { 1318, 1319 }, + { 209, 241 }, { 11299, 11347 }, { 1316, 1317 }, + { 207, 239 }, { 11297, 11345 }, { 1314, 1315 }, + { 205, 237 }, { 93790, 93822 }, { 11295, 11343 }, + { 1312, 1313 }, { 203, 235 }, { 93788, 93820 }, + { 11293, 11341 }, { 1310, 1311 }, { 201, 233 }, + { 7964, 7956 }, { 93786, 93818 }, { 11291, 11339 }, + { 1308, 1309 }, { 199, 231 }, { 7962, 7954 }, + { 93784, 93816 }, { 11289, 11337 }, { 1306, 1307 }, + { 197, 229 }, { 7960, 7952 }, { 93782, 93814 }, + { 11287, 11335 }, { 1272, 1273 }, { 7926, 7927 }, + { 1270, 1271 }, { 7924, 7925 }, { 1268, 1269 }, + { 7922, 7923 }, { 1266, 1267 }, { 7920, 7921 }, + { 1264, 1265 }, { 7918, 7919 }, { 1262, 1263 }, + { 7916, 7917 }, { 1260, 1261 }, { 7914, 7915 }, + { 1258, 1259 }, { 7912, 7913 }, { 1256, 1257 }, + { 7910, 7911 }, { 1254, 1255 }, { 7908, 7909 }, + { 1252, 1253 }, { 7906, 7907 }, { 1250, 1251 }, + { 7904, 7905 }, { 1248, 1249 }, { 7902, 7903 }, + { 1246, 1247 }, { 7900, 7901 }, { 1244, 1245 }, + { 7898, 7899 }, { 1242, 1243 }, { 7896, 7897 }, + { 1240, 1241 }, { 7894, 7895 }, { 1238, 1239 }, + { 7892, 7893 }, { 1236, 1237 }, { 7890, 7891 }, + { 1234, 1235 }, { 7888, 7889 }, { 1232, 1233 }, + { 7886, 7887 }, { 1229, 1230 }, { 1227, 1228 }, + { 1225, 1226 }, { 1223, 1224 }, { 1221, 1222 }, + { 1219, 1220 }, { 1217, 1218 }, { 1216, 1231 }, + { 7870, 7871 }, { 1214, 1215 }, { 7868, 7869 }, + { 1212, 1213 }, { 7866, 7867 }, { 1210, 1211 }, + { 7864, 7865 }, { 1208, 1209 }, { 7862, 7863 }, + { 1206, 1207 }, { 7860, 7861 }, { 7696, 7697 }, + { 1042, 1074 }, { 1204, 1205 }, { 7858, 7859 }, + { 7694, 7695 }, { 1040, 1072 }, { 1202, 1203 }, + { 7856, 7857 }, { 7692, 7693 }, { 1038, 1118 }, + { 1200, 1201 }, { 7854, 7855 }, { 7690, 7691 }, + { 1036, 1116 }, { 1198, 1199 }, { 7852, 7853 }, + { 7688, 7689 }, { 1034, 1114 }, { 1196, 1197 }, + { 7850, 7851 }, { 7686, 7687 }, { 1032, 1112 }, + { 1194, 1195 }, { 7848, 7849 }, { 7684, 7685 }, + { 1030, 1110 }, { 1192, 1193 }, { 66771, 66811 }, + { 7846, 7847 }, { 7682, 7683 }, { 1028, 1108 }, + { 1190, 1191 }, { 66769, 66809 }, { 7844, 7845 }, + { 7680, 7681 }, { 1026, 1106 }, { 1188, 1189 }, + { 66767, 66807 }, { 7842, 7843 }, { 1186, 1187 }, + { 66765, 66805 }, { 7840, 7841 }, { 1184, 1185 }, + { 66763, 66803 }, { 7838, 223 }, { 1182, 1183 }, + { 73, 305 }, { 1180, 1181 }, { 1178, 1179 }, + { 1176, 1177 }, { 1174, 1175 }, { 66753, 66793 }, + { 7828, 7829 }, { 1172, 1173 }, { 66751, 66791 }, + { 7826, 7827 }, { 1170, 1171 }, { 66749, 66789 }, + { 7824, 7825 }, { 1168, 1169 }, { 66747, 66787 }, + { 7822, 7823 }, { 1166, 1167 }, { 66745, 66785 }, + { 7820, 7821 }, { 1164, 1165 }, { 66743, 66783 }, + { 7818, 7819 }, { 1162, 1163 }, { 66741, 66781 }, + { 7816, 7817 }, { 71862, 71894 }, { 1152, 1153 }, + { 7806, 7807 }, { 71860, 71892 }, { 1150, 1151 }, + { 7804, 7805 }, { 71858, 71890 }, { 1148, 1149 }, + { 7802, 7803 }, { 71856, 71888 }, { 1146, 1147 }, + { 7800, 7801 }, { 71854, 71886 }, { 1144, 1145 }, + { 7798, 7799 }, { 71852, 71884 }, { 1142, 1143 }, + { 7796, 7797 }, { 71850, 71882 }, { 1140, 1141 }, + { 7794, 7795 }, { 71848, 71880 }, { 1138, 1139 }, + { 7792, 7793 }, { 71846, 71878 }, { 1136, 1137 }, + { 7790, 7791 }, { 71844, 71876 }, { 1134, 1135 }, + { 7788, 7789 }, { 71842, 71874 }, { 1132, 1133 }, + { 7786, 7787 }, { 71840, 71872 }, { 1130, 1131 }, + { 7784, 7785 }, { 1128, 1129 }, { 7782, 7783 }, + { 1126, 1127 }, { 7780, 7781 }, { 1124, 1125 }, + { 7778, 7779 }, { 1070, 1102 }, { 7724, 7725 }, + { 7722, 7723 }, { 7720, 7721 }, { 1064, 1096 }, + { 7718, 7719 }, { 1062, 1094 }, { 7716, 7717 }, + { 1060, 1092 }, { 7714, 7715 }, { 1058, 1090 }, + { 7712, 7713 }, { 1056, 1088 }, { 7710, 7711 }, + { 1054, 1086 }, { 7708, 7709 }, { 7706, 7707 }, + { 7704, 7705 }, { 1048, 1080 }, { 7702, 7703 }, + { 1046, 1078 }, { 7700, 7701 }, { 4288, 11552 }, + { 4286, 11550 }, { 4285, 11549 }, { 1039, 1119 }, + { 4283, 11547 }, { 1037, 1117 }, { 4282, 11546 }, + { 4280, 11544 }, { 4278, 11542 }, { 4276, 11540 }, + { 4274, 11538 }, { 42572, 42573 }, { 42570, 42571 }, + { 8185, 8057 }, { 42564, 42565 }, { 42562, 42563 }, + { 42560, 42561 }, { 11506, 11507 }, { 8171, 8059 }, + { 68759, 68823 }, { 42832, 42833 }, { 406, 617 }, + { 8169, 8161 }, { 68757, 68821 }, { 42830, 42831 }, + { 404, 611 }, { 68753, 68817 }, { 42826, 42827 }, + { 400, 603 }, { 11490, 11491 }, { 914, 946 }, + { 904, 941 }, { 902, 940 }, { 7993, 7985 }, + { 922, 954 }, { 920, 952 }, { 918, 950 }, + { 886, 887 }, { 11458, 11459 }, { 882, 883 }, + { 11456, 11457 }, { 11452, 11453 }, { 1052, 1084 }, + { 8123, 8049 }, { 11450, 11451 }, { 1050, 1082 }, + { 8121, 8113 }, { 11448, 11449 }, { 11446, 11447 }, + { 895, 1011 }, { 11444, 11445 }, { 11442, 11443 }, + { 11440, 11441 }, { 11432, 11433 }, { 125200, 125234 }, + { 7350, 4342 }, { 68765, 68829 }, { 412, 623 }, + { 42838, 42839 }, { 66570, 66610 }, { 574, 11366 }, + { 125198, 125232 }, { 7348, 4340 }, { 68763, 68827 }, + { 42836, 42837 }, { 125196, 125230 }, { 7346, 4338 }, + { 68761, 68825 }, { 408, 409 }, { 42834, 42835 }, + { 66566, 66606 }, { 570, 11365 }, { 1302, 1303 }, + { 193, 225 }, { 93778, 93810 }, { 11283, 11331 }, + { 11436, 11437 }, { 219, 251 }, { 11309, 11357 }, + { 990, 991 }, { 1360, 1408 }, { 125199, 125233 }, + { 7349, 4341 }, { 278, 279 }, { 8041, 8033 }, + { 11434, 11435 }, { 988, 989 }, { 68756, 68820 }, + { 403, 608 }, { 1068, 1100 }, { 8139, 8053 }, + { 11466, 11467 }, { 917, 949 }, { 1358, 1406 }, + { 66937, 66976 }, { 8012, 8004 }, { 125197, 125231 }, + { 7347, 4339 }, { 276, 277 }, { 1298, 1299 }, + { 93774, 93806 }, { 11279, 11327 }, { 908, 972 }, + { 7979, 7971 }, { 11306, 11354 }, { 4260, 11524 }, + { 66929, 66968 }, { 933, 965 }, { 473, 474 }, + { 1296, 1297 }, { 7950, 7942 }, { 93772, 93804 }, + { 11277, 11325 }, { 11304, 11352 }, { 11430, 11431 }, + { 984, 985 }, { 68752, 68816 }, { 399, 601 }, + { 11462, 11463 }, { 913, 945 }, { 1354, 1402 }, + { 1294, 1295 }, { 7948, 7940 }, { 93770, 93802 }, + { 11275, 11323 }, { 11302, 11350 }, { 4256, 11520 }, + { 929, 961 }, { 469, 470 }, { 11428, 11429 }, + { 1352, 1400 }, { 1292, 1293 }, { 7946, 7938 }, + { 93768, 93800 }, { 11273, 11321 }, { 11300, 11348 }, + { 11426, 11427 }, { 66932, 66971 }, { 936, 968 }, + { 4263, 11527 }, { 68748, 68812 }, { 5109, 5117 }, + { 395, 396 }, { 1350, 1398 }, { 66956, 66995 }, + { 8031, 8023 }, { 1290, 1291 }, { 7944, 7936 }, + { 93766, 93798 }, { 11271, 11319 }, { 11298, 11346 }, + { 11424, 11425 }, { 66930, 66969 }, { 934, 966 }, + { 4261, 11525 }, { 68746, 68810 }, { 5107, 5115 }, + { 393, 598 }, { 1348, 1396 }, { 66954, 66993 }, + { 8029, 8021 }, { 1288, 1289 }, { 93764, 93796 }, + { 11269, 11317 }, { 93791, 93823 }, { 11296, 11344 }, + { 11422, 11423 }, { 68744, 68808 }, { 5105, 5113 }, + { 391, 392 }, { 8154, 8054 }, { 11454, 11455 }, + { 7976, 7968 }, { 905, 942 }, { 1346, 1394 }, + { 66952, 66991 }, { 8027, 8019 }, { 1286, 1287 }, + { 93762, 93794 }, { 11267, 11315 }, { 93789, 93821 }, + { 11294, 11342 }, { 42576, 42577 }, { 1300, 1301 }, + { 93776, 93808 }, { 11281, 11329 }, { 11308, 11356 }, + { 4262, 11526 }, { 66931, 66970 }, { 935, 967 }, + { 475, 476 }, { 11420, 11421 }, { 1344, 1392 }, + { 66950, 66989 }, { 8025, 8017 }, { 125202, 125236 }, + { 7352, 4344 }, { 68767, 68831 }, { 42840, 42841 }, + { 1274, 1275 }, { 7928, 7929 }, { 192, 224 }, + { 93777, 93809 }, { 11282, 11330 }, { 437, 438 }, + { 125193, 125227 }, { 272, 273 }, { 7343, 4335 }, + { 11400, 11401 }, { 125204, 125238 }, { 7354, 4346 }, + { 68769, 68833 }, { 416, 417 }, { 42842, 42843 }, + { 1276, 1277 }, { 7930, 7931 }, { 194, 226 }, + { 93779, 93811 }, { 11284, 11332 }, { 195, 227 }, + { 1304, 1305 }, { 93780, 93812 }, { 11285, 11333 }, + { 42594, 42595 }, { 66576, 66616 }, { 580, 649 }, + { 1278, 1279 }, { 7932, 7933 }, { 196, 228 }, + { 93781, 93813 }, { 11286, 11334 }, { 1338, 1386 }, + { 125208, 125242 }, { 7358, 4350 }, { 68773, 68837 }, + { 420, 421 }, { 42846, 42847 }, { 66578, 66618 }, + { 582, 583 }, { 1280, 1281 }, { 7934, 7935 }, + { 7961, 7953 }, { 93783, 93815 }, { 11288, 11336 }, + { 7997, 7989 }, { 926, 958 }, { 1340, 1388 }, + { 66580, 66620 }, { 584, 585 }, { 1282, 1283 }, + { 7963, 7955 }, { 93785, 93817 }, { 11290, 11338 }, + { 42600, 42601 }, { 1342, 1390 }, { 1284, 1285 }, + { 93760, 93792 }, { 11265, 11313 }, { 7965, 7957 }, + { 93787, 93819 }, { 11292, 11340 }, { 11438, 11439 }, + { 4265, 11529 }, { 66934, 66973 }, { 8009, 8001 }, + { 938, 970 }, { 992, 993 }, { 65314, 65346 }, + { 68760, 68824 }, { 407, 616 }, { 8170, 8058 }, + { 7992, 7984 }, { 921, 953 }, { 7313, 4305 }, + { 381, 382 }, { 5095, 43959 }, { 1362, 1410 }, + { 125201, 125235 }, { 7351, 4343 }, { 280, 281 }, + { 8043, 8035 }, { 68754, 68818 }, { 401, 402 }, + { 1066, 1098 }, { 8137, 8051 }, { 11464, 11465 }, + { 915, 947 }, { 1356, 1404 }, { 66935, 66974 }, + { 939, 971 }, { 8010, 8002 }, { 125195, 125229 }, + { 7345, 4337 }, { 274, 275 }, { 7315, 4307 }, + { 68736, 68800 }, { 5097, 43961 }, { 1364, 1412 }, + { 125203, 125237 }, { 7353, 4345 }, { 282, 283 }, + { 8045, 8037 }, { 7317, 4309 }, { 68738, 68802 }, + { 385, 595 }, { 5099, 43963 }, { 1366, 1414 }, + { 125205, 125239 }, { 284, 285 }, { 8047, 8039 }, + { 11374, 625 }, { 68766, 68830 }, { 413, 626 }, + { 68739, 68803 }, { 42812, 42813 }, { 5100, 43964 }, + { 386, 387 }, { 11476, 11477 }, { 7998, 7990 }, + { 927, 959 }, { 7319, 4311 }, { 68740, 68804 }, + { 5101, 43965 }, { 125207, 125241 }, { 7357, 4349 }, + { 286, 287 }, { 11376, 594 }, { 68768, 68832 }, + { 415, 629 }, { 68741, 68805 }, { 42814, 42815 }, + { 5102, 43966 }, { 388, 389 }, { 11478, 11479 }, + { 7321, 4313 }, { 68742, 68806 }, { 5103, 43967 }, + { 125209, 125243 }, { 7359, 4351 }, { 288, 289 }, + { 11378, 11379 }, { 125211, 125245 }, { 290, 291 }, + { 125213, 125247 }, { 292, 293 }, { 125215, 125249 }, + { 294, 295 }, { 68776, 68840 }, { 423, 424 }, + { 8186, 8060 }, { 66933, 66972 }, { 8008, 8000 }, + { 937, 969 }, { 4264, 11528 }, { 258, 259 }, + { 7329, 4321 }, { 125217, 125251 }, { 296, 297 }, + { 68778, 68842 }, { 425, 643 }, { 68751, 68815 }, + { 42824, 42825 }, { 398, 477 }, { 11488, 11489 }, + { 260, 261 }, { 7331, 4323 }, { 298, 299 }, + { 262, 263 }, { 7333, 4325 }, { 300, 301 }, + { 11390, 575 }, { 125185, 125219 }, { 264, 265 }, + { 7335, 4327 }, { 302, 303 }, { 11392, 11393 }, + { 68784, 68848 }, { 431, 432 }, { 125187, 125221 }, + { 266, 267 }, { 7337, 4329 }, { 304, 105 }, + { 11394, 11395 }, { 68786, 68850 }, { 433, 650 }, + { 125189, 125223 }, { 268, 269 }, { 7339, 4331 }, + { 306, 307 }, { 11396, 11397 }, { 435, 436 }, + { 125191, 125225 }, { 270, 271 }, { 7341, 4333 }, + { 308, 309 }, { 11398, 11399 }, { 439, 658 }, + { 440, 441 }, { 42582, 42583 }, { 444, 445 }, + { 42586, 42587 }, { 994, 995 }, { 65316, 65348 }, + { 455, 457 }, { 996, 997 }, { 65318, 65350 }, + { 998, 999 }, { 65320, 65352 }, { 4273, 11537 }, + { 1027, 1107 }, { 202, 234 }, { 42628, 42629 }, + { 1000, 1001 }, { 65322, 65354 }, { 4275, 11539 }, + { 1029, 1109 }, { 204, 236 }, { 42630, 42631 }, + { 461, 462 }, { 1002, 1003 }, { 65324, 65356 }, + { 4277, 11541 }, { 1031, 1111 }, { 206, 238 }, + { 42632, 42633 }, { 463, 464 }, { 1004, 1005 }, + { 65326, 65358 }, { 4279, 11543 }, { 1033, 1113 }, + { 208, 240 }, { 42634, 42635 }, { 1006, 1007 }, + { 65328, 65360 }, { 4281, 11545 }, { 1035, 1115 }, + { 210, 242 }, { 42636, 42637 }, { 4284, 11548 }, + { 4287, 11551 }, { 1041, 1073 }, { 216, 248 }, + { 42642, 42643 }, { 11360, 11361 }, { 4289, 11553 }, + { 1043, 1075 }, { 218, 250 }, { 42644, 42645 }, + { 4290, 11554 }, { 1044, 1076 }, { 7698, 7699 }, + { 1017, 1010 }, { 11362, 619 }, { 4291, 11555 }, + { 1045, 1077 }, { 220, 252 }, { 42646, 42647 }, + { 1018, 1019 }, { 11364, 637 }, { 4293, 11557 }, + { 1047, 1079 }, { 222, 254 }, { 42648, 42649 }, + { 4295, 11559 }, { 42650, 42651 }, { 4268, 11532 }, + { 1022, 892 }, { 4270, 11534 }, { 1024, 1104 }, + { 1053, 1085 }, { 4272, 11536 }, { 4301, 11565 }, + { 1055, 1087 }, { 1057, 1089 }, { 1059, 1091 }, + { 1061, 1093 }, { 1063, 1095 }, { 526, 527 }, + { 9398, 9424 }, { 1069, 1101 }, { 528, 529 }, + { 9400, 9426 }, { 1071, 1103 }, { 530, 531 }, + { 9402, 9428 }, { 532, 533 }, { 9404, 9430 }, + { 9406, 9432 }, { 536, 537 }, { 9408, 9434 }, + { 538, 539 }, { 9410, 9436 }, { 9412, 9438 }, + { 9414, 9440 }, { 544, 414 }, { 9416, 9442 }, + { 546, 547 }, { 9418, 9444 }, { 548, 549 }, + { 9420, 9446 }, { 550, 551 }, { 9422, 9448 }, + { 552, 553 }, { 554, 555 }, { 556, 557 }, + { 558, 559 }, { 560, 561 }, { 562, 563 }, + { 66569, 66609 }, { 573, 410 }, { 66573, 66613 }, + { 577, 578 }, { 1120, 1121 }, { 7774, 7775 }, + { 66575, 66615 }, { 579, 384 }, { 1122, 1123 }, + { 7776, 7777 }, { 66577, 66617 }, { 581, 652 }, + { 66582, 66622 }, { 586, 587 }, { 66584, 66624 }, + { 588, 589 }, { 310, 311 }, { 5024, 43888 }, + { 66586, 66626 }, { 590, 591 }, { 5026, 43890 }, + { 7977, 7969 }, { 906, 943 }, { 7981, 7973 }, + { 910, 973 }, { 11460, 11461 }, { 7982, 7974 }, + { 911, 974 }, { 916, 948 }, { 919, 951 }, + { 7994, 7986 }, { 923, 955 }, { 7995, 7987 }, + { 924, 956 }, { 7996, 7988 }, { 925, 957 }, + { 7999, 7991 }, { 928, 960 }, { 68743, 68807 }, + { 42816, 42817 }, { 5104, 5112 }, { 390, 596 }, + { 8153, 8145 }, { 11480, 11481 }, { 931, 963 }, + { 4258, 11522 }, { 68747, 68811 }, { 42820, 42821 }, + { 5108, 5116 }, { 394, 599 }, { 11484, 11485 }, + { 986, 987 }, { 471, 472 }, { 1012, 952 }, + { 1015, 1016 }, { 4267, 11531 }, { 1021, 891 }, + { 4269, 11533 }, { 198, 230 }, { 42624, 42625 }, + { 1023, 893 }, { 4271, 11535 }, { 200, 232 }, + { 42626, 42627 }, { 1025, 1105 }, { 7726, 7727 }, + { 7728, 7729 }, { 7730, 7731 }, { 7732, 7733 }, + { 7734, 7735 }, { 7736, 7737 }, { 7738, 7739 }, + { 7740, 7741 }, { 7742, 7743 }, { 7744, 7745 }, + { 7746, 7747 }, { 7748, 7749 }, { 7750, 7751 }, + { 7752, 7753 }, { 7754, 7755 }, { 7756, 7757 }, + { 7758, 7759 }, { 7760, 7761 }, { 7762, 7763 }, + { 7764, 7765 }, { 7766, 7767 }, { 7768, 7769 }, + { 7770, 7771 }, { 7772, 7773 }, { 7808, 7809 }, + { 7810, 7811 }, { 66737, 66777 }, { 7812, 7813 }, + { 66739, 66779 }, { 7814, 7815 }, { 7872, 7873 }, + { 7874, 7875 }, { 7876, 7877 }, { 7878, 7879 }, + { 7880, 7881 }, { 7882, 7883 }, { 7884, 7885 }, + { 7945, 7937 }, { 93767, 93799 }, { 11272, 11320 }, + { 7947, 7939 }, { 93769, 93801 }, { 11274, 11322 }, + { 7949, 7941 }, { 93771, 93803 }, { 11276, 11324 }, + { 880, 881 }, { 7951, 7943 }, { 93773, 93805 }, + { 11278, 11326 }, { 66965, 67004 }, { 8040, 8032 }, + { 11367, 11368 }, { 8042, 8034 }, { 11369, 11370 }, + { 8044, 8036 }, { 11371, 11372 }, { 975, 983 }, + { 8046, 8038 }, { 11373, 593 }, { 1049, 1081 }, + { 8120, 8112 }, { 1051, 1083 }, { 8122, 8048 }, + { 1065, 1097 }, { 8136, 8050 }, { 1067, 1099 }, + { 8138, 8052 }, { 8152, 8144 }, { 8155, 8055 }, + { 11482, 11483 }, { 8168, 8160 }, { 8172, 8165 }, + { 11499, 11500 }, { 8184, 8056 }, { 8187, 8061 }, + { 42566, 42567 }, { 8486, 969 }, { 8490, 107 }, + { 8491, 229 }, { 8498, 8526 }, { 42877, 7545 }, + { 8544, 8560 }, { 497, 499 }, { 42923, 604 }, + { 8545, 8561 }, { 42924, 609 }, { 8546, 8562 }, + { 42925, 620 }, { 8547, 8563 }, { 500, 501 }, + { 42926, 618 }, { 8548, 8564 }, { 8549, 8565 }, + { 502, 405 }, { 42928, 670 }, { 8550, 8566 }, + { 503, 447 }, { 42929, 647 }, { 8551, 8567 }, + { 504, 505 }, { 42930, 669 }, { 8552, 8568 }, + { 42931, 43859 }, { 8553, 8569 }, { 506, 507 }, + { 42932, 42933 }, { 8554, 8570 }, { 8555, 8571 }, + { 508, 509 }, { 42934, 42935 }, { 8556, 8572 }, + { 8557, 8573 }, { 510, 511 }, { 42936, 42937 }, + { 8558, 8574 }, { 8559, 8575 }, { 512, 513 }, + { 42938, 42939 }, { 8579, 8580 }, { 9399, 9425 }, + { 9401, 9427 }, { 9403, 9429 }, { 9405, 9431 }, + { 9407, 9433 }, { 9409, 9435 }, { 9411, 9437 }, + { 9413, 9439 }, { 9415, 9441 }, { 9417, 9443 }, + { 9419, 9445 }, { 9421, 9447 }, { 9423, 9449 }, + { 11264, 11312 }, { 93761, 93793 }, { 11266, 11314 }, + { 93763, 93795 }, { 11268, 11316 }, { 93765, 93797 }, + { 11270, 11318 }, { 93775, 93807 }, { 11280, 11328 }, + { 4292, 11556 }, { 11363, 7549 }, { 11375, 592 }, + { 11381, 11382 }, { 11391, 576 }, { 11402, 11403 }, + { 11404, 11405 }, { 11406, 11407 }, { 11408, 11409 }, + { 11410, 11411 }, { 11412, 11413 }, { 11414, 11415 }, + { 11416, 11417 }, { 11418, 11419 }, { 11468, 11469 }, + { 11470, 11471 }, { 11472, 11473 }, { 11474, 11475 }, + { 11486, 11487 }, { 11501, 11502 }, { 42568, 42569 }, + { 42574, 42575 }, { 42578, 42579 }, { 42580, 42581 }, + { 42584, 42585 }, { 42588, 42589 }, { 42590, 42591 }, + { 42592, 42593 }, { 42596, 42597 }, { 42598, 42599 }, + { 42602, 42603 }, { 42604, 42605 }, { 212, 244 }, + { 42638, 42639 }, { 214, 246 }, { 42640, 42641 }, + { 366, 367 }, { 5080, 43944 }, { 42792, 42793 }, + { 368, 369 }, { 5082, 43946 }, { 42794, 42795 }, + { 374, 375 }, { 5088, 43952 }, { 370, 371 }, + { 5084, 43948 }, { 42796, 42797 }, { 42802, 42803 }, + { 376, 255 }, { 5090, 43954 }, { 372, 373 }, + { 5086, 43950 }, { 42798, 42799 }, { 42804, 42805 }, + { 5092, 43956 }, { 68771, 68835 }, { 418, 419 }, + { 42844, 42845 }, { 68775, 68839 }, { 422, 640 }, + { 42848, 42849 }, { 68777, 68841 }, { 42850, 42851 }, + { 68779, 68843 }, { 42852, 42853 }, { 68781, 68845 }, + { 428, 429 }, { 42854, 42855 }, { 68783, 68847 }, + { 430, 648 }, { 42856, 42857 }, { 68785, 68849 }, + { 42858, 42859 }, { 434, 651 }, { 42860, 42861 }, + { 42862, 42863 }, { 42873, 42874 }, { 42875, 42876 }, + { 452, 454 }, { 42878, 42879 }, { 42880, 42881 }, + { 42882, 42883 }, { 458, 460 }, { 42884, 42885 }, + { 42886, 42887 }, { 465, 466 }, { 42891, 42892 }, + { 467, 468 }, { 42893, 613 }, { 42896, 42897 }, + { 42898, 42899 }, { 42902, 42903 }, { 478, 479 }, + { 42904, 42905 }, { 480, 481 }, { 42906, 42907 }, + { 482, 483 }, { 42908, 42909 }, { 484, 485 }, + { 42910, 42911 }, { 486, 487 }, { 42912, 42913 }, + { 488, 489 }, { 42914, 42915 }, { 490, 491 }, + { 42916, 42917 }, { 492, 493 }, { 42918, 42919 }, + { 494, 495 }, { 42920, 42921 }, { 42922, 614 }, + { 514, 515 }, { 42940, 42941 }, { 516, 517 }, + { 42942, 42943 }, { 518, 519 }, { 42944, 42945 }, + { 520, 521 }, { 42946, 42947 }, { 522, 523 }, + { 42948, 42900 }, { 42949, 642 }, { 524, 525 }, + { 42950, 7566 }, { 42951, 42952 }, { 42953, 42954 }, + { 534, 535 }, { 42960, 42961 }, { 540, 541 }, + { 42966, 42967 }, { 542, 543 }, { 42968, 42969 }, + { 66567, 66607 }, { 571, 572 }, { 42997, 42998 }, + { 5025, 43889 }, { 313, 314 }, { 5027, 43891 }, + { 5028, 43892 }, { 315, 316 }, { 5029, 43893 }, + { 5030, 43894 }, { 317, 318 }, { 5031, 43895 }, + { 5032, 43896 }, { 319, 320 }, { 5033, 43897 }, + { 5034, 43898 }, { 321, 322 }, { 5035, 43899 }, + { 5036, 43900 }, { 323, 324 }, { 5037, 43901 }, + { 5038, 43902 }, { 325, 326 }, { 5039, 43903 }, + { 5040, 43904 }, { 327, 328 }, { 5041, 43905 }, + { 5042, 43906 }, { 5043, 43907 }, { 330, 331 }, + { 5044, 43908 }, { 5045, 43909 }, { 332, 333 }, + { 5046, 43910 }, { 5047, 43911 }, { 334, 335 }, + { 5048, 43912 }, { 5049, 43913 }, { 336, 337 }, + { 5050, 43914 }, { 5051, 43915 }, { 338, 339 }, + { 5052, 43916 }, { 5053, 43917 }, { 340, 341 }, + { 5054, 43918 }, { 5055, 43919 }, { 342, 343 }, + { 5056, 43920 }, { 5057, 43921 }, { 344, 345 }, + { 5058, 43922 }, { 5059, 43923 }, { 346, 347 }, + { 5060, 43924 }, { 5061, 43925 }, { 348, 349 }, + { 5062, 43926 }, { 5063, 43927 }, { 350, 351 }, + { 5064, 43928 }, { 5065, 43929 }, { 352, 353 }, + { 5066, 43930 }, { 5067, 43931 }, { 354, 355 }, + { 5068, 43932 }, { 5069, 43933 }, { 356, 357 }, + { 5070, 43934 }, { 5071, 43935 }, { 358, 359 }, + { 5072, 43936 }, { 5073, 43937 }, { 360, 361 }, + { 42786, 42787 }, { 5074, 43938 }, { 5075, 43939 }, + { 362, 363 }, { 42788, 42789 }, { 5076, 43940 }, + { 5077, 43941 }, { 364, 365 }, { 42790, 42791 }, + { 5078, 43942 }, { 5079, 43943 }, { 5081, 43945 }, + { 5083, 43947 }, { 5085, 43949 }, { 5087, 43951 }, + { 5089, 43953 }, { 377, 378 }, { 5091, 43955 }, + { 379, 380 }, { 5093, 43957 }, { 65313, 65345 }, + { 65315, 65347 }, { 65317, 65349 }, { 65319, 65351 }, + { 65321, 65353 }, { 65323, 65355 }, { 65325, 65357 }, + { 65327, 65359 }, { 65329, 65361 }, { 65330, 65362 }, + }}; + if (c >= 'A' && c <= 'Z') { return c + 32; } - if (c >= 0x00C0) - { - if ((c >= 0x00C0 && c <= 0x00D6) || (c >= 0x00D8 && c <= 0x00DE)) - { - return c + 32; - } - else if ((c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178)) - { - if (c == 0x0130) - { - return 0x0069; - } - else if ((c & 1) == 0) - { - return c + 1; - } - } - else if (c == 0x0178) - { - return 0x00FF; - } - else if ((c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F)) - { - if (c & 1) - { - return c + 1; - } - } - else if (c >= 0x0200 && c <= 0x0217) - { - if ((c & 1) == 0) - { - return c + 1; - } - } - else if ((c >= 0x0401 && c <= 0x040C) || (c >= 0x040E && c <= 0x040F)) - { - return c + 80; - } - else if (c >= 0x410 && c <= 0x042F) - { - return c + 32; - } - else if (c >= 0x0460 && c <= 0x047F) - { - if ((c & 1) == 0) - { - return c + 1; - } - } - else if (c >= 0x0531 && c <= 0x0556) - { - return c + 48; - } - else if (c >= 0x10A0 && c <= 0x10C5) - { - return c + 48; - } - else if (c >= 0xFF21 && c <= 0xFF3A) - { - return c + 32; - } - } - return c; + return utils::case_lookup(tolower_map, c); } } diff --git a/include/peelo/unicode/ctype/toupper.hpp b/include/peelo/unicode/ctype/toupper.hpp index 4bd85eb..925adfa 100644 --- a/include/peelo/unicode/ctype/toupper.hpp +++ b/include/peelo/unicode/ctype/toupper.hpp @@ -26,6 +26,8 @@ */ #pragma once +#include + namespace peelo::unicode::ctype { /** @@ -34,74 +36,474 @@ namespace peelo::unicode::ctype inline char32_t toupper(char32_t c) { + static const std::unordered_map toupper_map = + {{ + { 125251, 125217 }, { 125250, 125216 }, { 125248, 125214 }, + { 125246, 125212 }, { 125244, 125210 }, { 125242, 125208 }, + { 125240, 125206 }, { 125238, 125204 }, { 125236, 125202 }, + { 125234, 125200 }, { 125233, 125199 }, { 125231, 125197 }, + { 125229, 125195 }, { 125227, 125193 }, { 125225, 125191 }, + { 125223, 125189 }, { 125221, 125187 }, { 125219, 125185 }, + { 93806, 93774 }, { 93805, 93773 }, { 93804, 93772 }, + { 93803, 93771 }, { 93802, 93770 }, { 93801, 93769 }, + { 93800, 93768 }, { 93799, 93767 }, { 93798, 93766 }, + { 93797, 93765 }, { 93796, 93764 }, { 93795, 93763 }, + { 93794, 93762 }, { 93793, 93761 }, { 93792, 93760 }, + { 71902, 71870 }, { 71900, 71868 }, { 71898, 71866 }, + { 71896, 71864 }, { 71894, 71862 }, { 71892, 71860 }, + { 71890, 71858 }, { 71888, 71856 }, { 71886, 71854 }, + { 71884, 71852 }, { 71882, 71850 }, { 71880, 71848 }, + { 71878, 71846 }, { 71876, 71844 }, { 71874, 71842 }, + { 71872, 71840 }, { 68850, 68786 }, { 68849, 68785 }, + { 68847, 68783 }, { 68845, 68781 }, { 68843, 68779 }, + { 68841, 68777 }, { 68839, 68775 }, { 68837, 68773 }, + { 68835, 68771 }, { 68833, 68769 }, { 68828, 68764 }, + { 68822, 68758 }, { 68820, 68756 }, { 68818, 68754 }, + { 68816, 68752 }, { 68811, 68747 }, { 68809, 68745 }, + { 68805, 68741 }, { 68804, 68740 }, { 68802, 68738 }, + { 67004, 66965 }, { 67000, 66961 }, { 66998, 66959 }, + { 66996, 66957 }, { 66992, 66953 }, { 66990, 66951 }, + { 66988, 66949 }, { 66972, 66933 }, { 66971, 66932 }, + { 66811, 66771 }, { 66809, 66769 }, { 66807, 66767 }, + { 66805, 66765 }, { 66803, 66763 }, { 66801, 66761 }, + { 66799, 66759 }, { 66797, 66757 }, { 66795, 66755 }, + { 66793, 66753 }, { 66791, 66751 }, { 66789, 66749 }, + { 66787, 66747 }, { 66785, 66745 }, { 66783, 66743 }, + { 66781, 66741 }, { 66779, 66739 }, { 66777, 66737 }, + { 66637, 66597 }, { 66635, 66595 }, { 66631, 66591 }, + { 66629, 66589 }, { 66627, 66587 }, { 66623, 66583 }, + { 66617, 66577 }, { 66611, 66571 }, { 66603, 66563 }, + { 66602, 66562 }, { 66601, 66561 }, { 65370, 65338 }, + { 65369, 65337 }, { 65368, 65336 }, { 65367, 65335 }, + { 65366, 65334 }, { 65365, 65333 }, { 4317, 7325 }, + { 4315, 7323 }, { 4313, 7321 }, { 4309, 7317 }, + { 4307, 7315 }, { 4305, 7313 }, { 43931, 5067 }, + { 11565, 4301 }, { 11559, 4295 }, { 11557, 4293 }, + { 11555, 4291 }, { 11553, 4289 }, { 42605, 42604 }, + { 11551, 4287 }, { 42603, 42602 }, { 11549, 4285 }, + { 42601, 42600 }, { 11547, 4283 }, { 42599, 42598 }, + { 11545, 4281 }, { 42597, 42596 }, { 11543, 4279 }, + { 42595, 42594 }, { 11541, 4277 }, { 42593, 42592 }, + { 11539, 4275 }, { 42591, 42590 }, { 11537, 4273 }, + { 68800, 68736 }, { 447, 503 }, { 42589, 42588 }, + { 11535, 4271 }, { 445, 444 }, { 42587, 42586 }, + { 11533, 4269 }, { 42585, 42584 }, { 11531, 4267 }, + { 441, 440 }, { 42583, 42582 }, { 11529, 4265 }, + { 42581, 42580 }, { 11527, 4263 }, { 42579, 42578 }, + { 11525, 4261 }, { 42577, 42576 }, { 11523, 4259 }, + { 42575, 42574 }, { 11521, 4257 }, { 42573, 42572 }, + { 1414, 1366 }, { 125226, 125192 }, { 305, 73 }, + { 1412, 1364 }, { 125224, 125190 }, { 303, 302 }, + { 1411, 1363 }, { 1409, 1361 }, { 1407, 1359 }, + { 66986, 66947 }, { 8061, 8187 }, { 1405, 1357 }, + { 66984, 66945 }, { 8059, 8171 }, { 1403, 1355 }, + { 66982, 66943 }, { 8057, 8185 }, { 1401, 1353 }, + { 66980, 66941 }, { 8055, 8155 }, { 4311, 7319 }, + { 11382, 11381 }, { 1399, 1351 }, { 8053, 8139 }, + { 1397, 1349 }, { 66976, 66937 }, { 8051, 8137 }, + { 1395, 1347 }, { 66974, 66935 }, { 8049, 8123 }, + { 1394, 1346 }, { 285, 284 }, { 66973, 66934 }, + { 8048, 8122 }, { 1392, 1344 }, { 283, 282 }, + { 1390, 1342 }, { 281, 280 }, { 1388, 1340 }, + { 279, 278 }, { 1386, 1338 }, { 277, 276 }, + { 1384, 1336 }, { 11365, 570 }, { 275, 274 }, + { 1382, 1334 }, { 273, 272 }, { 1380, 1332 }, + { 271, 270 }, { 11361, 11360 }, { 1378, 1330 }, + { 269, 268 }, { 11359, 11311 }, { 1305, 1304 }, + { 1303, 1302 }, { 7957, 7965 }, { 1301, 1300 }, + { 7955, 7963 }, { 1299, 1298 }, { 7953, 7961 }, + { 1297, 1296 }, { 1295, 1294 }, { 1293, 1292 }, + { 1291, 1290 }, { 1289, 1288 }, { 7943, 7951 }, + { 1287, 1286 }, { 7941, 7949 }, { 1285, 1284 }, + { 7939, 7947 }, { 1283, 1282 }, { 7937, 7945 }, + { 1281, 1280 }, { 7935, 7934 }, { 1279, 1278 }, + { 7933, 7932 }, { 11556, 4292 }, { 1277, 1276 }, + { 7931, 7930 }, { 11554, 4290 }, { 68817, 68753 }, + { 464, 463 }, { 1275, 1274 }, { 7929, 7928 }, + { 11552, 4288 }, { 68815, 68751 }, { 462, 461 }, + { 1273, 1272 }, { 7927, 7926 }, { 11550, 4286 }, + { 68813, 68749 }, { 460, 458 }, { 1271, 1270 }, + { 7925, 7924 }, { 11548, 4284 }, { 1269, 1268 }, + { 7923, 7922 }, { 11546, 4282 }, { 1267, 1266 }, + { 7921, 7920 }, { 11544, 4280 }, { 68807, 68743 }, + { 454, 452 }, { 1265, 1264 }, { 7919, 7918 }, + { 11542, 4278 }, { 1263, 1262 }, { 7917, 7916 }, + { 11540, 4276 }, { 1261, 1260 }, { 7915, 7914 }, + { 11538, 4274 }, { 1259, 1258 }, { 7913, 7912 }, + { 11536, 4272 }, { 1257, 1256 }, { 7911, 7910 }, + { 11534, 4270 }, { 1255, 1254 }, { 7909, 7908 }, + { 11532, 4268 }, { 1253, 1252 }, { 7907, 7906 }, + { 11530, 4266 }, { 1251, 1250 }, { 7905, 7904 }, + { 11528, 4264 }, { 438, 437 }, { 1249, 1248 }, + { 7903, 7902 }, { 11526, 4262 }, { 436, 435 }, + { 1247, 1246 }, { 7901, 7900 }, { 11524, 4260 }, + { 1245, 1244 }, { 7899, 7898 }, { 11522, 4258 }, + { 432, 431 }, { 1243, 1242 }, { 7897, 7896 }, + { 11520, 4256 }, { 1241, 1240 }, { 7895, 7894 }, + { 1239, 1238 }, { 7893, 7892 }, { 1237, 1236 }, + { 7891, 7890 }, { 1235, 1234 }, { 7889, 7888 }, + { 1233, 1232 }, { 7887, 7886 }, { 1230, 1229 }, + { 1228, 1227 }, { 1226, 1225 }, { 1224, 1223 }, + { 115, 7838 }, { 1222, 1221 }, { 1220, 1219 }, + { 1218, 1217 }, { 1231, 1216 }, { 66810, 66770 }, + { 7885, 7884 }, { 1215, 1214 }, { 66794, 66754 }, + { 7869, 7868 }, { 1213, 1212 }, { 66792, 66752 }, + { 7867, 7866 }, { 1211, 1210 }, { 66790, 66750 }, + { 7865, 7864 }, { 1209, 1208 }, { 66788, 66748 }, + { 7863, 7862 }, { 66624, 66584 }, { 7699, 7698 }, + { 1207, 1206 }, { 66786, 66746 }, { 7861, 7860 }, + { 1205, 1204 }, { 66784, 66744 }, { 7859, 7858 }, + { 66620, 66580 }, { 7695, 7694 }, { 65363, 65331 }, + { 1203, 1202 }, { 66782, 66742 }, { 7857, 7856 }, + { 66618, 66578 }, { 7693, 7692 }, { 65361, 65329 }, + { 1201, 1200 }, { 66780, 66740 }, { 7855, 7854 }, + { 65357, 65325 }, { 1197, 1196 }, { 66776, 66736 }, + { 7851, 7850 }, { 65355, 65323 }, { 1195, 1194 }, + { 7849, 7848 }, { 71895, 71863 }, { 1185, 1184 }, + { 71893, 71861 }, { 1183, 1182 }, { 71889, 71857 }, + { 1179, 1178 }, { 71887, 71855 }, { 1177, 1176 }, + { 71885, 71853 }, { 1175, 1174 }, { 7829, 7828 }, + { 71883, 71851 }, { 1173, 1172 }, { 7827, 7826 }, + { 71881, 71849 }, { 1171, 1170 }, { 7825, 7824 }, + { 71879, 71847 }, { 1169, 1168 }, { 7823, 7822 }, + { 71875, 71843 }, { 1165, 1164 }, { 7819, 7818 }, + { 71873, 71841 }, { 1163, 1162 }, { 7817, 7816 }, + { 1153, 1152 }, { 7807, 7806 }, { 1151, 1150 }, + { 7805, 7804 }, { 1147, 1146 }, { 7801, 7800 }, + { 1145, 1144 }, { 7799, 7798 }, { 1143, 1142 }, + { 7797, 7796 }, { 1141, 1140 }, { 7795, 7794 }, + { 1135, 1134 }, { 7789, 7788 }, { 1133, 1132 }, + { 7787, 7786 }, { 1131, 1130 }, { 7785, 7784 }, + { 1129, 1128 }, { 7783, 7782 }, { 1127, 1126 }, + { 7781, 7780 }, { 1125, 1124 }, { 7779, 7778 }, + { 1123, 1122 }, { 7777, 7776 }, { 1121, 1120 }, + { 7775, 7774 }, { 4349, 7357 }, { 1103, 1071 }, + { 7757, 7756 }, { 1101, 1069 }, { 7755, 7754 }, + { 4345, 7353 }, { 1099, 1067 }, { 7753, 7752 }, + { 4343, 7351 }, { 1016, 1015 }, { 1097, 1065 }, + { 7751, 7750 }, { 4341, 7349 }, { 1095, 1063 }, + { 7749, 7748 }, { 4339, 7347 }, { 1093, 1061 }, + { 7747, 7746 }, { 4337, 7345 }, { 1010, 1017 }, + { 1091, 1059 }, { 7745, 7744 }, { 4335, 7343 }, + { 7743, 7742 }, { 4331, 7339 }, { 1085, 1053 }, + { 7739, 7738 }, { 4329, 7337 }, { 1083, 1051 }, + { 7737, 7736 }, { 4327, 7335 }, { 1081, 1049 }, + { 7735, 7734 }, { 4325, 7333 }, { 1079, 1047 }, + { 7733, 7732 }, { 4323, 7331 }, { 1077, 1045 }, + { 7731, 7730 }, { 4321, 7329 }, { 1075, 1043 }, + { 4319, 7327 }, { 7727, 7726 }, { 1118, 1038 }, + { 1117, 1037 }, { 7771, 7770 }, { 1116, 1036 }, + { 1115, 1035 }, { 7769, 7768 }, { 1114, 1034 }, + { 1112, 1032 }, { 1111, 1031 }, { 7765, 7764 }, + { 1110, 1030 }, { 1109, 1029 }, { 7763, 7762 }, + { 1108, 1028 }, { 651, 434 }, { 43902, 5038 }, + { 42563, 42562 }, { 66987, 66948 }, { 991, 990 }, + { 4318, 7326 }, { 1139, 1138 }, { 7793, 7792 }, + { 598, 393 }, { 341, 340 }, { 11431, 11430 }, + { 1137, 1136 }, { 7791, 7790 }, { 596, 390 }, + { 339, 338 }, { 11429, 11428 }, { 66639, 66599 }, + { 643, 425 }, { 43894, 5030 }, { 11479, 11478 }, + { 11477, 11476 }, { 382, 381 }, { 255, 376 }, + { 11345, 11297 }, { 603, 400 }, { 349, 348 }, + { 8112, 8120 }, { 11439, 11438 }, { 601, 399 }, + { 347, 346 }, { 11437, 11436 }, { 599, 394 }, + { 345, 344 }, { 11435, 11434 }, { 343, 342 }, + { 11433, 11432 }, { 595, 385 }, { 337, 336 }, + { 11427, 11426 }, { 335, 334 }, { 11425, 11424 }, + { 1106, 1026 }, { 333, 332 }, { 11423, 11422 }, + { 1413, 1365 }, { 331, 330 }, { 1410, 1362 }, + { 125222, 125188 }, { 301, 300 }, { 125249, 125215 }, + { 328, 327 }, { 585, 584 }, { 1408, 1360 }, + { 125220, 125186 }, { 299, 298 }, { 125247, 125213 }, + { 326, 325 }, { 583, 582 }, { 1406, 1358 }, + { 125218, 125184 }, { 297, 296 }, { 125245, 125211 }, + { 324, 323 }, { 1404, 1356 }, { 295, 294 }, + { 125243, 125209 }, { 322, 321 }, { 1402, 1354 }, + { 293, 292 }, { 125241, 125207 }, { 320, 319 }, + { 1400, 1352 }, { 291, 290 }, { 125239, 125205 }, + { 318, 317 }, { 1398, 1350 }, { 289, 288 }, + { 66977, 66938 }, { 8052, 8138 }, { 125237, 125203 }, + { 316, 315 }, { 1396, 1348 }, { 287, 286 }, + { 66975, 66936 }, { 8050, 8136 }, { 125235, 125201 }, + { 314, 313 }, { 67001, 66962 }, { 1005, 1004 }, + { 1086, 1054 }, { 252, 220 }, { 11342, 11294 }, + { 1393, 1345 }, { 125232, 125198 }, { 311, 310 }, + { 378, 377 }, { 251, 219 }, { 11341, 11293 }, + { 250, 218 }, { 11340, 11292 }, { 1391, 1343 }, + { 11372, 11371 }, { 125230, 125196 }, { 309, 308 }, + { 249, 217 }, { 11339, 11291 }, { 66625, 66585 }, + { 629, 415 }, { 375, 374 }, { 11465, 11464 }, + { 42823, 42822 }, { 43932, 5068 }, { 248, 216 }, + { 11338, 11290 }, { 505, 504 }, { 42647, 42646 }, + { 1019, 1018 }, { 1389, 1341 }, { 11370, 11369 }, + { 125228, 125194 }, { 307, 306 }, { 11463, 11462 }, + { 887, 886 }, { 42821, 42820 }, { 246, 214 }, + { 11336, 11288 }, { 1387, 1339 }, { 11368, 11367 }, + { 71877, 71845 }, { 1167, 1166 }, { 7821, 7820 }, + { 66622, 66582 }, { 7697, 7696 }, { 626, 413 }, + { 11459, 11458 }, { 5114, 5106 }, { 1327, 1326 }, + { 245, 213 }, { 11335, 11287 }, { 11461, 11460 }, + { 42819, 42818 }, { 244, 212 }, { 11334, 11286 }, + { 501, 500 }, { 42643, 42642 }, { 1385, 1337 }, + { 11366, 574 }, { 5112, 5104 }, { 1325, 1324 }, + { 243, 211 }, { 11333, 11285 }, { 66619, 66579 }, + { 623, 412 }, { 242, 210 }, { 8005, 8013 }, + { 11332, 11284 }, { 499, 497 }, { 42641, 42640 }, + { 1383, 1335 }, { 1323, 1322 }, { 241, 209 }, + { 8004, 8012 }, { 11331, 11283 }, { 42793, 42792 }, + { 367, 366 }, { 11457, 11456 }, { 240, 208 }, + { 8003, 8011 }, { 11330, 11282 }, { 1381, 1333 }, + { 1321, 1320 }, { 7975, 7983 }, { 239, 207 }, + { 8002, 8010 }, { 11329, 11281 }, { 11455, 11454 }, + { 238, 206 }, { 8001, 8009 }, { 93823, 93791 }, + { 11328, 11280 }, { 42637, 42636 }, { 1379, 1331 }, + { 8033, 8041 }, { 1319, 1318 }, { 7973, 7981 }, + { 237, 205 }, { 8000, 8008 }, { 93822, 93790 }, + { 11327, 11279 }, { 66613, 66573 }, { 617, 406 }, + { 11453, 11452 }, { 236, 204 }, { 93821, 93789 }, + { 11326, 11278 }, { 42635, 42634 }, { 1377, 1329 }, + { 11358, 11310 }, { 1149, 1148 }, { 7803, 7802 }, + { 66604, 66564 }, { 608, 403 }, { 43859, 42931 }, + { 892, 1022 }, { 351, 350 }, { 11441, 11440 }, + { 1309, 1308 }, { 227, 195 }, { 7990, 7998 }, + { 93812, 93780 }, { 11317, 11269 }, { 224, 192 }, + { 7987, 7995 }, { 93809, 93777 }, { 11314, 11266 }, + { 1307, 1306 }, { 42651, 42650 }, { 225, 193 }, + { 7988, 7996 }, { 93810, 93778 }, { 11315, 11267 }, + { 353, 352 }, { 11443, 11442 }, { 226, 194 }, + { 7989, 7997 }, { 93811, 93779 }, { 11316, 11268 }, + { 42625, 42624 }, { 66993, 66954 }, { 997, 996 }, + { 11395, 11394 }, { 4324, 7332 }, { 355, 354 }, + { 11445, 11444 }, { 228, 196 }, { 7991, 7999 }, + { 93813, 93781 }, { 11318, 11270 }, { 42627, 42626 }, + { 66995, 66956 }, { 999, 998 }, { 11397, 11396 }, + { 4326, 7334 }, { 1311, 1310 }, { 229, 8491 }, + { 93814, 93782 }, { 11319, 11271 }, { 66607, 66567 }, + { 611, 404 }, { 357, 356 }, { 11447, 11446 }, + { 230, 198 }, { 93815, 93783 }, { 11320, 11272 }, + { 42629, 42628 }, { 1313, 1312 }, { 231, 199 }, + { 93816, 93784 }, { 11321, 11273 }, { 1315, 1314 }, + { 7969, 7977 }, { 233, 201 }, { 93818, 93786 }, + { 11323, 11275 }, { 11451, 11450 }, { 234, 202 }, + { 93819, 93787 }, { 11324, 11276 }, { 42633, 42632 }, + { 66612, 66572 }, { 7687, 7686 }, { 616, 407 }, + { 359, 358 }, { 11449, 11448 }, { 1317, 1316 }, + { 7971, 7979 }, { 235, 203 }, { 93820, 93788 }, + { 11325, 11277 }, { 380, 379 }, { 253, 221 }, + { 11343, 11295 }, { 254, 222 }, { 11344, 11296 }, + { 257, 256 }, { 11347, 11299 }, { 71891, 71859 }, + { 1181, 1180 }, { 43891, 5027 }, { 259, 258 }, + { 11349, 11301 }, { 261, 260 }, { 11351, 11303 }, + { 263, 262 }, { 11353, 11305 }, { 392, 391 }, + { 649, 580 }, { 365, 364 }, { 42791, 42790 }, + { 43900, 5036 }, { 265, 264 }, { 11355, 11307 }, + { 66606, 66566 }, { 7681, 7680 }, { 65349, 65317 }, + { 71899, 71867 }, { 1189, 1188 }, { 7843, 7842 }, + { 43899, 5035 }, { 267, 266 }, { 11357, 11309 }, + { 66608, 66568 }, { 7683, 7682 }, { 65351, 65319 }, + { 71901, 71869 }, { 1191, 1190 }, { 7845, 7844 }, + { 43901, 5037 }, { 396, 395 }, { 943, 906 }, + { 5116, 5108 }, { 402, 401 }, { 232, 200 }, + { 93817, 93785 }, { 11322, 11274 }, { 42631, 42630 }, + { 71897, 71865 }, { 1187, 1186 }, { 7841, 7840 }, + { 105, 304 }, { 65359, 65327 }, { 1199, 1198 }, + { 66778, 66738 }, { 7853, 7852 }, { 7729, 7728 }, + { 658, 439 }, { 43909, 5045 }, { 959, 927 }, + { 66991, 66952 }, { 995, 994 }, { 11393, 11392 }, + { 4322, 7330 }, { 8039, 8047 }, { 968, 936 }, + { 66967, 66928 }, { 971, 939 }, { 66997, 66958 }, + { 1001, 1000 }, { 11399, 11398 }, { 4328, 7336 }, + { 66970, 66931 }, { 974, 911 }, { 66999, 66960 }, + { 1003, 1002 }, { 11401, 11400 }, { 4330, 7338 }, + { 67003, 66964 }, { 1007, 1006 }, { 68821, 68757 }, + { 468, 467 }, { 1011, 895 }, { 68823, 68759 }, + { 470, 469 }, { 68825, 68761 }, { 472, 471 }, + { 68829, 68765 }, { 476, 475 }, { 66989, 66950 }, + { 993, 992 }, { 4320, 7328 }, { 8017, 8025 }, + { 946, 914 }, { 8032, 8040 }, { 961, 929 }, + { 4304, 7312 }, { 4306, 7314 }, { 11379, 11378 }, + { 4308, 7316 }, { 4310, 7318 }, { 66979, 66940 }, + { 8054, 8154 }, { 983, 975 }, { 523, 522 }, + { 4312, 7320 }, { 66981, 66942 }, { 8056, 8184 }, + { 985, 984 }, { 525, 524 }, { 4314, 7322 }, + { 66983, 66944 }, { 8058, 8170 }, { 987, 986 }, + { 527, 526 }, { 4316, 7324 }, { 66985, 66946 }, + { 8060, 8186 }, { 989, 988 }, { 529, 528 }, + { 1072, 1040 }, { 531, 530 }, { 8145, 8153 }, + { 1074, 1042 }, { 533, 532 }, { 1076, 1044 }, + { 1078, 1046 }, { 537, 536 }, { 1080, 1048 }, + { 539, 538 }, { 1082, 1050 }, { 1084, 1052 }, + { 955, 923 }, { 414, 544 }, { 1088, 1056 }, + { 547, 546 }, { 549, 548 }, { 1092, 1060 }, + { 551, 550 }, { 8165, 8172 }, { 1094, 1062 }, + { 553, 552 }, { 9425, 9399 }, { 1096, 1064 }, + { 555, 554 }, { 9427, 9401 }, { 1098, 1066 }, + { 557, 556 }, { 9429, 9403 }, { 1100, 1068 }, + { 559, 558 }, { 9431, 9405 }, { 1102, 1070 }, + { 561, 560 }, { 9433, 9407 }, { 11421, 11420 }, + { 4350, 7358 }, { 65345, 65313 }, { 1104, 1024 }, + { 563, 562 }, { 9435, 9409 }, { 1113, 1033 }, + { 7767, 7766 }, { 9444, 9418 }, { 4333, 7341 }, + { 1087, 1055 }, { 1119, 1039 }, { 7773, 7772 }, + { 578, 577 }, { 384, 579 }, { 65353, 65321 }, + { 71903, 71871 }, { 1193, 1192 }, { 7847, 7846 }, + { 43903, 5039 }, { 587, 586 }, { 589, 588 }, + { 591, 590 }, { 4351, 7359 }, { 65346, 65314 }, + { 1105, 1025 }, { 7759, 7758 }, { 940, 902 }, + { 941, 904 }, { 942, 905 }, { 66968, 66929 }, + { 972, 908 }, { 66969, 66930 }, { 973, 910 }, + { 945, 913 }, { 947, 915 }, { 949, 917 }, + { 410, 573 }, { 11500, 11499 }, { 951, 919 }, + { 953, 921 }, { 954, 922 }, { 956, 924 }, + { 957, 925 }, { 11507, 11506 }, { 958, 926 }, + { 42561, 42560 }, { 960, 928 }, { 8034, 8042 }, + { 963, 931 }, { 8035, 8043 }, { 964, 932 }, + { 424, 423 }, { 8036, 8044 }, { 965, 933 }, + { 8037, 8045 }, { 966, 934 }, { 8038, 8046 }, + { 967, 935 }, { 969, 8486 }, { 42571, 42570 }, + { 970, 938 }, { 891, 1021 }, { 893, 1023 }, + { 1107, 1027 }, { 7761, 7760 }, { 66626, 66586 }, + { 7701, 7700 }, { 66628, 66588 }, { 7703, 7702 }, + { 66630, 66590 }, { 7705, 7704 }, { 66632, 66592 }, + { 7707, 7706 }, { 66634, 66594 }, { 7709, 7708 }, + { 66636, 66596 }, { 640, 422 }, { 7711, 7710 }, + { 7715, 7714 }, { 7717, 7716 }, { 648, 430 }, + { 7719, 7718 }, { 650, 433 }, { 7721, 7720 }, + { 652, 581 }, { 7723, 7722 }, { 7725, 7724 }, + { 7809, 7808 }, { 7811, 7810 }, { 7813, 7812 }, + { 7815, 7814 }, { 42649, 42648 }, { 223, 7838 }, + { 7986, 7994 }, { 93808, 93776 }, { 11313, 11265 }, + { 66796, 66756 }, { 7871, 7870 }, { 66798, 66758 }, + { 7873, 7872 }, { 66800, 66760 }, { 7875, 7874 }, + { 66802, 66762 }, { 7877, 7876 }, { 66804, 66764 }, + { 7879, 7878 }, { 66806, 66766 }, { 7881, 7880 }, + { 66808, 66768 }, { 7883, 7882 }, { 7936, 7944 }, + { 7938, 7946 }, { 7940, 7948 }, { 7942, 7950 }, + { 881, 880 }, { 7952, 7960 }, { 883, 882 }, + { 7954, 7962 }, { 7956, 7964 }, { 7968, 7976 }, + { 7970, 7978 }, { 7972, 7980 }, { 7974, 7982 }, + { 7984, 7992 }, { 7985, 7993 }, { 93807, 93775 }, + { 11312, 11264 }, { 948, 916 }, { 8019, 8027 }, + { 11346, 11298 }, { 950, 918 }, { 8021, 8029 }, + { 11348, 11300 }, { 952, 1012 }, { 8023, 8031 }, + { 11350, 11302 }, { 8113, 8121 }, { 1073, 1041 }, + { 8144, 8152 }, { 11471, 11470 }, { 1089, 1057 }, + { 8160, 8168 }, { 11487, 11486 }, { 1090, 1058 }, + { 8161, 8169 }, { 107, 8490 }, { 8526, 8498 }, + { 68832, 68768 }, { 479, 478 }, { 42905, 42904 }, + { 513, 512 }, { 42939, 42938 }, { 515, 514 }, + { 42941, 42940 }, { 517, 516 }, { 42943, 42942 }, + { 519, 518 }, { 42945, 42944 }, { 521, 520 }, + { 42947, 42946 }, { 43927, 5063 }, { 8572, 8556 }, + { 43928, 5064 }, { 8573, 8557 }, { 42952, 42951 }, + { 43929, 5065 }, { 8574, 8558 }, { 43930, 5066 }, + { 8575, 8559 }, { 42954, 42953 }, { 9424, 9398 }, + { 9426, 9400 }, { 9428, 9402 }, { 9430, 9404 }, + { 9432, 9406 }, { 9434, 9408 }, { 9436, 9410 }, + { 9437, 9411 }, { 9438, 9412 }, { 9439, 9413 }, + { 9440, 9414 }, { 9441, 9415 }, { 9442, 9416 }, + { 9443, 9417 }, { 9445, 9419 }, { 9446, 9420 }, + { 9447, 9421 }, { 575, 11390 }, { 9448, 9422 }, + { 576, 11391 }, { 9449, 9423 }, { 11337, 11289 }, + { 11352, 11304 }, { 11354, 11306 }, { 11356, 11308 }, + { 66615, 66575 }, { 619, 11362 }, { 68831, 68767 }, + { 7549, 11363 }, { 66633, 66593 }, { 637, 11364 }, + { 43888, 5024 }, { 593, 11373 }, { 66621, 66581 }, + { 625, 11374 }, { 592, 11375 }, { 594, 11376 }, + { 4332, 7340 }, { 11403, 11402 }, { 4334, 7342 }, + { 11405, 11404 }, { 4336, 7344 }, { 11407, 11406 }, + { 4338, 7346 }, { 11409, 11408 }, { 4340, 7348 }, + { 11411, 11410 }, { 4342, 7350 }, { 11413, 11412 }, + { 4344, 7352 }, { 11415, 11414 }, { 4346, 7354 }, + { 11417, 11416 }, { 11419, 11418 }, { 11467, 11466 }, + { 11469, 11468 }, { 11473, 11472 }, { 11475, 11474 }, + { 11481, 11480 }, { 11483, 11482 }, { 11485, 11484 }, + { 11489, 11488 }, { 11491, 11490 }, { 11502, 11501 }, + { 42565, 42564 }, { 42567, 42566 }, { 42569, 42568 }, + { 42639, 42638 }, { 42645, 42644 }, { 361, 360 }, + { 42787, 42786 }, { 43896, 5032 }, { 363, 362 }, + { 42789, 42788 }, { 647, 42929 }, { 43898, 5034 }, + { 369, 368 }, { 42795, 42794 }, { 43904, 5040 }, + { 371, 370 }, { 42797, 42796 }, { 43906, 5042 }, + { 373, 372 }, { 42799, 42798 }, { 43908, 5044 }, + { 42803, 42802 }, { 43912, 5048 }, { 42805, 42804 }, + { 43914, 5050 }, { 42807, 42806 }, { 8561, 8545 }, + { 43916, 5052 }, { 42809, 42808 }, { 8563, 8547 }, + { 43918, 5054 }, { 42811, 42810 }, { 669, 42930 }, + { 8565, 8549 }, { 43920, 5056 }, { 387, 386 }, + { 42813, 42812 }, { 8567, 8551 }, { 43922, 5058 }, + { 389, 388 }, { 42815, 42814 }, { 8569, 8553 }, + { 43924, 5060 }, { 42817, 42816 }, { 8571, 8555 }, + { 43926, 5062 }, { 5113, 5105 }, { 42825, 42824 }, + { 43934, 5070 }, { 5115, 5107 }, { 42827, 42826 }, + { 43936, 5072 }, { 5117, 5109 }, { 42829, 42828 }, + { 43938, 5074 }, { 405, 502 }, { 42831, 42830 }, + { 43940, 5076 }, { 42833, 42832 }, { 43942, 5078 }, + { 409, 408 }, { 42835, 42834 }, { 43944, 5080 }, + { 42837, 42836 }, { 43946, 5082 }, { 42839, 42838 }, + { 43948, 5084 }, { 42841, 42840 }, { 43950, 5086 }, + { 417, 416 }, { 42843, 42842 }, { 43952, 5088 }, + { 419, 418 }, { 42845, 42844 }, { 43954, 5090 }, + { 421, 420 }, { 42847, 42846 }, { 43956, 5092 }, + { 42849, 42848 }, { 43958, 5094 }, { 42851, 42850 }, + { 43960, 5096 }, { 42853, 42852 }, { 43962, 5098 }, + { 429, 428 }, { 42855, 42854 }, { 43964, 5100 }, + { 42857, 42856 }, { 43966, 5102 }, { 42859, 42858 }, + { 42861, 42860 }, { 42863, 42862 }, { 68801, 68737 }, + { 42874, 42873 }, { 68803, 68739 }, { 42876, 42875 }, + { 68806, 68742 }, { 42879, 42878 }, { 68808, 68744 }, + { 42881, 42880 }, { 68810, 68746 }, { 457, 455 }, + { 42883, 42882 }, { 68812, 68748 }, { 42885, 42884 }, + { 68814, 68750 }, { 42887, 42886 }, { 68819, 68755 }, + { 466, 465 }, { 42892, 42891 }, { 66609, 66569 }, + { 613, 42893 }, { 68824, 68760 }, { 42897, 42896 }, + { 68826, 68762 }, { 42899, 42898 }, { 68830, 68766 }, + { 477, 398 }, { 42903, 42902 }, { 68834, 68770 }, + { 481, 480 }, { 42907, 42906 }, { 68836, 68772 }, + { 483, 482 }, { 42909, 42908 }, { 68838, 68774 }, + { 485, 484 }, { 42911, 42910 }, { 68840, 68776 }, + { 487, 486 }, { 42913, 42912 }, { 68842, 68778 }, + { 489, 488 }, { 42915, 42914 }, { 68844, 68780 }, + { 491, 490 }, { 42917, 42916 }, { 68846, 68782 }, + { 493, 492 }, { 42919, 42918 }, { 66610, 66570 }, + { 7685, 7684 }, { 614, 42922 }, { 66600, 66560 }, + { 604, 42923 }, { 66605, 66565 }, { 609, 42924 }, + { 66616, 66576 }, { 7691, 7690 }, { 620, 42925 }, + { 66614, 66574 }, { 7689, 7688 }, { 618, 42926 }, + { 7741, 7740 }, { 670, 42928 }, { 8566, 8550 }, + { 43921, 5057 }, { 507, 506 }, { 42933, 42932 }, + { 509, 508 }, { 42935, 42934 }, { 511, 510 }, + { 42937, 42936 }, { 68827, 68763 }, { 474, 473 }, + { 7545, 42877 }, { 42900, 42948 }, { 66638, 66598 }, + { 7713, 7712 }, { 642, 42949 }, { 43893, 5029 }, + { 68848, 68784 }, { 495, 494 }, { 42921, 42920 }, + { 7566, 42950 }, { 535, 534 }, { 42961, 42960 }, + { 541, 540 }, { 42967, 42966 }, { 543, 542 }, + { 42969, 42968 }, { 572, 571 }, { 42998, 42997 }, + { 43889, 5025 }, { 43890, 5026 }, { 43892, 5028 }, + { 43895, 5031 }, { 43897, 5033 }, { 43905, 5041 }, + { 43907, 5043 }, { 43910, 5046 }, { 43911, 5047 }, + { 43913, 5049 }, { 8560, 8544 }, { 43915, 5051 }, + { 8562, 8546 }, { 43917, 5053 }, { 8564, 8548 }, + { 43919, 5055 }, { 8568, 8552 }, { 43923, 5059 }, + { 8570, 8554 }, { 43925, 5061 }, { 43933, 5069 }, + { 8580, 8579 }, { 43935, 5071 }, { 43937, 5073 }, + { 43939, 5075 }, { 43941, 5077 }, { 43943, 5079 }, + { 43945, 5081 }, { 43947, 5083 }, { 43949, 5085 }, + { 43951, 5087 }, { 43953, 5089 }, { 43955, 5091 }, + { 43957, 5093 }, { 43959, 5095 }, { 43961, 5097 }, + { 43963, 5099 }, { 43965, 5101 }, { 43967, 5103 }, + { 65347, 65315 }, { 65348, 65316 }, { 65350, 65318 }, + { 65352, 65320 }, { 65354, 65322 }, { 65356, 65324 }, + { 65358, 65326 }, { 65360, 65328 }, { 65362, 65330 }, + { 65364, 65332 }, + }}; + if (c >= 'a' && c <= 'z') { return c - 32; } - if (c >= 0x00E0) - { - if ((c >= 0x00E0 && c <= 0x00F6) || (c >= 0x00F8 && c <= 0x00FE)) - { - return c - 32; - } - else if (c == 0x00FF) - { - return 0x0178; - } - else if ((c >= 0x0100 && c < 0x0138) || (c > 0x0149 && c < 0x0178)) - { - if (c == 0x0131) - { - return 0x0049; - } - else if (c & 1) - { - return c - 1; - } - } - else if ((c >= 0x0139 && c < 0x0149) || (c > 0x0178 && c < 0x017F)) - { - if ((c & 1) == 0) - { - return c - 1; - } - } - else if (c == 0x017F) - { - return 0x0053; - } - else if (c >= 0x0200 && c <= 0x0217) - { - if (c & 1) - { - return c - 1; - } - } - else if (c >= 0x0430 && c <= 0x044F) - { - return c - 32; - } - else if ((c >= 0x0451 && c <= 0x045C) || (c >= 0x045E && c <= 0x045F)) - { - return c - 80; - } - else if (c >= 0x0460 && c <= 0x047F) - { - if (c & 1) - { - return c - 1; - } - } - else if (c >= 0x0561 && c < 0x0587) - { - return c - 48; - } - else if (c >= 0xFF41 && c <= 0xFF5A) - { - return c - 32; - } - } - return c; + return utils::case_lookup(toupper_map, c); } } diff --git a/test/test_ctype.cpp b/test/test_ctype.cpp index 2f708ff..f8b3052 100644 --- a/test/test_ctype.cpp +++ b/test/test_ctype.cpp @@ -127,7 +127,7 @@ test_isgraph() assert(isgraph(U'€')); assert(!isgraph(U' ')); - assert(!isgraph(U'\u093b')); + assert(!isgraph(0x205f)); } static void