Skip to content

Instantly share code, notes, and snippets.

@sidgwick
Created January 5, 2024 10:06
Show Gist options
  • Save sidgwick/a41e2a827c16e0691486d10ec47879ca to your computer and use it in GitHub Desktop.
Save sidgwick/a41e2a827c16e0691486d10ec47879ca to your computer and use it in GitHub Desktop.
Javascript 判断不可打印字符
// Bit masks for each code point under U+0100, for fast lookup.
const pC = 1 << 0; // a control character.
const pP = 1 << 1; // a punctuation character.
const pN = 1 << 2; // a numeral.
const pS = 1 << 3; // a symbolic character.
const pZ = 1 << 4; // a spacing character.
const pLu = 1 << 5; // an upper-case letter.
const pLl = 1 << 6; // a lower-case letter.
const pp = 1 << 7; // a printable character according to Go's definition.
const pg = pp | pZ; // a graphical character according to the Unicode definition.
const pLo = pLl | pLu; // a letter that is neither upper nor lower case.
const pLmask = pLo;
// maximum Latin-1 value.
const MaxLatin1 = 0xFF;
// linearMax is the maximum size table for linear search for non-Latin1 rune.
// Derived by running 'go test -calibrate'.
const linearMax = 18;
const properties: number[] = [];
properties[0x00] = pC; // '\x00'
properties[0x01] = pC; // '\x01'
properties[0x02] = pC; // '\x02'
properties[0x03] = pC; // '\x03'
properties[0x04] = pC; // '\x04'
properties[0x05] = pC; // '\x05'
properties[0x06] = pC; // '\x06'
properties[0x07] = pC; // '\a'
properties[0x08] = pC; // '\b'
properties[0x09] = pC; // '\t'
properties[0x0A] = pC; // '\n'
properties[0x0B] = pC; // '\v'
properties[0x0C] = pC; // '\f'
properties[0x0D] = pC; // '\r'
properties[0x0E] = pC; // '\x0e'
properties[0x0F] = pC; // '\x0f'
properties[0x10] = pC; // '\x10'
properties[0x11] = pC; // '\x11'
properties[0x12] = pC; // '\x12'
properties[0x13] = pC; // '\x13'
properties[0x14] = pC; // '\x14'
properties[0x15] = pC; // '\x15'
properties[0x16] = pC; // '\x16'
properties[0x17] = pC; // '\x17'
properties[0x18] = pC; // '\x18'
properties[0x19] = pC; // '\x19'
properties[0x1A] = pC; // '\x1a'
properties[0x1B] = pC; // '\x1b'
properties[0x1C] = pC; // '\x1c'
properties[0x1D] = pC; // '\x1d'
properties[0x1E] = pC; // '\x1e'
properties[0x1F] = pC; // '\x1f'
properties[0x20] = pZ | pp; // ' '
properties[0x21] = pP | pp; // '!'
properties[0x22] = pP | pp; // '"'
properties[0x23] = pP | pp; // '#'
properties[0x24] = pS | pp; // '$'
properties[0x25] = pP | pp; // '%'
properties[0x26] = pP | pp; // '&'
properties[0x27] = pP | pp; // '\''
properties[0x28] = pP | pp; // '('
properties[0x29] = pP | pp; // ')'
properties[0x2A] = pP | pp; // '*'
properties[0x2B] = pS | pp; // '+'
properties[0x2C] = pP | pp; // ','
properties[0x2D] = pP | pp; // '-'
properties[0x2E] = pP | pp; // '.'
properties[0x2F] = pP | pp; // '/'
properties[0x30] = pN | pp; // '0'
properties[0x31] = pN | pp; // '1'
properties[0x32] = pN | pp; // '2'
properties[0x33] = pN | pp; // '3'
properties[0x34] = pN | pp; // '4'
properties[0x35] = pN | pp; // '5'
properties[0x36] = pN | pp; // '6'
properties[0x37] = pN | pp; // '7'
properties[0x38] = pN | pp; // '8'
properties[0x39] = pN | pp; // '9'
properties[0x3A] = pP | pp; // ':'
properties[0x3B] = pP | pp; // ';'
properties[0x3C] = pS | pp; // '<'
properties[0x3D] = pS | pp; // '='
properties[0x3E] = pS | pp; // '>'
properties[0x3F] = pP | pp; // '?'
properties[0x40] = pP | pp; // '@'
properties[0x41] = pLu | pp; // 'A'
properties[0x42] = pLu | pp; // 'B'
properties[0x43] = pLu | pp; // 'C'
properties[0x44] = pLu | pp; // 'D'
properties[0x45] = pLu | pp; // 'E'
properties[0x46] = pLu | pp; // 'F'
properties[0x47] = pLu | pp; // 'G'
properties[0x48] = pLu | pp; // 'H'
properties[0x49] = pLu | pp; // 'I'
properties[0x4A] = pLu | pp; // 'J'
properties[0x4B] = pLu | pp; // 'K'
properties[0x4C] = pLu | pp; // 'L'
properties[0x4D] = pLu | pp; // 'M'
properties[0x4E] = pLu | pp; // 'N'
properties[0x4F] = pLu | pp; // 'O'
properties[0x50] = pLu | pp; // 'P'
properties[0x51] = pLu | pp; // 'Q'
properties[0x52] = pLu | pp; // 'R'
properties[0x53] = pLu | pp; // 'S'
properties[0x54] = pLu | pp; // 'T'
properties[0x55] = pLu | pp; // 'U'
properties[0x56] = pLu | pp; // 'V'
properties[0x57] = pLu | pp; // 'W'
properties[0x58] = pLu | pp; // 'X'
properties[0x59] = pLu | pp; // 'Y'
properties[0x5A] = pLu | pp; // 'Z'
properties[0x5B] = pP | pp; // '['
properties[0x5C] = pP | pp; // '\\'
properties[0x5D] = pP | pp; // ']'
properties[0x5E] = pS | pp; // '^'
properties[0x5F] = pP | pp; // '_'
properties[0x60] = pS | pp; // '`'
properties[0x61] = pLl | pp; // 'a'
properties[0x62] = pLl | pp; // 'b'
properties[0x63] = pLl | pp; // 'c'
properties[0x64] = pLl | pp; // 'd'
properties[0x65] = pLl | pp; // 'e'
properties[0x66] = pLl | pp; // 'f'
properties[0x67] = pLl | pp; // 'g'
properties[0x68] = pLl | pp; // 'h'
properties[0x69] = pLl | pp; // 'i'
properties[0x6A] = pLl | pp; // 'j'
properties[0x6B] = pLl | pp; // 'k'
properties[0x6C] = pLl | pp; // 'l'
properties[0x6D] = pLl | pp; // 'm'
properties[0x6E] = pLl | pp; // 'n'
properties[0x6F] = pLl | pp; // 'o'
properties[0x70] = pLl | pp; // 'p'
properties[0x71] = pLl | pp; // 'q'
properties[0x72] = pLl | pp; // 'r'
properties[0x73] = pLl | pp; // 's'
properties[0x74] = pLl | pp; // 't'
properties[0x75] = pLl | pp; // 'u'
properties[0x76] = pLl | pp; // 'v'
properties[0x77] = pLl | pp; // 'w'
properties[0x78] = pLl | pp; // 'x'
properties[0x79] = pLl | pp; // 'y'
properties[0x7A] = pLl | pp; // 'z'
properties[0x7B] = pP | pp; // '{'
properties[0x7C] = pS | pp; // '|'
properties[0x7D] = pP | pp; // '}'
properties[0x7E] = pS | pp; // '~'
properties[0x7F] = pC; // '\u007f'
properties[0x80] = pC; // '\u0080'
properties[0x81] = pC; // '\u0081'
properties[0x82] = pC; // '\u0082'
properties[0x83] = pC; // '\u0083'
properties[0x84] = pC; // '\u0084'
properties[0x85] = pC; // '\u0085'
properties[0x86] = pC; // '\u0086'
properties[0x87] = pC; // '\u0087'
properties[0x88] = pC; // '\u0088'
properties[0x89] = pC; // '\u0089'
properties[0x8A] = pC; // '\u008a'
properties[0x8B] = pC; // '\u008b'
properties[0x8C] = pC; // '\u008c'
properties[0x8D] = pC; // '\u008d'
properties[0x8E] = pC; // '\u008e'
properties[0x8F] = pC; // '\u008f'
properties[0x90] = pC; // '\u0090'
properties[0x91] = pC; // '\u0091'
properties[0x92] = pC; // '\u0092'
properties[0x93] = pC; // '\u0093'
properties[0x94] = pC; // '\u0094'
properties[0x95] = pC; // '\u0095'
properties[0x96] = pC; // '\u0096'
properties[0x97] = pC; // '\u0097'
properties[0x98] = pC; // '\u0098'
properties[0x99] = pC; // '\u0099'
properties[0x9A] = pC; // '\u009a'
properties[0x9B] = pC; // '\u009b'
properties[0x9C] = pC; // '\u009c'
properties[0x9D] = pC; // '\u009d'
properties[0x9E] = pC; // '\u009e'
properties[0x9F] = pC; // '\u009f'
properties[0xA0] = pZ; // '\u00a0'
properties[0xA1] = pP | pp; // '¡'
properties[0xA2] = pS | pp; // '¢'
properties[0xA3] = pS | pp; // '£'
properties[0xA4] = pS | pp; // '¤'
properties[0xA5] = pS | pp; // '¥'
properties[0xA6] = pS | pp; // '¦'
properties[0xA7] = pP | pp; // '§'
properties[0xA8] = pS | pp; // '¨'
properties[0xA9] = pS | pp; // '©'
properties[0xAA] = pLo | pp; // 'ª'
properties[0xAB] = pP | pp; // '«'
properties[0xAC] = pS | pp; // '¬'
properties[0xAD] = 0; // '\u00ad'
properties[0xAE] = pS | pp; // '®'
properties[0xAF] = pS | pp; // '¯'
properties[0xB0] = pS | pp; // '°'
properties[0xB1] = pS | pp; // '±'
properties[0xB2] = pN | pp; // '²'
properties[0xB3] = pN | pp; // '³'
properties[0xB4] = pS | pp; // '´'
properties[0xB5] = pLl | pp; // 'µ'
properties[0xB6] = pP | pp; // '¶'
properties[0xB7] = pP | pp; // '·'
properties[0xB8] = pS | pp; // '¸'
properties[0xB9] = pN | pp; // '¹'
properties[0xBA] = pLo | pp; // 'º'
properties[0xBB] = pP | pp; // '»'
properties[0xBC] = pN | pp; // '¼'
properties[0xBD] = pN | pp; // '½'
properties[0xBE] = pN | pp; // '¾'
properties[0xBF] = pP | pp; // '¿'
properties[0xC0] = pLu | pp; // 'À'
properties[0xC1] = pLu | pp; // 'Á'
properties[0xC2] = pLu | pp; // 'Â'
properties[0xC3] = pLu | pp; // 'Ã'
properties[0xC4] = pLu | pp; // 'Ä'
properties[0xC5] = pLu | pp; // 'Å'
properties[0xC6] = pLu | pp; // 'Æ'
properties[0xC7] = pLu | pp; // 'Ç'
properties[0xC8] = pLu | pp; // 'È'
properties[0xC9] = pLu | pp; // 'É'
properties[0xCA] = pLu | pp; // 'Ê'
properties[0xCB] = pLu | pp; // 'Ë'
properties[0xCC] = pLu | pp; // 'Ì'
properties[0xCD] = pLu | pp; // 'Í'
properties[0xCE] = pLu | pp; // 'Î'
properties[0xCF] = pLu | pp; // 'Ï'
properties[0xD0] = pLu | pp; // 'Ð'
properties[0xD1] = pLu | pp; // 'Ñ'
properties[0xD2] = pLu | pp; // 'Ò'
properties[0xD3] = pLu | pp; // 'Ó'
properties[0xD4] = pLu | pp; // 'Ô'
properties[0xD5] = pLu | pp; // 'Õ'
properties[0xD6] = pLu | pp; // 'Ö'
properties[0xD7] = pS | pp; // '×'
properties[0xD8] = pLu | pp; // 'Ø'
properties[0xD9] = pLu | pp; // 'Ù'
properties[0xDA] = pLu | pp; // 'Ú'
properties[0xDB] = pLu | pp; // 'Û'
properties[0xDC] = pLu | pp; // 'Ü'
properties[0xDD] = pLu | pp; // 'Ý'
properties[0xDE] = pLu | pp; // 'Þ'
properties[0xDF] = pLl | pp; // 'ß'
properties[0xE0] = pLl | pp; // 'à'
properties[0xE1] = pLl | pp; // 'á'
properties[0xE2] = pLl | pp; // 'â'
properties[0xE3] = pLl | pp; // 'ã'
properties[0xE4] = pLl | pp; // 'ä'
properties[0xE5] = pLl | pp; // 'å'
properties[0xE6] = pLl | pp; // 'æ'
properties[0xE7] = pLl | pp; // 'ç'
properties[0xE8] = pLl | pp; // 'è'
properties[0xE9] = pLl | pp; // 'é'
properties[0xEA] = pLl | pp; // 'ê'
properties[0xEB] = pLl | pp; // 'ë'
properties[0xEC] = pLl | pp; // 'ì'
properties[0xED] = pLl | pp; // 'í'
properties[0xEE] = pLl | pp; // 'î'
properties[0xEF] = pLl | pp; // 'ï'
properties[0xF0] = pLl | pp; // 'ð'
properties[0xF1] = pLl | pp; // 'ñ'
properties[0xF2] = pLl | pp; // 'ò'
properties[0xF3] = pLl | pp; // 'ó'
properties[0xF4] = pLl | pp; // 'ô'
properties[0xF5] = pLl | pp; // 'õ'
properties[0xF6] = pLl | pp; // 'ö'
properties[0xF7] = pS | pp; // '÷'
properties[0xF8] = pLl | pp; // 'ø'
properties[0xF9] = pLl | pp; // 'ù'
properties[0xFA] = pLl | pp; // 'ú'
properties[0xFB] = pLl | pp; // 'û'
properties[0xFC] = pLl | pp; // 'ü'
properties[0xFD] = pLl | pp; // 'ý'
properties[0xFE] = pLl | pp; // 'þ'
properties[0xFF] = pLl | pp; // 'ÿ'
// Range16 represents of a range of 16-bit Unicode code points. The range runs from Lo to Hi
// inclusive and has the specified stride.
interface Range16 {
Lo: number
Hi: number
Stride: number
}
// Range32 represents of a range of Unicode code points and is used when one or
// more of the values will not fit in 16 bits. The range runs from Lo to Hi
// inclusive and has the specified stride. Lo and Hi must always be >= 1<<16.
interface Range32 {
Lo: number
Hi: number
Stride: number
}
// RangeTable defines a set of Unicode code points by listing the ranges of
// code points within the set. The ranges are listed in two slices
// to save space: a slice of 16-bit ranges and a slice of 32-bit ranges.
// The two slices must be in sorted order and non-overlapping.
// Also, R32 should contain only values >= 0x10000 (1<<16).
interface RangeTable {
R16: Range16[]
R32: Range32[]
LatinOffset: number // number of entries in R16 with Hi <= MaxLatin1
}
const L: RangeTable = {
R16: [
{ Lo: 0x0041, Hi: 0x005a, Stride: 1 },
{ Lo: 0x0061, Hi: 0x007a, Stride: 1 },
{ Lo: 0x00aa, Hi: 0x00b5, Stride: 11 },
{ Lo: 0x00ba, Hi: 0x00c0, Stride: 6 },
{ Lo: 0x00c1, Hi: 0x00d6, Stride: 1 },
{ Lo: 0x00d8, Hi: 0x00f6, Stride: 1 },
{ Lo: 0x00f8, Hi: 0x02c1, Stride: 1 },
{ Lo: 0x02c6, Hi: 0x02d1, Stride: 1 },
{ Lo: 0x02e0, Hi: 0x02e4, Stride: 1 },
{ Lo: 0x02ec, Hi: 0x02ee, Stride: 2 },
{ Lo: 0x0370, Hi: 0x0374, Stride: 1 },
{ Lo: 0x0376, Hi: 0x0377, Stride: 1 },
{ Lo: 0x037a, Hi: 0x037d, Stride: 1 },
{ Lo: 0x037f, Hi: 0x0386, Stride: 7 },
{ Lo: 0x0388, Hi: 0x038a, Stride: 1 },
{ Lo: 0x038c, Hi: 0x038e, Stride: 2 },
{ Lo: 0x038f, Hi: 0x03a1, Stride: 1 },
{ Lo: 0x03a3, Hi: 0x03f5, Stride: 1 },
{ Lo: 0x03f7, Hi: 0x0481, Stride: 1 },
{ Lo: 0x048a, Hi: 0x052f, Stride: 1 },
{ Lo: 0x0531, Hi: 0x0556, Stride: 1 },
{ Lo: 0x0559, Hi: 0x0560, Stride: 7 },
{ Lo: 0x0561, Hi: 0x0588, Stride: 1 },
{ Lo: 0x05d0, Hi: 0x05ea, Stride: 1 },
{ Lo: 0x05ef, Hi: 0x05f2, Stride: 1 },
{ Lo: 0x0620, Hi: 0x064a, Stride: 1 },
{ Lo: 0x066e, Hi: 0x066f, Stride: 1 },
{ Lo: 0x0671, Hi: 0x06d3, Stride: 1 },
{ Lo: 0x06d5, Hi: 0x06e5, Stride: 16 },
{ Lo: 0x06e6, Hi: 0x06ee, Stride: 8 },
{ Lo: 0x06ef, Hi: 0x06fa, Stride: 11 },
{ Lo: 0x06fb, Hi: 0x06fc, Stride: 1 },
{ Lo: 0x06ff, Hi: 0x0710, Stride: 17 },
{ Lo: 0x0712, Hi: 0x072f, Stride: 1 },
{ Lo: 0x074d, Hi: 0x07a5, Stride: 1 },
{ Lo: 0x07b1, Hi: 0x07ca, Stride: 25 },
{ Lo: 0x07cb, Hi: 0x07ea, Stride: 1 },
{ Lo: 0x07f4, Hi: 0x07f5, Stride: 1 },
{ Lo: 0x07fa, Hi: 0x0800, Stride: 6 },
{ Lo: 0x0801, Hi: 0x0815, Stride: 1 },
{ Lo: 0x081a, Hi: 0x0824, Stride: 10 },
{ Lo: 0x0828, Hi: 0x0840, Stride: 24 },
{ Lo: 0x0841, Hi: 0x0858, Stride: 1 },
{ Lo: 0x0860, Hi: 0x086a, Stride: 1 },
{ Lo: 0x08a0, Hi: 0x08b4, Stride: 1 },
{ Lo: 0x08b6, Hi: 0x08c7, Stride: 1 },
{ Lo: 0x0904, Hi: 0x0939, Stride: 1 },
{ Lo: 0x093d, Hi: 0x0950, Stride: 19 },
{ Lo: 0x0958, Hi: 0x0961, Stride: 1 },
{ Lo: 0x0971, Hi: 0x0980, Stride: 1 },
{ Lo: 0x0985, Hi: 0x098c, Stride: 1 },
{ Lo: 0x098f, Hi: 0x0990, Stride: 1 },
{ Lo: 0x0993, Hi: 0x09a8, Stride: 1 },
{ Lo: 0x09aa, Hi: 0x09b0, Stride: 1 },
{ Lo: 0x09b2, Hi: 0x09b6, Stride: 4 },
{ Lo: 0x09b7, Hi: 0x09b9, Stride: 1 },
{ Lo: 0x09bd, Hi: 0x09ce, Stride: 17 },
{ Lo: 0x09dc, Hi: 0x09dd, Stride: 1 },
{ Lo: 0x09df, Hi: 0x09e1, Stride: 1 },
{ Lo: 0x09f0, Hi: 0x09f1, Stride: 1 },
{ Lo: 0x09fc, Hi: 0x0a05, Stride: 9 },
{ Lo: 0x0a06, Hi: 0x0a0a, Stride: 1 },
{ Lo: 0x0a0f, Hi: 0x0a10, Stride: 1 },
{ Lo: 0x0a13, Hi: 0x0a28, Stride: 1 },
{ Lo: 0x0a2a, Hi: 0x0a30, Stride: 1 },
{ Lo: 0x0a32, Hi: 0x0a33, Stride: 1 },
{ Lo: 0x0a35, Hi: 0x0a36, Stride: 1 },
{ Lo: 0x0a38, Hi: 0x0a39, Stride: 1 },
{ Lo: 0x0a59, Hi: 0x0a5c, Stride: 1 },
{ Lo: 0x0a5e, Hi: 0x0a72, Stride: 20 },
{ Lo: 0x0a73, Hi: 0x0a74, Stride: 1 },
{ Lo: 0x0a85, Hi: 0x0a8d, Stride: 1 },
{ Lo: 0x0a8f, Hi: 0x0a91, Stride: 1 },
{ Lo: 0x0a93, Hi: 0x0aa8, Stride: 1 },
{ Lo: 0x0aaa, Hi: 0x0ab0, Stride: 1 },
{ Lo: 0x0ab2, Hi: 0x0ab3, Stride: 1 },
{ Lo: 0x0ab5, Hi: 0x0ab9, Stride: 1 },
{ Lo: 0x0abd, Hi: 0x0ad0, Stride: 19 },
{ Lo: 0x0ae0, Hi: 0x0ae1, Stride: 1 },
{ Lo: 0x0af9, Hi: 0x0b05, Stride: 12 },
{ Lo: 0x0b06, Hi: 0x0b0c, Stride: 1 },
{ Lo: 0x0b0f, Hi: 0x0b10, Stride: 1 },
{ Lo: 0x0b13, Hi: 0x0b28, Stride: 1 },
{ Lo: 0x0b2a, Hi: 0x0b30, Stride: 1 },
{ Lo: 0x0b32, Hi: 0x0b33, Stride: 1 },
{ Lo: 0x0b35, Hi: 0x0b39, Stride: 1 },
{ Lo: 0x0b3d, Hi: 0x0b5c, Stride: 31 },
{ Lo: 0x0b5d, Hi: 0x0b5f, Stride: 2 },
{ Lo: 0x0b60, Hi: 0x0b61, Stride: 1 },
{ Lo: 0x0b71, Hi: 0x0b83, Stride: 18 },
{ Lo: 0x0b85, Hi: 0x0b8a, Stride: 1 },
{ Lo: 0x0b8e, Hi: 0x0b90, Stride: 1 },
{ Lo: 0x0b92, Hi: 0x0b95, Stride: 1 },
{ Lo: 0x0b99, Hi: 0x0b9a, Stride: 1 },
{ Lo: 0x0b9c, Hi: 0x0b9e, Stride: 2 },
{ Lo: 0x0b9f, Hi: 0x0ba3, Stride: 4 },
{ Lo: 0x0ba4, Hi: 0x0ba8, Stride: 4 },
{ Lo: 0x0ba9, Hi: 0x0baa, Stride: 1 },
{ Lo: 0x0bae, Hi: 0x0bb9, Stride: 1 },
{ Lo: 0x0bd0, Hi: 0x0c05, Stride: 53 },
{ Lo: 0x0c06, Hi: 0x0c0c, Stride: 1 },
{ Lo: 0x0c0e, Hi: 0x0c10, Stride: 1 },
{ Lo: 0x0c12, Hi: 0x0c28, Stride: 1 },
{ Lo: 0x0c2a, Hi: 0x0c39, Stride: 1 },
{ Lo: 0x0c3d, Hi: 0x0c58, Stride: 27 },
{ Lo: 0x0c59, Hi: 0x0c5a, Stride: 1 },
{ Lo: 0x0c60, Hi: 0x0c61, Stride: 1 },
{ Lo: 0x0c80, Hi: 0x0c85, Stride: 5 },
{ Lo: 0x0c86, Hi: 0x0c8c, Stride: 1 },
{ Lo: 0x0c8e, Hi: 0x0c90, Stride: 1 },
{ Lo: 0x0c92, Hi: 0x0ca8, Stride: 1 },
{ Lo: 0x0caa, Hi: 0x0cb3, Stride: 1 },
{ Lo: 0x0cb5, Hi: 0x0cb9, Stride: 1 },
{ Lo: 0x0cbd, Hi: 0x0cde, Stride: 33 },
{ Lo: 0x0ce0, Hi: 0x0ce1, Stride: 1 },
{ Lo: 0x0cf1, Hi: 0x0cf2, Stride: 1 },
{ Lo: 0x0d04, Hi: 0x0d0c, Stride: 1 },
{ Lo: 0x0d0e, Hi: 0x0d10, Stride: 1 },
{ Lo: 0x0d12, Hi: 0x0d3a, Stride: 1 },
{ Lo: 0x0d3d, Hi: 0x0d4e, Stride: 17 },
{ Lo: 0x0d54, Hi: 0x0d56, Stride: 1 },
{ Lo: 0x0d5f, Hi: 0x0d61, Stride: 1 },
{ Lo: 0x0d7a, Hi: 0x0d7f, Stride: 1 },
{ Lo: 0x0d85, Hi: 0x0d96, Stride: 1 },
{ Lo: 0x0d9a, Hi: 0x0db1, Stride: 1 },
{ Lo: 0x0db3, Hi: 0x0dbb, Stride: 1 },
{ Lo: 0x0dbd, Hi: 0x0dc0, Stride: 3 },
{ Lo: 0x0dc1, Hi: 0x0dc6, Stride: 1 },
{ Lo: 0x0e01, Hi: 0x0e30, Stride: 1 },
{ Lo: 0x0e32, Hi: 0x0e33, Stride: 1 },
{ Lo: 0x0e40, Hi: 0x0e46, Stride: 1 },
{ Lo: 0x0e81, Hi: 0x0e82, Stride: 1 },
{ Lo: 0x0e84, Hi: 0x0e86, Stride: 2 },
{ Lo: 0x0e87, Hi: 0x0e8a, Stride: 1 },
{ Lo: 0x0e8c, Hi: 0x0ea3, Stride: 1 },
{ Lo: 0x0ea5, Hi: 0x0ea7, Stride: 2 },
{ Lo: 0x0ea8, Hi: 0x0eb0, Stride: 1 },
{ Lo: 0x0eb2, Hi: 0x0eb3, Stride: 1 },
{ Lo: 0x0ebd, Hi: 0x0ec0, Stride: 3 },
{ Lo: 0x0ec1, Hi: 0x0ec4, Stride: 1 },
{ Lo: 0x0ec6, Hi: 0x0edc, Stride: 22 },
{ Lo: 0x0edd, Hi: 0x0edf, Stride: 1 },
{ Lo: 0x0f00, Hi: 0x0f40, Stride: 64 },
{ Lo: 0x0f41, Hi: 0x0f47, Stride: 1 },
{ Lo: 0x0f49, Hi: 0x0f6c, Stride: 1 },
{ Lo: 0x0f88, Hi: 0x0f8c, Stride: 1 },
{ Lo: 0x1000, Hi: 0x102a, Stride: 1 },
{ Lo: 0x103f, Hi: 0x1050, Stride: 17 },
{ Lo: 0x1051, Hi: 0x1055, Stride: 1 },
{ Lo: 0x105a, Hi: 0x105d, Stride: 1 },
{ Lo: 0x1061, Hi: 0x1065, Stride: 4 },
{ Lo: 0x1066, Hi: 0x106e, Stride: 8 },
{ Lo: 0x106f, Hi: 0x1070, Stride: 1 },
{ Lo: 0x1075, Hi: 0x1081, Stride: 1 },
{ Lo: 0x108e, Hi: 0x10a0, Stride: 18 },
{ Lo: 0x10a1, Hi: 0x10c5, Stride: 1 },
{ Lo: 0x10c7, Hi: 0x10cd, Stride: 6 },
{ Lo: 0x10d0, Hi: 0x10fa, Stride: 1 },
{ Lo: 0x10fc, Hi: 0x1248, Stride: 1 },
{ Lo: 0x124a, Hi: 0x124d, Stride: 1 },
{ Lo: 0x1250, Hi: 0x1256, Stride: 1 },
{ Lo: 0x1258, Hi: 0x125a, Stride: 2 },
{ Lo: 0x125b, Hi: 0x125d, Stride: 1 },
{ Lo: 0x1260, Hi: 0x1288, Stride: 1 },
{ Lo: 0x128a, Hi: 0x128d, Stride: 1 },
{ Lo: 0x1290, Hi: 0x12b0, Stride: 1 },
{ Lo: 0x12b2, Hi: 0x12b5, Stride: 1 },
{ Lo: 0x12b8, Hi: 0x12be, Stride: 1 },
{ Lo: 0x12c0, Hi: 0x12c2, Stride: 2 },
{ Lo: 0x12c3, Hi: 0x12c5, Stride: 1 },
{ Lo: 0x12c8, Hi: 0x12d6, Stride: 1 },
{ Lo: 0x12d8, Hi: 0x1310, Stride: 1 },
{ Lo: 0x1312, Hi: 0x1315, Stride: 1 },
{ Lo: 0x1318, Hi: 0x135a, Stride: 1 },
{ Lo: 0x1380, Hi: 0x138f, Stride: 1 },
{ Lo: 0x13a0, Hi: 0x13f5, Stride: 1 },
{ Lo: 0x13f8, Hi: 0x13fd, Stride: 1 },
{ Lo: 0x1401, Hi: 0x166c, Stride: 1 },
{ Lo: 0x166f, Hi: 0x167f, Stride: 1 },
{ Lo: 0x1681, Hi: 0x169a, Stride: 1 },
{ Lo: 0x16a0, Hi: 0x16ea, Stride: 1 },
{ Lo: 0x16f1, Hi: 0x16f8, Stride: 1 },
{ Lo: 0x1700, Hi: 0x170c, Stride: 1 },
{ Lo: 0x170e, Hi: 0x1711, Stride: 1 },
{ Lo: 0x1720, Hi: 0x1731, Stride: 1 },
{ Lo: 0x1740, Hi: 0x1751, Stride: 1 },
{ Lo: 0x1760, Hi: 0x176c, Stride: 1 },
{ Lo: 0x176e, Hi: 0x1770, Stride: 1 },
{ Lo: 0x1780, Hi: 0x17b3, Stride: 1 },
{ Lo: 0x17d7, Hi: 0x17dc, Stride: 5 },
{ Lo: 0x1820, Hi: 0x1878, Stride: 1 },
{ Lo: 0x1880, Hi: 0x1884, Stride: 1 },
{ Lo: 0x1887, Hi: 0x18a8, Stride: 1 },
{ Lo: 0x18aa, Hi: 0x18b0, Stride: 6 },
{ Lo: 0x18b1, Hi: 0x18f5, Stride: 1 },
{ Lo: 0x1900, Hi: 0x191e, Stride: 1 },
{ Lo: 0x1950, Hi: 0x196d, Stride: 1 },
{ Lo: 0x1970, Hi: 0x1974, Stride: 1 },
{ Lo: 0x1980, Hi: 0x19ab, Stride: 1 },
{ Lo: 0x19b0, Hi: 0x19c9, Stride: 1 },
{ Lo: 0x1a00, Hi: 0x1a16, Stride: 1 },
{ Lo: 0x1a20, Hi: 0x1a54, Stride: 1 },
{ Lo: 0x1aa7, Hi: 0x1b05, Stride: 94 },
{ Lo: 0x1b06, Hi: 0x1b33, Stride: 1 },
{ Lo: 0x1b45, Hi: 0x1b4b, Stride: 1 },
{ Lo: 0x1b83, Hi: 0x1ba0, Stride: 1 },
{ Lo: 0x1bae, Hi: 0x1baf, Stride: 1 },
{ Lo: 0x1bba, Hi: 0x1be5, Stride: 1 },
{ Lo: 0x1c00, Hi: 0x1c23, Stride: 1 },
{ Lo: 0x1c4d, Hi: 0x1c4f, Stride: 1 },
{ Lo: 0x1c5a, Hi: 0x1c7d, Stride: 1 },
{ Lo: 0x1c80, Hi: 0x1c88, Stride: 1 },
{ Lo: 0x1c90, Hi: 0x1cba, Stride: 1 },
{ Lo: 0x1cbd, Hi: 0x1cbf, Stride: 1 },
{ Lo: 0x1ce9, Hi: 0x1cec, Stride: 1 },
{ Lo: 0x1cee, Hi: 0x1cf3, Stride: 1 },
{ Lo: 0x1cf5, Hi: 0x1cf6, Stride: 1 },
{ Lo: 0x1cfa, Hi: 0x1d00, Stride: 6 },
{ Lo: 0x1d01, Hi: 0x1dbf, Stride: 1 },
{ Lo: 0x1e00, Hi: 0x1f15, Stride: 1 },
{ Lo: 0x1f18, Hi: 0x1f1d, Stride: 1 },
{ Lo: 0x1f20, Hi: 0x1f45, Stride: 1 },
{ Lo: 0x1f48, Hi: 0x1f4d, Stride: 1 },
{ Lo: 0x1f50, Hi: 0x1f57, Stride: 1 },
{ Lo: 0x1f59, Hi: 0x1f5f, Stride: 2 },
{ Lo: 0x1f60, Hi: 0x1f7d, Stride: 1 },
{ Lo: 0x1f80, Hi: 0x1fb4, Stride: 1 },
{ Lo: 0x1fb6, Hi: 0x1fbc, Stride: 1 },
{ Lo: 0x1fbe, Hi: 0x1fc2, Stride: 4 },
{ Lo: 0x1fc3, Hi: 0x1fc4, Stride: 1 },
{ Lo: 0x1fc6, Hi: 0x1fcc, Stride: 1 },
{ Lo: 0x1fd0, Hi: 0x1fd3, Stride: 1 },
{ Lo: 0x1fd6, Hi: 0x1fdb, Stride: 1 },
{ Lo: 0x1fe0, Hi: 0x1fec, Stride: 1 },
{ Lo: 0x1ff2, Hi: 0x1ff4, Stride: 1 },
{ Lo: 0x1ff6, Hi: 0x1ffc, Stride: 1 },
{ Lo: 0x2071, Hi: 0x207f, Stride: 14 },
{ Lo: 0x2090, Hi: 0x209c, Stride: 1 },
{ Lo: 0x2102, Hi: 0x2107, Stride: 5 },
{ Lo: 0x210a, Hi: 0x2113, Stride: 1 },
{ Lo: 0x2115, Hi: 0x2119, Stride: 4 },
{ Lo: 0x211a, Hi: 0x211d, Stride: 1 },
{ Lo: 0x2124, Hi: 0x212a, Stride: 2 },
{ Lo: 0x212b, Hi: 0x212d, Stride: 1 },
{ Lo: 0x212f, Hi: 0x2139, Stride: 1 },
{ Lo: 0x213c, Hi: 0x213f, Stride: 1 },
{ Lo: 0x2145, Hi: 0x2149, Stride: 1 },
{ Lo: 0x214e, Hi: 0x2183, Stride: 53 },
{ Lo: 0x2184, Hi: 0x2c00, Stride: 2684 },
{ Lo: 0x2c01, Hi: 0x2c2e, Stride: 1 },
{ Lo: 0x2c30, Hi: 0x2c5e, Stride: 1 },
{ Lo: 0x2c60, Hi: 0x2ce4, Stride: 1 },
{ Lo: 0x2ceb, Hi: 0x2cee, Stride: 1 },
{ Lo: 0x2cf2, Hi: 0x2cf3, Stride: 1 },
{ Lo: 0x2d00, Hi: 0x2d25, Stride: 1 },
{ Lo: 0x2d27, Hi: 0x2d2d, Stride: 6 },
{ Lo: 0x2d30, Hi: 0x2d67, Stride: 1 },
{ Lo: 0x2d6f, Hi: 0x2d80, Stride: 17 },
{ Lo: 0x2d81, Hi: 0x2d96, Stride: 1 },
{ Lo: 0x2da0, Hi: 0x2da6, Stride: 1 },
{ Lo: 0x2da8, Hi: 0x2dae, Stride: 1 },
{ Lo: 0x2db0, Hi: 0x2db6, Stride: 1 },
{ Lo: 0x2db8, Hi: 0x2dbe, Stride: 1 },
{ Lo: 0x2dc0, Hi: 0x2dc6, Stride: 1 },
{ Lo: 0x2dc8, Hi: 0x2dce, Stride: 1 },
{ Lo: 0x2dd0, Hi: 0x2dd6, Stride: 1 },
{ Lo: 0x2dd8, Hi: 0x2dde, Stride: 1 },
{ Lo: 0x2e2f, Hi: 0x3005, Stride: 470 },
{ Lo: 0x3006, Hi: 0x3031, Stride: 43 },
{ Lo: 0x3032, Hi: 0x3035, Stride: 1 },
{ Lo: 0x303b, Hi: 0x303c, Stride: 1 },
{ Lo: 0x3041, Hi: 0x3096, Stride: 1 },
{ Lo: 0x309d, Hi: 0x309f, Stride: 1 },
{ Lo: 0x30a1, Hi: 0x30fa, Stride: 1 },
{ Lo: 0x30fc, Hi: 0x30ff, Stride: 1 },
{ Lo: 0x3105, Hi: 0x312f, Stride: 1 },
{ Lo: 0x3131, Hi: 0x318e, Stride: 1 },
{ Lo: 0x31a0, Hi: 0x31bf, Stride: 1 },
{ Lo: 0x31f0, Hi: 0x31ff, Stride: 1 },
{ Lo: 0x3400, Hi: 0x4dbf, Stride: 1 },
{ Lo: 0x4e00, Hi: 0x9ffc, Stride: 1 },
{ Lo: 0xa000, Hi: 0xa48c, Stride: 1 },
{ Lo: 0xa4d0, Hi: 0xa4fd, Stride: 1 },
{ Lo: 0xa500, Hi: 0xa60c, Stride: 1 },
{ Lo: 0xa610, Hi: 0xa61f, Stride: 1 },
{ Lo: 0xa62a, Hi: 0xa62b, Stride: 1 },
{ Lo: 0xa640, Hi: 0xa66e, Stride: 1 },
{ Lo: 0xa67f, Hi: 0xa69d, Stride: 1 },
{ Lo: 0xa6a0, Hi: 0xa6e5, Stride: 1 },
{ Lo: 0xa717, Hi: 0xa71f, Stride: 1 },
{ Lo: 0xa722, Hi: 0xa788, Stride: 1 },
{ Lo: 0xa78b, Hi: 0xa7bf, Stride: 1 },
{ Lo: 0xa7c2, Hi: 0xa7ca, Stride: 1 },
{ Lo: 0xa7f5, Hi: 0xa801, Stride: 1 },
{ Lo: 0xa803, Hi: 0xa805, Stride: 1 },
{ Lo: 0xa807, Hi: 0xa80a, Stride: 1 },
{ Lo: 0xa80c, Hi: 0xa822, Stride: 1 },
{ Lo: 0xa840, Hi: 0xa873, Stride: 1 },
{ Lo: 0xa882, Hi: 0xa8b3, Stride: 1 },
{ Lo: 0xa8f2, Hi: 0xa8f7, Stride: 1 },
{ Lo: 0xa8fb, Hi: 0xa8fd, Stride: 2 },
{ Lo: 0xa8fe, Hi: 0xa90a, Stride: 12 },
{ Lo: 0xa90b, Hi: 0xa925, Stride: 1 },
{ Lo: 0xa930, Hi: 0xa946, Stride: 1 },
{ Lo: 0xa960, Hi: 0xa97c, Stride: 1 },
{ Lo: 0xa984, Hi: 0xa9b2, Stride: 1 },
{ Lo: 0xa9cf, Hi: 0xa9e0, Stride: 17 },
{ Lo: 0xa9e1, Hi: 0xa9e4, Stride: 1 },
{ Lo: 0xa9e6, Hi: 0xa9ef, Stride: 1 },
{ Lo: 0xa9fa, Hi: 0xa9fe, Stride: 1 },
{ Lo: 0xaa00, Hi: 0xaa28, Stride: 1 },
{ Lo: 0xaa40, Hi: 0xaa42, Stride: 1 },
{ Lo: 0xaa44, Hi: 0xaa4b, Stride: 1 },
{ Lo: 0xaa60, Hi: 0xaa76, Stride: 1 },
{ Lo: 0xaa7a, Hi: 0xaa7e, Stride: 4 },
{ Lo: 0xaa7f, Hi: 0xaaaf, Stride: 1 },
{ Lo: 0xaab1, Hi: 0xaab5, Stride: 4 },
{ Lo: 0xaab6, Hi: 0xaab9, Stride: 3 },
{ Lo: 0xaaba, Hi: 0xaabd, Stride: 1 },
{ Lo: 0xaac0, Hi: 0xaac2, Stride: 2 },
{ Lo: 0xaadb, Hi: 0xaadd, Stride: 1 },
{ Lo: 0xaae0, Hi: 0xaaea, Stride: 1 },
{ Lo: 0xaaf2, Hi: 0xaaf4, Stride: 1 },
{ Lo: 0xab01, Hi: 0xab06, Stride: 1 },
{ Lo: 0xab09, Hi: 0xab0e, Stride: 1 },
{ Lo: 0xab11, Hi: 0xab16, Stride: 1 },
{ Lo: 0xab20, Hi: 0xab26, Stride: 1 },
{ Lo: 0xab28, Hi: 0xab2e, Stride: 1 },
{ Lo: 0xab30, Hi: 0xab5a, Stride: 1 },
{ Lo: 0xab5c, Hi: 0xab69, Stride: 1 },
{ Lo: 0xab70, Hi: 0xabe2, Stride: 1 },
{ Lo: 0xac00, Hi: 0xd7a3, Stride: 1 },
{ Lo: 0xd7b0, Hi: 0xd7c6, Stride: 1 },
{ Lo: 0xd7cb, Hi: 0xd7fb, Stride: 1 },
{ Lo: 0xf900, Hi: 0xfa6d, Stride: 1 },
{ Lo: 0xfa70, Hi: 0xfad9, Stride: 1 },
{ Lo: 0xfb00, Hi: 0xfb06, Stride: 1 },
{ Lo: 0xfb13, Hi: 0xfb17, Stride: 1 },
{ Lo: 0xfb1d, Hi: 0xfb1f, Stride: 2 },
{ Lo: 0xfb20, Hi: 0xfb28, Stride: 1 },
{ Lo: 0xfb2a, Hi: 0xfb36, Stride: 1 },
{ Lo: 0xfb38, Hi: 0xfb3c, Stride: 1 },
{ Lo: 0xfb3e, Hi: 0xfb40, Stride: 2 },
{ Lo: 0xfb41, Hi: 0xfb43, Stride: 2 },
{ Lo: 0xfb44, Hi: 0xfb46, Stride: 2 },
{ Lo: 0xfb47, Hi: 0xfbb1, Stride: 1 },
{ Lo: 0xfbd3, Hi: 0xfd3d, Stride: 1 },
{ Lo: 0xfd50, Hi: 0xfd8f, Stride: 1 },
{ Lo: 0xfd92, Hi: 0xfdc7, Stride: 1 },
{ Lo: 0xfdf0, Hi: 0xfdfb, Stride: 1 },
{ Lo: 0xfe70, Hi: 0xfe74, Stride: 1 },
{ Lo: 0xfe76, Hi: 0xfefc, Stride: 1 },
{ Lo: 0xff21, Hi: 0xff3a, Stride: 1 },
{ Lo: 0xff41, Hi: 0xff5a, Stride: 1 },
{ Lo: 0xff66, Hi: 0xffbe, Stride: 1 },
{ Lo: 0xffc2, Hi: 0xffc7, Stride: 1 },
{ Lo: 0xffca, Hi: 0xffcf, Stride: 1 },
{ Lo: 0xffd2, Hi: 0xffd7, Stride: 1 },
{ Lo: 0xffda, Hi: 0xffdc, Stride: 1 },
],
R32: [
{ Lo: 0x10000, Hi: 0x1000b, Stride: 1 },
{ Lo: 0x1000d, Hi: 0x10026, Stride: 1 },
{ Lo: 0x10028, Hi: 0x1003a, Stride: 1 },
{ Lo: 0x1003c, Hi: 0x1003d, Stride: 1 },
{ Lo: 0x1003f, Hi: 0x1004d, Stride: 1 },
{ Lo: 0x10050, Hi: 0x1005d, Stride: 1 },
{ Lo: 0x10080, Hi: 0x100fa, Stride: 1 },
{ Lo: 0x10280, Hi: 0x1029c, Stride: 1 },
{ Lo: 0x102a0, Hi: 0x102d0, Stride: 1 },
{ Lo: 0x10300, Hi: 0x1031f, Stride: 1 },
{ Lo: 0x1032d, Hi: 0x10340, Stride: 1 },
{ Lo: 0x10342, Hi: 0x10349, Stride: 1 },
{ Lo: 0x10350, Hi: 0x10375, Stride: 1 },
{ Lo: 0x10380, Hi: 0x1039d, Stride: 1 },
{ Lo: 0x103a0, Hi: 0x103c3, Stride: 1 },
{ Lo: 0x103c8, Hi: 0x103cf, Stride: 1 },
{ Lo: 0x10400, Hi: 0x1049d, Stride: 1 },
{ Lo: 0x104b0, Hi: 0x104d3, Stride: 1 },
{ Lo: 0x104d8, Hi: 0x104fb, Stride: 1 },
{ Lo: 0x10500, Hi: 0x10527, Stride: 1 },
{ Lo: 0x10530, Hi: 0x10563, Stride: 1 },
{ Lo: 0x10600, Hi: 0x10736, Stride: 1 },
{ Lo: 0x10740, Hi: 0x10755, Stride: 1 },
{ Lo: 0x10760, Hi: 0x10767, Stride: 1 },
{ Lo: 0x10800, Hi: 0x10805, Stride: 1 },
{ Lo: 0x10808, Hi: 0x1080a, Stride: 2 },
{ Lo: 0x1080b, Hi: 0x10835, Stride: 1 },
{ Lo: 0x10837, Hi: 0x10838, Stride: 1 },
{ Lo: 0x1083c, Hi: 0x1083f, Stride: 3 },
{ Lo: 0x10840, Hi: 0x10855, Stride: 1 },
{ Lo: 0x10860, Hi: 0x10876, Stride: 1 },
{ Lo: 0x10880, Hi: 0x1089e, Stride: 1 },
{ Lo: 0x108e0, Hi: 0x108f2, Stride: 1 },
{ Lo: 0x108f4, Hi: 0x108f5, Stride: 1 },
{ Lo: 0x10900, Hi: 0x10915, Stride: 1 },
{ Lo: 0x10920, Hi: 0x10939, Stride: 1 },
{ Lo: 0x10980, Hi: 0x109b7, Stride: 1 },
{ Lo: 0x109be, Hi: 0x109bf, Stride: 1 },
{ Lo: 0x10a00, Hi: 0x10a10, Stride: 16 },
{ Lo: 0x10a11, Hi: 0x10a13, Stride: 1 },
{ Lo: 0x10a15, Hi: 0x10a17, Stride: 1 },
{ Lo: 0x10a19, Hi: 0x10a35, Stride: 1 },
{ Lo: 0x10a60, Hi: 0x10a7c, Stride: 1 },
{ Lo: 0x10a80, Hi: 0x10a9c, Stride: 1 },
{ Lo: 0x10ac0, Hi: 0x10ac7, Stride: 1 },
{ Lo: 0x10ac9, Hi: 0x10ae4, Stride: 1 },
{ Lo: 0x10b00, Hi: 0x10b35, Stride: 1 },
{ Lo: 0x10b40, Hi: 0x10b55, Stride: 1 },
{ Lo: 0x10b60, Hi: 0x10b72, Stride: 1 },
{ Lo: 0x10b80, Hi: 0x10b91, Stride: 1 },
{ Lo: 0x10c00, Hi: 0x10c48, Stride: 1 },
{ Lo: 0x10c80, Hi: 0x10cb2, Stride: 1 },
{ Lo: 0x10cc0, Hi: 0x10cf2, Stride: 1 },
{ Lo: 0x10d00, Hi: 0x10d23, Stride: 1 },
{ Lo: 0x10e80, Hi: 0x10ea9, Stride: 1 },
{ Lo: 0x10eb0, Hi: 0x10eb1, Stride: 1 },
{ Lo: 0x10f00, Hi: 0x10f1c, Stride: 1 },
{ Lo: 0x10f27, Hi: 0x10f30, Stride: 9 },
{ Lo: 0x10f31, Hi: 0x10f45, Stride: 1 },
{ Lo: 0x10fb0, Hi: 0x10fc4, Stride: 1 },
{ Lo: 0x10fe0, Hi: 0x10ff6, Stride: 1 },
{ Lo: 0x11003, Hi: 0x11037, Stride: 1 },
{ Lo: 0x11083, Hi: 0x110af, Stride: 1 },
{ Lo: 0x110d0, Hi: 0x110e8, Stride: 1 },
{ Lo: 0x11103, Hi: 0x11126, Stride: 1 },
{ Lo: 0x11144, Hi: 0x11147, Stride: 3 },
{ Lo: 0x11150, Hi: 0x11172, Stride: 1 },
{ Lo: 0x11176, Hi: 0x11183, Stride: 13 },
{ Lo: 0x11184, Hi: 0x111b2, Stride: 1 },
{ Lo: 0x111c1, Hi: 0x111c4, Stride: 1 },
{ Lo: 0x111da, Hi: 0x111dc, Stride: 2 },
{ Lo: 0x11200, Hi: 0x11211, Stride: 1 },
{ Lo: 0x11213, Hi: 0x1122b, Stride: 1 },
{ Lo: 0x11280, Hi: 0x11286, Stride: 1 },
{ Lo: 0x11288, Hi: 0x1128a, Stride: 2 },
{ Lo: 0x1128b, Hi: 0x1128d, Stride: 1 },
{ Lo: 0x1128f, Hi: 0x1129d, Stride: 1 },
{ Lo: 0x1129f, Hi: 0x112a8, Stride: 1 },
{ Lo: 0x112b0, Hi: 0x112de, Stride: 1 },
{ Lo: 0x11305, Hi: 0x1130c, Stride: 1 },
{ Lo: 0x1130f, Hi: 0x11310, Stride: 1 },
{ Lo: 0x11313, Hi: 0x11328, Stride: 1 },
{ Lo: 0x1132a, Hi: 0x11330, Stride: 1 },
{ Lo: 0x11332, Hi: 0x11333, Stride: 1 },
{ Lo: 0x11335, Hi: 0x11339, Stride: 1 },
{ Lo: 0x1133d, Hi: 0x11350, Stride: 19 },
{ Lo: 0x1135d, Hi: 0x11361, Stride: 1 },
{ Lo: 0x11400, Hi: 0x11434, Stride: 1 },
{ Lo: 0x11447, Hi: 0x1144a, Stride: 1 },
{ Lo: 0x1145f, Hi: 0x11461, Stride: 1 },
{ Lo: 0x11480, Hi: 0x114af, Stride: 1 },
{ Lo: 0x114c4, Hi: 0x114c5, Stride: 1 },
{ Lo: 0x114c7, Hi: 0x11580, Stride: 185 },
{ Lo: 0x11581, Hi: 0x115ae, Stride: 1 },
{ Lo: 0x115d8, Hi: 0x115db, Stride: 1 },
{ Lo: 0x11600, Hi: 0x1162f, Stride: 1 },
{ Lo: 0x11644, Hi: 0x11680, Stride: 60 },
{ Lo: 0x11681, Hi: 0x116aa, Stride: 1 },
{ Lo: 0x116b8, Hi: 0x11700, Stride: 72 },
{ Lo: 0x11701, Hi: 0x1171a, Stride: 1 },
{ Lo: 0x11800, Hi: 0x1182b, Stride: 1 },
{ Lo: 0x118a0, Hi: 0x118df, Stride: 1 },
{ Lo: 0x118ff, Hi: 0x11906, Stride: 1 },
{ Lo: 0x11909, Hi: 0x1190c, Stride: 3 },
{ Lo: 0x1190d, Hi: 0x11913, Stride: 1 },
{ Lo: 0x11915, Hi: 0x11916, Stride: 1 },
{ Lo: 0x11918, Hi: 0x1192f, Stride: 1 },
{ Lo: 0x1193f, Hi: 0x11941, Stride: 2 },
{ Lo: 0x119a0, Hi: 0x119a7, Stride: 1 },
{ Lo: 0x119aa, Hi: 0x119d0, Stride: 1 },
{ Lo: 0x119e1, Hi: 0x119e3, Stride: 2 },
{ Lo: 0x11a00, Hi: 0x11a0b, Stride: 11 },
{ Lo: 0x11a0c, Hi: 0x11a32, Stride: 1 },
{ Lo: 0x11a3a, Hi: 0x11a50, Stride: 22 },
{ Lo: 0x11a5c, Hi: 0x11a89, Stride: 1 },
{ Lo: 0x11a9d, Hi: 0x11ac0, Stride: 35 },
{ Lo: 0x11ac1, Hi: 0x11af8, Stride: 1 },
{ Lo: 0x11c00, Hi: 0x11c08, Stride: 1 },
{ Lo: 0x11c0a, Hi: 0x11c2e, Stride: 1 },
{ Lo: 0x11c40, Hi: 0x11c72, Stride: 50 },
{ Lo: 0x11c73, Hi: 0x11c8f, Stride: 1 },
{ Lo: 0x11d00, Hi: 0x11d06, Stride: 1 },
{ Lo: 0x11d08, Hi: 0x11d09, Stride: 1 },
{ Lo: 0x11d0b, Hi: 0x11d30, Stride: 1 },
{ Lo: 0x11d46, Hi: 0x11d60, Stride: 26 },
{ Lo: 0x11d61, Hi: 0x11d65, Stride: 1 },
{ Lo: 0x11d67, Hi: 0x11d68, Stride: 1 },
{ Lo: 0x11d6a, Hi: 0x11d89, Stride: 1 },
{ Lo: 0x11d98, Hi: 0x11ee0, Stride: 328 },
{ Lo: 0x11ee1, Hi: 0x11ef2, Stride: 1 },
{ Lo: 0x11fb0, Hi: 0x12000, Stride: 80 },
{ Lo: 0x12001, Hi: 0x12399, Stride: 1 },
{ Lo: 0x12480, Hi: 0x12543, Stride: 1 },
{ Lo: 0x13000, Hi: 0x1342e, Stride: 1 },
{ Lo: 0x14400, Hi: 0x14646, Stride: 1 },
{ Lo: 0x16800, Hi: 0x16a38, Stride: 1 },
{ Lo: 0x16a40, Hi: 0x16a5e, Stride: 1 },
{ Lo: 0x16ad0, Hi: 0x16aed, Stride: 1 },
{ Lo: 0x16b00, Hi: 0x16b2f, Stride: 1 },
{ Lo: 0x16b40, Hi: 0x16b43, Stride: 1 },
{ Lo: 0x16b63, Hi: 0x16b77, Stride: 1 },
{ Lo: 0x16b7d, Hi: 0x16b8f, Stride: 1 },
{ Lo: 0x16e40, Hi: 0x16e7f, Stride: 1 },
{ Lo: 0x16f00, Hi: 0x16f4a, Stride: 1 },
{ Lo: 0x16f50, Hi: 0x16f93, Stride: 67 },
{ Lo: 0x16f94, Hi: 0x16f9f, Stride: 1 },
{ Lo: 0x16fe0, Hi: 0x16fe1, Stride: 1 },
{ Lo: 0x16fe3, Hi: 0x17000, Stride: 29 },
{ Lo: 0x17001, Hi: 0x187f7, Stride: 1 },
{ Lo: 0x18800, Hi: 0x18cd5, Stride: 1 },
{ Lo: 0x18d00, Hi: 0x18d08, Stride: 1 },
{ Lo: 0x1b000, Hi: 0x1b11e, Stride: 1 },
{ Lo: 0x1b150, Hi: 0x1b152, Stride: 1 },
{ Lo: 0x1b164, Hi: 0x1b167, Stride: 1 },
{ Lo: 0x1b170, Hi: 0x1b2fb, Stride: 1 },
{ Lo: 0x1bc00, Hi: 0x1bc6a, Stride: 1 },
{ Lo: 0x1bc70, Hi: 0x1bc7c, Stride: 1 },
{ Lo: 0x1bc80, Hi: 0x1bc88, Stride: 1 },
{ Lo: 0x1bc90, Hi: 0x1bc99, Stride: 1 },
{ Lo: 0x1d400, Hi: 0x1d454, Stride: 1 },
{ Lo: 0x1d456, Hi: 0x1d49c, Stride: 1 },
{ Lo: 0x1d49e, Hi: 0x1d49f, Stride: 1 },
{ Lo: 0x1d4a2, Hi: 0x1d4a5, Stride: 3 },
{ Lo: 0x1d4a6, Hi: 0x1d4a9, Stride: 3 },
{ Lo: 0x1d4aa, Hi: 0x1d4ac, Stride: 1 },
{ Lo: 0x1d4ae, Hi: 0x1d4b9, Stride: 1 },
{ Lo: 0x1d4bb, Hi: 0x1d4bd, Stride: 2 },
{ Lo: 0x1d4be, Hi: 0x1d4c3, Stride: 1 },
{ Lo: 0x1d4c5, Hi: 0x1d505, Stride: 1 },
{ Lo: 0x1d507, Hi: 0x1d50a, Stride: 1 },
{ Lo: 0x1d50d, Hi: 0x1d514, Stride: 1 },
{ Lo: 0x1d516, Hi: 0x1d51c, Stride: 1 },
{ Lo: 0x1d51e, Hi: 0x1d539, Stride: 1 },
{ Lo: 0x1d53b, Hi: 0x1d53e, Stride: 1 },
{ Lo: 0x1d540, Hi: 0x1d544, Stride: 1 },
{ Lo: 0x1d546, Hi: 0x1d54a, Stride: 4 },
{ Lo: 0x1d54b, Hi: 0x1d550, Stride: 1 },
{ Lo: 0x1d552, Hi: 0x1d6a5, Stride: 1 },
{ Lo: 0x1d6a8, Hi: 0x1d6c0, Stride: 1 },
{ Lo: 0x1d6c2, Hi: 0x1d6da, Stride: 1 },
{ Lo: 0x1d6dc, Hi: 0x1d6fa, Stride: 1 },
{ Lo: 0x1d6fc, Hi: 0x1d714, Stride: 1 },
{ Lo: 0x1d716, Hi: 0x1d734, Stride: 1 },
{ Lo: 0x1d736, Hi: 0x1d74e, Stride: 1 },
{ Lo: 0x1d750, Hi: 0x1d76e, Stride: 1 },
{ Lo: 0x1d770, Hi: 0x1d788, Stride: 1 },
{ Lo: 0x1d78a, Hi: 0x1d7a8, Stride: 1 },
{ Lo: 0x1d7aa, Hi: 0x1d7c2, Stride: 1 },
{ Lo: 0x1d7c4, Hi: 0x1d7cb, Stride: 1 },
{ Lo: 0x1e100, Hi: 0x1e12c, Stride: 1 },
{ Lo: 0x1e137, Hi: 0x1e13d, Stride: 1 },
{ Lo: 0x1e14e, Hi: 0x1e2c0, Stride: 370 },
{ Lo: 0x1e2c1, Hi: 0x1e2eb, Stride: 1 },
{ Lo: 0x1e800, Hi: 0x1e8c4, Stride: 1 },
{ Lo: 0x1e900, Hi: 0x1e943, Stride: 1 },
{ Lo: 0x1e94b, Hi: 0x1ee00, Stride: 1205 },
{ Lo: 0x1ee01, Hi: 0x1ee03, Stride: 1 },
{ Lo: 0x1ee05, Hi: 0x1ee1f, Stride: 1 },
{ Lo: 0x1ee21, Hi: 0x1ee22, Stride: 1 },
{ Lo: 0x1ee24, Hi: 0x1ee27, Stride: 3 },
{ Lo: 0x1ee29, Hi: 0x1ee32, Stride: 1 },
{ Lo: 0x1ee34, Hi: 0x1ee37, Stride: 1 },
{ Lo: 0x1ee39, Hi: 0x1ee3b, Stride: 2 },
{ Lo: 0x1ee42, Hi: 0x1ee47, Stride: 5 },
{ Lo: 0x1ee49, Hi: 0x1ee4d, Stride: 2 },
{ Lo: 0x1ee4e, Hi: 0x1ee4f, Stride: 1 },
{ Lo: 0x1ee51, Hi: 0x1ee52, Stride: 1 },
{ Lo: 0x1ee54, Hi: 0x1ee57, Stride: 3 },
{ Lo: 0x1ee59, Hi: 0x1ee61, Stride: 2 },
{ Lo: 0x1ee62, Hi: 0x1ee64, Stride: 2 },
{ Lo: 0x1ee67, Hi: 0x1ee6a, Stride: 1 },
{ Lo: 0x1ee6c, Hi: 0x1ee72, Stride: 1 },
{ Lo: 0x1ee74, Hi: 0x1ee77, Stride: 1 },
{ Lo: 0x1ee79, Hi: 0x1ee7c, Stride: 1 },
{ Lo: 0x1ee7e, Hi: 0x1ee80, Stride: 2 },
{ Lo: 0x1ee81, Hi: 0x1ee89, Stride: 1 },
{ Lo: 0x1ee8b, Hi: 0x1ee9b, Stride: 1 },
{ Lo: 0x1eea1, Hi: 0x1eea3, Stride: 1 },
{ Lo: 0x1eea5, Hi: 0x1eea9, Stride: 1 },
{ Lo: 0x1eeab, Hi: 0x1eebb, Stride: 1 },
{ Lo: 0x20000, Hi: 0x2a6dd, Stride: 1 },
{ Lo: 0x2a700, Hi: 0x2b734, Stride: 1 },
{ Lo: 0x2b740, Hi: 0x2b81d, Stride: 1 },
{ Lo: 0x2b820, Hi: 0x2cea1, Stride: 1 },
{ Lo: 0x2ceb0, Hi: 0x2ebe0, Stride: 1 },
{ Lo: 0x2f800, Hi: 0x2fa1d, Stride: 1 },
{ Lo: 0x30000, Hi: 0x3134a, Stride: 1 },
],
LatinOffset: 6,
}
const M: RangeTable = {
R16: [
{ Lo: 0x0300, Hi: 0x036f, Stride: 1 },
{ Lo: 0x0483, Hi: 0x0489, Stride: 1 },
{ Lo: 0x0591, Hi: 0x05bd, Stride: 1 },
{ Lo: 0x05bf, Hi: 0x05c1, Stride: 2 },
{ Lo: 0x05c2, Hi: 0x05c4, Stride: 2 },
{ Lo: 0x05c5, Hi: 0x05c7, Stride: 2 },
{ Lo: 0x0610, Hi: 0x061a, Stride: 1 },
{ Lo: 0x064b, Hi: 0x065f, Stride: 1 },
{ Lo: 0x0670, Hi: 0x06d6, Stride: 102 },
{ Lo: 0x06d7, Hi: 0x06dc, Stride: 1 },
{ Lo: 0x06df, Hi: 0x06e4, Stride: 1 },
{ Lo: 0x06e7, Hi: 0x06e8, Stride: 1 },
{ Lo: 0x06ea, Hi: 0x06ed, Stride: 1 },
{ Lo: 0x0711, Hi: 0x0730, Stride: 31 },
{ Lo: 0x0731, Hi: 0x074a, Stride: 1 },
{ Lo: 0x07a6, Hi: 0x07b0, Stride: 1 },
{ Lo: 0x07eb, Hi: 0x07f3, Stride: 1 },
{ Lo: 0x07fd, Hi: 0x0816, Stride: 25 },
{ Lo: 0x0817, Hi: 0x0819, Stride: 1 },
{ Lo: 0x081b, Hi: 0x0823, Stride: 1 },
{ Lo: 0x0825, Hi: 0x0827, Stride: 1 },
{ Lo: 0x0829, Hi: 0x082d, Stride: 1 },
{ Lo: 0x0859, Hi: 0x085b, Stride: 1 },
{ Lo: 0x08d3, Hi: 0x08e1, Stride: 1 },
{ Lo: 0x08e3, Hi: 0x0903, Stride: 1 },
{ Lo: 0x093a, Hi: 0x093c, Stride: 1 },
{ Lo: 0x093e, Hi: 0x094f, Stride: 1 },
{ Lo: 0x0951, Hi: 0x0957, Stride: 1 },
{ Lo: 0x0962, Hi: 0x0963, Stride: 1 },
{ Lo: 0x0981, Hi: 0x0983, Stride: 1 },
{ Lo: 0x09bc, Hi: 0x09be, Stride: 2 },
{ Lo: 0x09bf, Hi: 0x09c4, Stride: 1 },
{ Lo: 0x09c7, Hi: 0x09c8, Stride: 1 },
{ Lo: 0x09cb, Hi: 0x09cd, Stride: 1 },
{ Lo: 0x09d7, Hi: 0x09e2, Stride: 11 },
{ Lo: 0x09e3, Hi: 0x09fe, Stride: 27 },
{ Lo: 0x0a01, Hi: 0x0a03, Stride: 1 },
{ Lo: 0x0a3c, Hi: 0x0a3e, Stride: 2 },
{ Lo: 0x0a3f, Hi: 0x0a42, Stride: 1 },
{ Lo: 0x0a47, Hi: 0x0a48, Stride: 1 },
{ Lo: 0x0a4b, Hi: 0x0a4d, Stride: 1 },
{ Lo: 0x0a51, Hi: 0x0a70, Stride: 31 },
{ Lo: 0x0a71, Hi: 0x0a75, Stride: 4 },
{ Lo: 0x0a81, Hi: 0x0a83, Stride: 1 },
{ Lo: 0x0abc, Hi: 0x0abe, Stride: 2 },
{ Lo: 0x0abf, Hi: 0x0ac5, Stride: 1 },
{ Lo: 0x0ac7, Hi: 0x0ac9, Stride: 1 },
{ Lo: 0x0acb, Hi: 0x0acd, Stride: 1 },
{ Lo: 0x0ae2, Hi: 0x0ae3, Stride: 1 },
{ Lo: 0x0afa, Hi: 0x0aff, Stride: 1 },
{ Lo: 0x0b01, Hi: 0x0b03, Stride: 1 },
{ Lo: 0x0b3c, Hi: 0x0b3e, Stride: 2 },
{ Lo: 0x0b3f, Hi: 0x0b44, Stride: 1 },
{ Lo: 0x0b47, Hi: 0x0b48, Stride: 1 },
{ Lo: 0x0b4b, Hi: 0x0b4d, Stride: 1 },
{ Lo: 0x0b55, Hi: 0x0b57, Stride: 1 },
{ Lo: 0x0b62, Hi: 0x0b63, Stride: 1 },
{ Lo: 0x0b82, Hi: 0x0bbe, Stride: 60 },
{ Lo: 0x0bbf, Hi: 0x0bc2, Stride: 1 },
{ Lo: 0x0bc6, Hi: 0x0bc8, Stride: 1 },
{ Lo: 0x0bca, Hi: 0x0bcd, Stride: 1 },
{ Lo: 0x0bd7, Hi: 0x0c00, Stride: 41 },
{ Lo: 0x0c01, Hi: 0x0c04, Stride: 1 },
{ Lo: 0x0c3e, Hi: 0x0c44, Stride: 1 },
{ Lo: 0x0c46, Hi: 0x0c48, Stride: 1 },
{ Lo: 0x0c4a, Hi: 0x0c4d, Stride: 1 },
{ Lo: 0x0c55, Hi: 0x0c56, Stride: 1 },
{ Lo: 0x0c62, Hi: 0x0c63, Stride: 1 },
{ Lo: 0x0c81, Hi: 0x0c83, Stride: 1 },
{ Lo: 0x0cbc, Hi: 0x0cbe, Stride: 2 },
{ Lo: 0x0cbf, Hi: 0x0cc4, Stride: 1 },
{ Lo: 0x0cc6, Hi: 0x0cc8, Stride: 1 },
{ Lo: 0x0cca, Hi: 0x0ccd, Stride: 1 },
{ Lo: 0x0cd5, Hi: 0x0cd6, Stride: 1 },
{ Lo: 0x0ce2, Hi: 0x0ce3, Stride: 1 },
{ Lo: 0x0d00, Hi: 0x0d03, Stride: 1 },
{ Lo: 0x0d3b, Hi: 0x0d3c, Stride: 1 },
{ Lo: 0x0d3e, Hi: 0x0d44, Stride: 1 },
{ Lo: 0x0d46, Hi: 0x0d48, Stride: 1 },
{ Lo: 0x0d4a, Hi: 0x0d4d, Stride: 1 },
{ Lo: 0x0d57, Hi: 0x0d62, Stride: 11 },
{ Lo: 0x0d63, Hi: 0x0d81, Stride: 30 },
{ Lo: 0x0d82, Hi: 0x0d83, Stride: 1 },
{ Lo: 0x0dca, Hi: 0x0dcf, Stride: 5 },
{ Lo: 0x0dd0, Hi: 0x0dd4, Stride: 1 },
{ Lo: 0x0dd6, Hi: 0x0dd8, Stride: 2 },
{ Lo: 0x0dd9, Hi: 0x0ddf, Stride: 1 },
{ Lo: 0x0df2, Hi: 0x0df3, Stride: 1 },
{ Lo: 0x0e31, Hi: 0x0e34, Stride: 3 },
{ Lo: 0x0e35, Hi: 0x0e3a, Stride: 1 },
{ Lo: 0x0e47, Hi: 0x0e4e, Stride: 1 },
{ Lo: 0x0eb1, Hi: 0x0eb4, Stride: 3 },
{ Lo: 0x0eb5, Hi: 0x0ebc, Stride: 1 },
{ Lo: 0x0ec8, Hi: 0x0ecd, Stride: 1 },
{ Lo: 0x0f18, Hi: 0x0f19, Stride: 1 },
{ Lo: 0x0f35, Hi: 0x0f39, Stride: 2 },
{ Lo: 0x0f3e, Hi: 0x0f3f, Stride: 1 },
{ Lo: 0x0f71, Hi: 0x0f84, Stride: 1 },
{ Lo: 0x0f86, Hi: 0x0f87, Stride: 1 },
{ Lo: 0x0f8d, Hi: 0x0f97, Stride: 1 },
{ Lo: 0x0f99, Hi: 0x0fbc, Stride: 1 },
{ Lo: 0x0fc6, Hi: 0x102b, Stride: 101 },
{ Lo: 0x102c, Hi: 0x103e, Stride: 1 },
{ Lo: 0x1056, Hi: 0x1059, Stride: 1 },
{ Lo: 0x105e, Hi: 0x1060, Stride: 1 },
{ Lo: 0x1062, Hi: 0x1064, Stride: 1 },
{ Lo: 0x1067, Hi: 0x106d, Stride: 1 },
{ Lo: 0x1071, Hi: 0x1074, Stride: 1 },
{ Lo: 0x1082, Hi: 0x108d, Stride: 1 },
{ Lo: 0x108f, Hi: 0x109a, Stride: 11 },
{ Lo: 0x109b, Hi: 0x109d, Stride: 1 },
{ Lo: 0x135d, Hi: 0x135f, Stride: 1 },
{ Lo: 0x1712, Hi: 0x1714, Stride: 1 },
{ Lo: 0x1732, Hi: 0x1734, Stride: 1 },
{ Lo: 0x1752, Hi: 0x1753, Stride: 1 },
{ Lo: 0x1772, Hi: 0x1773, Stride: 1 },
{ Lo: 0x17b4, Hi: 0x17d3, Stride: 1 },
{ Lo: 0x17dd, Hi: 0x180b, Stride: 46 },
{ Lo: 0x180c, Hi: 0x180d, Stride: 1 },
{ Lo: 0x1885, Hi: 0x1886, Stride: 1 },
{ Lo: 0x18a9, Hi: 0x1920, Stride: 119 },
{ Lo: 0x1921, Hi: 0x192b, Stride: 1 },
{ Lo: 0x1930, Hi: 0x193b, Stride: 1 },
{ Lo: 0x1a17, Hi: 0x1a1b, Stride: 1 },
{ Lo: 0x1a55, Hi: 0x1a5e, Stride: 1 },
{ Lo: 0x1a60, Hi: 0x1a7c, Stride: 1 },
{ Lo: 0x1a7f, Hi: 0x1ab0, Stride: 49 },
{ Lo: 0x1ab1, Hi: 0x1ac0, Stride: 1 },
{ Lo: 0x1b00, Hi: 0x1b04, Stride: 1 },
{ Lo: 0x1b34, Hi: 0x1b44, Stride: 1 },
{ Lo: 0x1b6b, Hi: 0x1b73, Stride: 1 },
{ Lo: 0x1b80, Hi: 0x1b82, Stride: 1 },
{ Lo: 0x1ba1, Hi: 0x1bad, Stride: 1 },
{ Lo: 0x1be6, Hi: 0x1bf3, Stride: 1 },
{ Lo: 0x1c24, Hi: 0x1c37, Stride: 1 },
{ Lo: 0x1cd0, Hi: 0x1cd2, Stride: 1 },
{ Lo: 0x1cd4, Hi: 0x1ce8, Stride: 1 },
{ Lo: 0x1ced, Hi: 0x1cf4, Stride: 7 },
{ Lo: 0x1cf7, Hi: 0x1cf9, Stride: 1 },
{ Lo: 0x1dc0, Hi: 0x1df9, Stride: 1 },
{ Lo: 0x1dfb, Hi: 0x1dff, Stride: 1 },
{ Lo: 0x20d0, Hi: 0x20f0, Stride: 1 },
{ Lo: 0x2cef, Hi: 0x2cf1, Stride: 1 },
{ Lo: 0x2d7f, Hi: 0x2de0, Stride: 97 },
{ Lo: 0x2de1, Hi: 0x2dff, Stride: 1 },
{ Lo: 0x302a, Hi: 0x302f, Stride: 1 },
{ Lo: 0x3099, Hi: 0x309a, Stride: 1 },
{ Lo: 0xa66f, Hi: 0xa672, Stride: 1 },
{ Lo: 0xa674, Hi: 0xa67d, Stride: 1 },
{ Lo: 0xa69e, Hi: 0xa69f, Stride: 1 },
{ Lo: 0xa6f0, Hi: 0xa6f1, Stride: 1 },
{ Lo: 0xa802, Hi: 0xa806, Stride: 4 },
{ Lo: 0xa80b, Hi: 0xa823, Stride: 24 },
{ Lo: 0xa824, Hi: 0xa827, Stride: 1 },
{ Lo: 0xa82c, Hi: 0xa880, Stride: 84 },
{ Lo: 0xa881, Hi: 0xa8b4, Stride: 51 },
{ Lo: 0xa8b5, Hi: 0xa8c5, Stride: 1 },
{ Lo: 0xa8e0, Hi: 0xa8f1, Stride: 1 },
{ Lo: 0xa8ff, Hi: 0xa926, Stride: 39 },
{ Lo: 0xa927, Hi: 0xa92d, Stride: 1 },
{ Lo: 0xa947, Hi: 0xa953, Stride: 1 },
{ Lo: 0xa980, Hi: 0xa983, Stride: 1 },
{ Lo: 0xa9b3, Hi: 0xa9c0, Stride: 1 },
{ Lo: 0xa9e5, Hi: 0xaa29, Stride: 68 },
{ Lo: 0xaa2a, Hi: 0xaa36, Stride: 1 },
{ Lo: 0xaa43, Hi: 0xaa4c, Stride: 9 },
{ Lo: 0xaa4d, Hi: 0xaa7b, Stride: 46 },
{ Lo: 0xaa7c, Hi: 0xaa7d, Stride: 1 },
{ Lo: 0xaab0, Hi: 0xaab2, Stride: 2 },
{ Lo: 0xaab3, Hi: 0xaab4, Stride: 1 },
{ Lo: 0xaab7, Hi: 0xaab8, Stride: 1 },
{ Lo: 0xaabe, Hi: 0xaabf, Stride: 1 },
{ Lo: 0xaac1, Hi: 0xaaeb, Stride: 42 },
{ Lo: 0xaaec, Hi: 0xaaef, Stride: 1 },
{ Lo: 0xaaf5, Hi: 0xaaf6, Stride: 1 },
{ Lo: 0xabe3, Hi: 0xabea, Stride: 1 },
{ Lo: 0xabec, Hi: 0xabed, Stride: 1 },
{ Lo: 0xfb1e, Hi: 0xfe00, Stride: 738 },
{ Lo: 0xfe01, Hi: 0xfe0f, Stride: 1 },
{ Lo: 0xfe20, Hi: 0xfe2f, Stride: 1 },
],
R32: [
{ Lo: 0x101fd, Hi: 0x102e0, Stride: 227 },
{ Lo: 0x10376, Hi: 0x1037a, Stride: 1 },
{ Lo: 0x10a01, Hi: 0x10a03, Stride: 1 },
{ Lo: 0x10a05, Hi: 0x10a06, Stride: 1 },
{ Lo: 0x10a0c, Hi: 0x10a0f, Stride: 1 },
{ Lo: 0x10a38, Hi: 0x10a3a, Stride: 1 },
{ Lo: 0x10a3f, Hi: 0x10ae5, Stride: 166 },
{ Lo: 0x10ae6, Hi: 0x10d24, Stride: 574 },
{ Lo: 0x10d25, Hi: 0x10d27, Stride: 1 },
{ Lo: 0x10eab, Hi: 0x10eac, Stride: 1 },
{ Lo: 0x10f46, Hi: 0x10f50, Stride: 1 },
{ Lo: 0x11000, Hi: 0x11002, Stride: 1 },
{ Lo: 0x11038, Hi: 0x11046, Stride: 1 },
{ Lo: 0x1107f, Hi: 0x11082, Stride: 1 },
{ Lo: 0x110b0, Hi: 0x110ba, Stride: 1 },
{ Lo: 0x11100, Hi: 0x11102, Stride: 1 },
{ Lo: 0x11127, Hi: 0x11134, Stride: 1 },
{ Lo: 0x11145, Hi: 0x11146, Stride: 1 },
{ Lo: 0x11173, Hi: 0x11180, Stride: 13 },
{ Lo: 0x11181, Hi: 0x11182, Stride: 1 },
{ Lo: 0x111b3, Hi: 0x111c0, Stride: 1 },
{ Lo: 0x111c9, Hi: 0x111cc, Stride: 1 },
{ Lo: 0x111ce, Hi: 0x111cf, Stride: 1 },
{ Lo: 0x1122c, Hi: 0x11237, Stride: 1 },
{ Lo: 0x1123e, Hi: 0x112df, Stride: 161 },
{ Lo: 0x112e0, Hi: 0x112ea, Stride: 1 },
{ Lo: 0x11300, Hi: 0x11303, Stride: 1 },
{ Lo: 0x1133b, Hi: 0x1133c, Stride: 1 },
{ Lo: 0x1133e, Hi: 0x11344, Stride: 1 },
{ Lo: 0x11347, Hi: 0x11348, Stride: 1 },
{ Lo: 0x1134b, Hi: 0x1134d, Stride: 1 },
{ Lo: 0x11357, Hi: 0x11362, Stride: 11 },
{ Lo: 0x11363, Hi: 0x11366, Stride: 3 },
{ Lo: 0x11367, Hi: 0x1136c, Stride: 1 },
{ Lo: 0x11370, Hi: 0x11374, Stride: 1 },
{ Lo: 0x11435, Hi: 0x11446, Stride: 1 },
{ Lo: 0x1145e, Hi: 0x114b0, Stride: 82 },
{ Lo: 0x114b1, Hi: 0x114c3, Stride: 1 },
{ Lo: 0x115af, Hi: 0x115b5, Stride: 1 },
{ Lo: 0x115b8, Hi: 0x115c0, Stride: 1 },
{ Lo: 0x115dc, Hi: 0x115dd, Stride: 1 },
{ Lo: 0x11630, Hi: 0x11640, Stride: 1 },
{ Lo: 0x116ab, Hi: 0x116b7, Stride: 1 },
{ Lo: 0x1171d, Hi: 0x1172b, Stride: 1 },
{ Lo: 0x1182c, Hi: 0x1183a, Stride: 1 },
{ Lo: 0x11930, Hi: 0x11935, Stride: 1 },
{ Lo: 0x11937, Hi: 0x11938, Stride: 1 },
{ Lo: 0x1193b, Hi: 0x1193e, Stride: 1 },
{ Lo: 0x11940, Hi: 0x11942, Stride: 2 },
{ Lo: 0x11943, Hi: 0x119d1, Stride: 142 },
{ Lo: 0x119d2, Hi: 0x119d7, Stride: 1 },
{ Lo: 0x119da, Hi: 0x119e0, Stride: 1 },
{ Lo: 0x119e4, Hi: 0x11a01, Stride: 29 },
{ Lo: 0x11a02, Hi: 0x11a0a, Stride: 1 },
{ Lo: 0x11a33, Hi: 0x11a39, Stride: 1 },
{ Lo: 0x11a3b, Hi: 0x11a3e, Stride: 1 },
{ Lo: 0x11a47, Hi: 0x11a51, Stride: 10 },
{ Lo: 0x11a52, Hi: 0x11a5b, Stride: 1 },
{ Lo: 0x11a8a, Hi: 0x11a99, Stride: 1 },
{ Lo: 0x11c2f, Hi: 0x11c36, Stride: 1 },
{ Lo: 0x11c38, Hi: 0x11c3f, Stride: 1 },
{ Lo: 0x11c92, Hi: 0x11ca7, Stride: 1 },
{ Lo: 0x11ca9, Hi: 0x11cb6, Stride: 1 },
{ Lo: 0x11d31, Hi: 0x11d36, Stride: 1 },
{ Lo: 0x11d3a, Hi: 0x11d3c, Stride: 2 },
{ Lo: 0x11d3d, Hi: 0x11d3f, Stride: 2 },
{ Lo: 0x11d40, Hi: 0x11d45, Stride: 1 },
{ Lo: 0x11d47, Hi: 0x11d8a, Stride: 67 },
{ Lo: 0x11d8b, Hi: 0x11d8e, Stride: 1 },
{ Lo: 0x11d90, Hi: 0x11d91, Stride: 1 },
{ Lo: 0x11d93, Hi: 0x11d97, Stride: 1 },
{ Lo: 0x11ef3, Hi: 0x11ef6, Stride: 1 },
{ Lo: 0x16af0, Hi: 0x16af4, Stride: 1 },
{ Lo: 0x16b30, Hi: 0x16b36, Stride: 1 },
{ Lo: 0x16f4f, Hi: 0x16f51, Stride: 2 },
{ Lo: 0x16f52, Hi: 0x16f87, Stride: 1 },
{ Lo: 0x16f8f, Hi: 0x16f92, Stride: 1 },
{ Lo: 0x16fe4, Hi: 0x16ff0, Stride: 12 },
{ Lo: 0x16ff1, Hi: 0x1bc9d, Stride: 19628 },
{ Lo: 0x1bc9e, Hi: 0x1d165, Stride: 5319 },
{ Lo: 0x1d166, Hi: 0x1d169, Stride: 1 },
{ Lo: 0x1d16d, Hi: 0x1d172, Stride: 1 },
{ Lo: 0x1d17b, Hi: 0x1d182, Stride: 1 },
{ Lo: 0x1d185, Hi: 0x1d18b, Stride: 1 },
{ Lo: 0x1d1aa, Hi: 0x1d1ad, Stride: 1 },
{ Lo: 0x1d242, Hi: 0x1d244, Stride: 1 },
{ Lo: 0x1da00, Hi: 0x1da36, Stride: 1 },
{ Lo: 0x1da3b, Hi: 0x1da6c, Stride: 1 },
{ Lo: 0x1da75, Hi: 0x1da84, Stride: 15 },
{ Lo: 0x1da9b, Hi: 0x1da9f, Stride: 1 },
{ Lo: 0x1daa1, Hi: 0x1daaf, Stride: 1 },
{ Lo: 0x1e000, Hi: 0x1e006, Stride: 1 },
{ Lo: 0x1e008, Hi: 0x1e018, Stride: 1 },
{ Lo: 0x1e01b, Hi: 0x1e021, Stride: 1 },
{ Lo: 0x1e023, Hi: 0x1e024, Stride: 1 },
{ Lo: 0x1e026, Hi: 0x1e02a, Stride: 1 },
{ Lo: 0x1e130, Hi: 0x1e136, Stride: 1 },
{ Lo: 0x1e2ec, Hi: 0x1e2ef, Stride: 1 },
{ Lo: 0x1e8d0, Hi: 0x1e8d6, Stride: 1 },
{ Lo: 0x1e944, Hi: 0x1e94a, Stride: 1 },
{ Lo: 0xe0100, Hi: 0xe01ef, Stride: 1 },
],
LatinOffset: 0,
}
const N: RangeTable = {
R16: [
{ Lo: 0x0030, Hi: 0x0039, Stride: 1 },
{ Lo: 0x00b2, Hi: 0x00b3, Stride: 1 },
{ Lo: 0x00b9, Hi: 0x00bc, Stride: 3 },
{ Lo: 0x00bd, Hi: 0x00be, Stride: 1 },
{ Lo: 0x0660, Hi: 0x0669, Stride: 1 },
{ Lo: 0x06f0, Hi: 0x06f9, Stride: 1 },
{ Lo: 0x07c0, Hi: 0x07c9, Stride: 1 },
{ Lo: 0x0966, Hi: 0x096f, Stride: 1 },
{ Lo: 0x09e6, Hi: 0x09ef, Stride: 1 },
{ Lo: 0x09f4, Hi: 0x09f9, Stride: 1 },
{ Lo: 0x0a66, Hi: 0x0a6f, Stride: 1 },
{ Lo: 0x0ae6, Hi: 0x0aef, Stride: 1 },
{ Lo: 0x0b66, Hi: 0x0b6f, Stride: 1 },
{ Lo: 0x0b72, Hi: 0x0b77, Stride: 1 },
{ Lo: 0x0be6, Hi: 0x0bf2, Stride: 1 },
{ Lo: 0x0c66, Hi: 0x0c6f, Stride: 1 },
{ Lo: 0x0c78, Hi: 0x0c7e, Stride: 1 },
{ Lo: 0x0ce6, Hi: 0x0cef, Stride: 1 },
{ Lo: 0x0d58, Hi: 0x0d5e, Stride: 1 },
{ Lo: 0x0d66, Hi: 0x0d78, Stride: 1 },
{ Lo: 0x0de6, Hi: 0x0def, Stride: 1 },
{ Lo: 0x0e50, Hi: 0x0e59, Stride: 1 },
{ Lo: 0x0ed0, Hi: 0x0ed9, Stride: 1 },
{ Lo: 0x0f20, Hi: 0x0f33, Stride: 1 },
{ Lo: 0x1040, Hi: 0x1049, Stride: 1 },
{ Lo: 0x1090, Hi: 0x1099, Stride: 1 },
{ Lo: 0x1369, Hi: 0x137c, Stride: 1 },
{ Lo: 0x16ee, Hi: 0x16f0, Stride: 1 },
{ Lo: 0x17e0, Hi: 0x17e9, Stride: 1 },
{ Lo: 0x17f0, Hi: 0x17f9, Stride: 1 },
{ Lo: 0x1810, Hi: 0x1819, Stride: 1 },
{ Lo: 0x1946, Hi: 0x194f, Stride: 1 },
{ Lo: 0x19d0, Hi: 0x19da, Stride: 1 },
{ Lo: 0x1a80, Hi: 0x1a89, Stride: 1 },
{ Lo: 0x1a90, Hi: 0x1a99, Stride: 1 },
{ Lo: 0x1b50, Hi: 0x1b59, Stride: 1 },
{ Lo: 0x1bb0, Hi: 0x1bb9, Stride: 1 },
{ Lo: 0x1c40, Hi: 0x1c49, Stride: 1 },
{ Lo: 0x1c50, Hi: 0x1c59, Stride: 1 },
{ Lo: 0x2070, Hi: 0x2074, Stride: 4 },
{ Lo: 0x2075, Hi: 0x2079, Stride: 1 },
{ Lo: 0x2080, Hi: 0x2089, Stride: 1 },
{ Lo: 0x2150, Hi: 0x2182, Stride: 1 },
{ Lo: 0x2185, Hi: 0x2189, Stride: 1 },
{ Lo: 0x2460, Hi: 0x249b, Stride: 1 },
{ Lo: 0x24ea, Hi: 0x24ff, Stride: 1 },
{ Lo: 0x2776, Hi: 0x2793, Stride: 1 },
{ Lo: 0x2cfd, Hi: 0x3007, Stride: 778 },
{ Lo: 0x3021, Hi: 0x3029, Stride: 1 },
{ Lo: 0x3038, Hi: 0x303a, Stride: 1 },
{ Lo: 0x3192, Hi: 0x3195, Stride: 1 },
{ Lo: 0x3220, Hi: 0x3229, Stride: 1 },
{ Lo: 0x3248, Hi: 0x324f, Stride: 1 },
{ Lo: 0x3251, Hi: 0x325f, Stride: 1 },
{ Lo: 0x3280, Hi: 0x3289, Stride: 1 },
{ Lo: 0x32b1, Hi: 0x32bf, Stride: 1 },
{ Lo: 0xa620, Hi: 0xa629, Stride: 1 },
{ Lo: 0xa6e6, Hi: 0xa6ef, Stride: 1 },
{ Lo: 0xa830, Hi: 0xa835, Stride: 1 },
{ Lo: 0xa8d0, Hi: 0xa8d9, Stride: 1 },
{ Lo: 0xa900, Hi: 0xa909, Stride: 1 },
{ Lo: 0xa9d0, Hi: 0xa9d9, Stride: 1 },
{ Lo: 0xa9f0, Hi: 0xa9f9, Stride: 1 },
{ Lo: 0xaa50, Hi: 0xaa59, Stride: 1 },
{ Lo: 0xabf0, Hi: 0xabf9, Stride: 1 },
{ Lo: 0xff10, Hi: 0xff19, Stride: 1 },
],
R32: [
{ Lo: 0x10107, Hi: 0x10133, Stride: 1 },
{ Lo: 0x10140, Hi: 0x10178, Stride: 1 },
{ Lo: 0x1018a, Hi: 0x1018b, Stride: 1 },
{ Lo: 0x102e1, Hi: 0x102fb, Stride: 1 },
{ Lo: 0x10320, Hi: 0x10323, Stride: 1 },
{ Lo: 0x10341, Hi: 0x1034a, Stride: 9 },
{ Lo: 0x103d1, Hi: 0x103d5, Stride: 1 },
{ Lo: 0x104a0, Hi: 0x104a9, Stride: 1 },
{ Lo: 0x10858, Hi: 0x1085f, Stride: 1 },
{ Lo: 0x10879, Hi: 0x1087f, Stride: 1 },
{ Lo: 0x108a7, Hi: 0x108af, Stride: 1 },
{ Lo: 0x108fb, Hi: 0x108ff, Stride: 1 },
{ Lo: 0x10916, Hi: 0x1091b, Stride: 1 },
{ Lo: 0x109bc, Hi: 0x109bd, Stride: 1 },
{ Lo: 0x109c0, Hi: 0x109cf, Stride: 1 },
{ Lo: 0x109d2, Hi: 0x109ff, Stride: 1 },
{ Lo: 0x10a40, Hi: 0x10a48, Stride: 1 },
{ Lo: 0x10a7d, Hi: 0x10a7e, Stride: 1 },
{ Lo: 0x10a9d, Hi: 0x10a9f, Stride: 1 },
{ Lo: 0x10aeb, Hi: 0x10aef, Stride: 1 },
{ Lo: 0x10b58, Hi: 0x10b5f, Stride: 1 },
{ Lo: 0x10b78, Hi: 0x10b7f, Stride: 1 },
{ Lo: 0x10ba9, Hi: 0x10baf, Stride: 1 },
{ Lo: 0x10cfa, Hi: 0x10cff, Stride: 1 },
{ Lo: 0x10d30, Hi: 0x10d39, Stride: 1 },
{ Lo: 0x10e60, Hi: 0x10e7e, Stride: 1 },
{ Lo: 0x10f1d, Hi: 0x10f26, Stride: 1 },
{ Lo: 0x10f51, Hi: 0x10f54, Stride: 1 },
{ Lo: 0x10fc5, Hi: 0x10fcb, Stride: 1 },
{ Lo: 0x11052, Hi: 0x1106f, Stride: 1 },
{ Lo: 0x110f0, Hi: 0x110f9, Stride: 1 },
{ Lo: 0x11136, Hi: 0x1113f, Stride: 1 },
{ Lo: 0x111d0, Hi: 0x111d9, Stride: 1 },
{ Lo: 0x111e1, Hi: 0x111f4, Stride: 1 },
{ Lo: 0x112f0, Hi: 0x112f9, Stride: 1 },
{ Lo: 0x11450, Hi: 0x11459, Stride: 1 },
{ Lo: 0x114d0, Hi: 0x114d9, Stride: 1 },
{ Lo: 0x11650, Hi: 0x11659, Stride: 1 },
{ Lo: 0x116c0, Hi: 0x116c9, Stride: 1 },
{ Lo: 0x11730, Hi: 0x1173b, Stride: 1 },
{ Lo: 0x118e0, Hi: 0x118f2, Stride: 1 },
{ Lo: 0x11950, Hi: 0x11959, Stride: 1 },
{ Lo: 0x11c50, Hi: 0x11c6c, Stride: 1 },
{ Lo: 0x11d50, Hi: 0x11d59, Stride: 1 },
{ Lo: 0x11da0, Hi: 0x11da9, Stride: 1 },
{ Lo: 0x11fc0, Hi: 0x11fd4, Stride: 1 },
{ Lo: 0x12400, Hi: 0x1246e, Stride: 1 },
{ Lo: 0x16a60, Hi: 0x16a69, Stride: 1 },
{ Lo: 0x16b50, Hi: 0x16b59, Stride: 1 },
{ Lo: 0x16b5b, Hi: 0x16b61, Stride: 1 },
{ Lo: 0x16e80, Hi: 0x16e96, Stride: 1 },
{ Lo: 0x1d2e0, Hi: 0x1d2f3, Stride: 1 },
{ Lo: 0x1d360, Hi: 0x1d378, Stride: 1 },
{ Lo: 0x1d7ce, Hi: 0x1d7ff, Stride: 1 },
{ Lo: 0x1e140, Hi: 0x1e149, Stride: 1 },
{ Lo: 0x1e2f0, Hi: 0x1e2f9, Stride: 1 },
{ Lo: 0x1e8c7, Hi: 0x1e8cf, Stride: 1 },
{ Lo: 0x1e950, Hi: 0x1e959, Stride: 1 },
{ Lo: 0x1ec71, Hi: 0x1ecab, Stride: 1 },
{ Lo: 0x1ecad, Hi: 0x1ecaf, Stride: 1 },
{ Lo: 0x1ecb1, Hi: 0x1ecb4, Stride: 1 },
{ Lo: 0x1ed01, Hi: 0x1ed2d, Stride: 1 },
{ Lo: 0x1ed2f, Hi: 0x1ed3d, Stride: 1 },
{ Lo: 0x1f100, Hi: 0x1f10c, Stride: 1 },
{ Lo: 0x1fbf0, Hi: 0x1fbf9, Stride: 1 },
],
LatinOffset: 4,
}
const P: RangeTable = {
R16: [
{ Lo: 0x0021, Hi: 0x0023, Stride: 1 },
{ Lo: 0x0025, Hi: 0x002a, Stride: 1 },
{ Lo: 0x002c, Hi: 0x002f, Stride: 1 },
{ Lo: 0x003a, Hi: 0x003b, Stride: 1 },
{ Lo: 0x003f, Hi: 0x0040, Stride: 1 },
{ Lo: 0x005b, Hi: 0x005d, Stride: 1 },
{ Lo: 0x005f, Hi: 0x007b, Stride: 28 },
{ Lo: 0x007d, Hi: 0x00a1, Stride: 36 },
{ Lo: 0x00a7, Hi: 0x00ab, Stride: 4 },
{ Lo: 0x00b6, Hi: 0x00b7, Stride: 1 },
{ Lo: 0x00bb, Hi: 0x00bf, Stride: 4 },
{ Lo: 0x037e, Hi: 0x0387, Stride: 9 },
{ Lo: 0x055a, Hi: 0x055f, Stride: 1 },
{ Lo: 0x0589, Hi: 0x058a, Stride: 1 },
{ Lo: 0x05be, Hi: 0x05c0, Stride: 2 },
{ Lo: 0x05c3, Hi: 0x05c6, Stride: 3 },
{ Lo: 0x05f3, Hi: 0x05f4, Stride: 1 },
{ Lo: 0x0609, Hi: 0x060a, Stride: 1 },
{ Lo: 0x060c, Hi: 0x060d, Stride: 1 },
{ Lo: 0x061b, Hi: 0x061e, Stride: 3 },
{ Lo: 0x061f, Hi: 0x066a, Stride: 75 },
{ Lo: 0x066b, Hi: 0x066d, Stride: 1 },
{ Lo: 0x06d4, Hi: 0x0700, Stride: 44 },
{ Lo: 0x0701, Hi: 0x070d, Stride: 1 },
{ Lo: 0x07f7, Hi: 0x07f9, Stride: 1 },
{ Lo: 0x0830, Hi: 0x083e, Stride: 1 },
{ Lo: 0x085e, Hi: 0x0964, Stride: 262 },
{ Lo: 0x0965, Hi: 0x0970, Stride: 11 },
{ Lo: 0x09fd, Hi: 0x0a76, Stride: 121 },
{ Lo: 0x0af0, Hi: 0x0c77, Stride: 391 },
{ Lo: 0x0c84, Hi: 0x0df4, Stride: 368 },
{ Lo: 0x0e4f, Hi: 0x0e5a, Stride: 11 },
{ Lo: 0x0e5b, Hi: 0x0f04, Stride: 169 },
{ Lo: 0x0f05, Hi: 0x0f12, Stride: 1 },
{ Lo: 0x0f14, Hi: 0x0f3a, Stride: 38 },
{ Lo: 0x0f3b, Hi: 0x0f3d, Stride: 1 },
{ Lo: 0x0f85, Hi: 0x0fd0, Stride: 75 },
{ Lo: 0x0fd1, Hi: 0x0fd4, Stride: 1 },
{ Lo: 0x0fd9, Hi: 0x0fda, Stride: 1 },
{ Lo: 0x104a, Hi: 0x104f, Stride: 1 },
{ Lo: 0x10fb, Hi: 0x1360, Stride: 613 },
{ Lo: 0x1361, Hi: 0x1368, Stride: 1 },
{ Lo: 0x1400, Hi: 0x166e, Stride: 622 },
{ Lo: 0x169b, Hi: 0x169c, Stride: 1 },
{ Lo: 0x16eb, Hi: 0x16ed, Stride: 1 },
{ Lo: 0x1735, Hi: 0x1736, Stride: 1 },
{ Lo: 0x17d4, Hi: 0x17d6, Stride: 1 },
{ Lo: 0x17d8, Hi: 0x17da, Stride: 1 },
{ Lo: 0x1800, Hi: 0x180a, Stride: 1 },
{ Lo: 0x1944, Hi: 0x1945, Stride: 1 },
{ Lo: 0x1a1e, Hi: 0x1a1f, Stride: 1 },
{ Lo: 0x1aa0, Hi: 0x1aa6, Stride: 1 },
{ Lo: 0x1aa8, Hi: 0x1aad, Stride: 1 },
{ Lo: 0x1b5a, Hi: 0x1b60, Stride: 1 },
{ Lo: 0x1bfc, Hi: 0x1bff, Stride: 1 },
{ Lo: 0x1c3b, Hi: 0x1c3f, Stride: 1 },
{ Lo: 0x1c7e, Hi: 0x1c7f, Stride: 1 },
{ Lo: 0x1cc0, Hi: 0x1cc7, Stride: 1 },
{ Lo: 0x1cd3, Hi: 0x2010, Stride: 829 },
{ Lo: 0x2011, Hi: 0x2027, Stride: 1 },
{ Lo: 0x2030, Hi: 0x2043, Stride: 1 },
{ Lo: 0x2045, Hi: 0x2051, Stride: 1 },
{ Lo: 0x2053, Hi: 0x205e, Stride: 1 },
{ Lo: 0x207d, Hi: 0x207e, Stride: 1 },
{ Lo: 0x208d, Hi: 0x208e, Stride: 1 },
{ Lo: 0x2308, Hi: 0x230b, Stride: 1 },
{ Lo: 0x2329, Hi: 0x232a, Stride: 1 },
{ Lo: 0x2768, Hi: 0x2775, Stride: 1 },
{ Lo: 0x27c5, Hi: 0x27c6, Stride: 1 },
{ Lo: 0x27e6, Hi: 0x27ef, Stride: 1 },
{ Lo: 0x2983, Hi: 0x2998, Stride: 1 },
{ Lo: 0x29d8, Hi: 0x29db, Stride: 1 },
{ Lo: 0x29fc, Hi: 0x29fd, Stride: 1 },
{ Lo: 0x2cf9, Hi: 0x2cfc, Stride: 1 },
{ Lo: 0x2cfe, Hi: 0x2cff, Stride: 1 },
{ Lo: 0x2d70, Hi: 0x2e00, Stride: 144 },
{ Lo: 0x2e01, Hi: 0x2e2e, Stride: 1 },
{ Lo: 0x2e30, Hi: 0x2e4f, Stride: 1 },
{ Lo: 0x2e52, Hi: 0x3001, Stride: 431 },
{ Lo: 0x3002, Hi: 0x3003, Stride: 1 },
{ Lo: 0x3008, Hi: 0x3011, Stride: 1 },
{ Lo: 0x3014, Hi: 0x301f, Stride: 1 },
{ Lo: 0x3030, Hi: 0x303d, Stride: 13 },
{ Lo: 0x30a0, Hi: 0x30fb, Stride: 91 },
{ Lo: 0xa4fe, Hi: 0xa4ff, Stride: 1 },
{ Lo: 0xa60d, Hi: 0xa60f, Stride: 1 },
{ Lo: 0xa673, Hi: 0xa67e, Stride: 11 },
{ Lo: 0xa6f2, Hi: 0xa6f7, Stride: 1 },
{ Lo: 0xa874, Hi: 0xa877, Stride: 1 },
{ Lo: 0xa8ce, Hi: 0xa8cf, Stride: 1 },
{ Lo: 0xa8f8, Hi: 0xa8fa, Stride: 1 },
{ Lo: 0xa8fc, Hi: 0xa92e, Stride: 50 },
{ Lo: 0xa92f, Hi: 0xa95f, Stride: 48 },
{ Lo: 0xa9c1, Hi: 0xa9cd, Stride: 1 },
{ Lo: 0xa9de, Hi: 0xa9df, Stride: 1 },
{ Lo: 0xaa5c, Hi: 0xaa5f, Stride: 1 },
{ Lo: 0xaade, Hi: 0xaadf, Stride: 1 },
{ Lo: 0xaaf0, Hi: 0xaaf1, Stride: 1 },
{ Lo: 0xabeb, Hi: 0xfd3e, Stride: 20819 },
{ Lo: 0xfd3f, Hi: 0xfe10, Stride: 209 },
{ Lo: 0xfe11, Hi: 0xfe19, Stride: 1 },
{ Lo: 0xfe30, Hi: 0xfe52, Stride: 1 },
{ Lo: 0xfe54, Hi: 0xfe61, Stride: 1 },
{ Lo: 0xfe63, Hi: 0xfe68, Stride: 5 },
{ Lo: 0xfe6a, Hi: 0xfe6b, Stride: 1 },
{ Lo: 0xff01, Hi: 0xff03, Stride: 1 },
{ Lo: 0xff05, Hi: 0xff0a, Stride: 1 },
{ Lo: 0xff0c, Hi: 0xff0f, Stride: 1 },
{ Lo: 0xff1a, Hi: 0xff1b, Stride: 1 },
{ Lo: 0xff1f, Hi: 0xff20, Stride: 1 },
{ Lo: 0xff3b, Hi: 0xff3d, Stride: 1 },
{ Lo: 0xff3f, Hi: 0xff5b, Stride: 28 },
{ Lo: 0xff5d, Hi: 0xff5f, Stride: 2 },
{ Lo: 0xff60, Hi: 0xff65, Stride: 1 },
],
R32: [
{ Lo: 0x10100, Hi: 0x10102, Stride: 1 },
{ Lo: 0x1039f, Hi: 0x103d0, Stride: 49 },
{ Lo: 0x1056f, Hi: 0x10857, Stride: 744 },
{ Lo: 0x1091f, Hi: 0x1093f, Stride: 32 },
{ Lo: 0x10a50, Hi: 0x10a58, Stride: 1 },
{ Lo: 0x10a7f, Hi: 0x10af0, Stride: 113 },
{ Lo: 0x10af1, Hi: 0x10af6, Stride: 1 },
{ Lo: 0x10b39, Hi: 0x10b3f, Stride: 1 },
{ Lo: 0x10b99, Hi: 0x10b9c, Stride: 1 },
{ Lo: 0x10ead, Hi: 0x10f55, Stride: 168 },
{ Lo: 0x10f56, Hi: 0x10f59, Stride: 1 },
{ Lo: 0x11047, Hi: 0x1104d, Stride: 1 },
{ Lo: 0x110bb, Hi: 0x110bc, Stride: 1 },
{ Lo: 0x110be, Hi: 0x110c1, Stride: 1 },
{ Lo: 0x11140, Hi: 0x11143, Stride: 1 },
{ Lo: 0x11174, Hi: 0x11175, Stride: 1 },
{ Lo: 0x111c5, Hi: 0x111c8, Stride: 1 },
{ Lo: 0x111cd, Hi: 0x111db, Stride: 14 },
{ Lo: 0x111dd, Hi: 0x111df, Stride: 1 },
{ Lo: 0x11238, Hi: 0x1123d, Stride: 1 },
{ Lo: 0x112a9, Hi: 0x1144b, Stride: 418 },
{ Lo: 0x1144c, Hi: 0x1144f, Stride: 1 },
{ Lo: 0x1145a, Hi: 0x1145b, Stride: 1 },
{ Lo: 0x1145d, Hi: 0x114c6, Stride: 105 },
{ Lo: 0x115c1, Hi: 0x115d7, Stride: 1 },
{ Lo: 0x11641, Hi: 0x11643, Stride: 1 },
{ Lo: 0x11660, Hi: 0x1166c, Stride: 1 },
{ Lo: 0x1173c, Hi: 0x1173e, Stride: 1 },
{ Lo: 0x1183b, Hi: 0x11944, Stride: 265 },
{ Lo: 0x11945, Hi: 0x11946, Stride: 1 },
{ Lo: 0x119e2, Hi: 0x11a3f, Stride: 93 },
{ Lo: 0x11a40, Hi: 0x11a46, Stride: 1 },
{ Lo: 0x11a9a, Hi: 0x11a9c, Stride: 1 },
{ Lo: 0x11a9e, Hi: 0x11aa2, Stride: 1 },
{ Lo: 0x11c41, Hi: 0x11c45, Stride: 1 },
{ Lo: 0x11c70, Hi: 0x11c71, Stride: 1 },
{ Lo: 0x11ef7, Hi: 0x11ef8, Stride: 1 },
{ Lo: 0x11fff, Hi: 0x12470, Stride: 1137 },
{ Lo: 0x12471, Hi: 0x12474, Stride: 1 },
{ Lo: 0x16a6e, Hi: 0x16a6f, Stride: 1 },
{ Lo: 0x16af5, Hi: 0x16b37, Stride: 66 },
{ Lo: 0x16b38, Hi: 0x16b3b, Stride: 1 },
{ Lo: 0x16b44, Hi: 0x16e97, Stride: 851 },
{ Lo: 0x16e98, Hi: 0x16e9a, Stride: 1 },
{ Lo: 0x16fe2, Hi: 0x1bc9f, Stride: 19645 },
{ Lo: 0x1da87, Hi: 0x1da8b, Stride: 1 },
{ Lo: 0x1e95e, Hi: 0x1e95f, Stride: 1 },
],
LatinOffset: 11,
}
const S: RangeTable = {
R16: [
{ Lo: 0x0024, Hi: 0x002b, Stride: 7 },
{ Lo: 0x003c, Hi: 0x003e, Stride: 1 },
{ Lo: 0x005e, Hi: 0x0060, Stride: 2 },
{ Lo: 0x007c, Hi: 0x007e, Stride: 2 },
{ Lo: 0x00a2, Hi: 0x00a6, Stride: 1 },
{ Lo: 0x00a8, Hi: 0x00a9, Stride: 1 },
{ Lo: 0x00ac, Hi: 0x00ae, Stride: 2 },
{ Lo: 0x00af, Hi: 0x00b1, Stride: 1 },
{ Lo: 0x00b4, Hi: 0x00b8, Stride: 4 },
{ Lo: 0x00d7, Hi: 0x00f7, Stride: 32 },
{ Lo: 0x02c2, Hi: 0x02c5, Stride: 1 },
{ Lo: 0x02d2, Hi: 0x02df, Stride: 1 },
{ Lo: 0x02e5, Hi: 0x02eb, Stride: 1 },
{ Lo: 0x02ed, Hi: 0x02ef, Stride: 2 },
{ Lo: 0x02f0, Hi: 0x02ff, Stride: 1 },
{ Lo: 0x0375, Hi: 0x0384, Stride: 15 },
{ Lo: 0x0385, Hi: 0x03f6, Stride: 113 },
{ Lo: 0x0482, Hi: 0x058d, Stride: 267 },
{ Lo: 0x058e, Hi: 0x058f, Stride: 1 },
{ Lo: 0x0606, Hi: 0x0608, Stride: 1 },
{ Lo: 0x060b, Hi: 0x060e, Stride: 3 },
{ Lo: 0x060f, Hi: 0x06de, Stride: 207 },
{ Lo: 0x06e9, Hi: 0x06fd, Stride: 20 },
{ Lo: 0x06fe, Hi: 0x07f6, Stride: 248 },
{ Lo: 0x07fe, Hi: 0x07ff, Stride: 1 },
{ Lo: 0x09f2, Hi: 0x09f3, Stride: 1 },
{ Lo: 0x09fa, Hi: 0x09fb, Stride: 1 },
{ Lo: 0x0af1, Hi: 0x0b70, Stride: 127 },
{ Lo: 0x0bf3, Hi: 0x0bfa, Stride: 1 },
{ Lo: 0x0c7f, Hi: 0x0d4f, Stride: 208 },
{ Lo: 0x0d79, Hi: 0x0e3f, Stride: 198 },
{ Lo: 0x0f01, Hi: 0x0f03, Stride: 1 },
{ Lo: 0x0f13, Hi: 0x0f15, Stride: 2 },
{ Lo: 0x0f16, Hi: 0x0f17, Stride: 1 },
{ Lo: 0x0f1a, Hi: 0x0f1f, Stride: 1 },
{ Lo: 0x0f34, Hi: 0x0f38, Stride: 2 },
{ Lo: 0x0fbe, Hi: 0x0fc5, Stride: 1 },
{ Lo: 0x0fc7, Hi: 0x0fcc, Stride: 1 },
{ Lo: 0x0fce, Hi: 0x0fcf, Stride: 1 },
{ Lo: 0x0fd5, Hi: 0x0fd8, Stride: 1 },
{ Lo: 0x109e, Hi: 0x109f, Stride: 1 },
{ Lo: 0x1390, Hi: 0x1399, Stride: 1 },
{ Lo: 0x166d, Hi: 0x17db, Stride: 366 },
{ Lo: 0x1940, Hi: 0x19de, Stride: 158 },
{ Lo: 0x19df, Hi: 0x19ff, Stride: 1 },
{ Lo: 0x1b61, Hi: 0x1b6a, Stride: 1 },
{ Lo: 0x1b74, Hi: 0x1b7c, Stride: 1 },
{ Lo: 0x1fbd, Hi: 0x1fbf, Stride: 2 },
{ Lo: 0x1fc0, Hi: 0x1fc1, Stride: 1 },
{ Lo: 0x1fcd, Hi: 0x1fcf, Stride: 1 },
{ Lo: 0x1fdd, Hi: 0x1fdf, Stride: 1 },
{ Lo: 0x1fed, Hi: 0x1fef, Stride: 1 },
{ Lo: 0x1ffd, Hi: 0x1ffe, Stride: 1 },
{ Lo: 0x2044, Hi: 0x2052, Stride: 14 },
{ Lo: 0x207a, Hi: 0x207c, Stride: 1 },
{ Lo: 0x208a, Hi: 0x208c, Stride: 1 },
{ Lo: 0x20a0, Hi: 0x20bf, Stride: 1 },
{ Lo: 0x2100, Hi: 0x2101, Stride: 1 },
{ Lo: 0x2103, Hi: 0x2106, Stride: 1 },
{ Lo: 0x2108, Hi: 0x2109, Stride: 1 },
{ Lo: 0x2114, Hi: 0x2116, Stride: 2 },
{ Lo: 0x2117, Hi: 0x2118, Stride: 1 },
{ Lo: 0x211e, Hi: 0x2123, Stride: 1 },
{ Lo: 0x2125, Hi: 0x2129, Stride: 2 },
{ Lo: 0x212e, Hi: 0x213a, Stride: 12 },
{ Lo: 0x213b, Hi: 0x2140, Stride: 5 },
{ Lo: 0x2141, Hi: 0x2144, Stride: 1 },
{ Lo: 0x214a, Hi: 0x214d, Stride: 1 },
{ Lo: 0x214f, Hi: 0x218a, Stride: 59 },
{ Lo: 0x218b, Hi: 0x2190, Stride: 5 },
{ Lo: 0x2191, Hi: 0x2307, Stride: 1 },
{ Lo: 0x230c, Hi: 0x2328, Stride: 1 },
{ Lo: 0x232b, Hi: 0x2426, Stride: 1 },
{ Lo: 0x2440, Hi: 0x244a, Stride: 1 },
{ Lo: 0x249c, Hi: 0x24e9, Stride: 1 },
{ Lo: 0x2500, Hi: 0x2767, Stride: 1 },
{ Lo: 0x2794, Hi: 0x27c4, Stride: 1 },
{ Lo: 0x27c7, Hi: 0x27e5, Stride: 1 },
{ Lo: 0x27f0, Hi: 0x2982, Stride: 1 },
{ Lo: 0x2999, Hi: 0x29d7, Stride: 1 },
{ Lo: 0x29dc, Hi: 0x29fb, Stride: 1 },
{ Lo: 0x29fe, Hi: 0x2b73, Stride: 1 },
{ Lo: 0x2b76, Hi: 0x2b95, Stride: 1 },
{ Lo: 0x2b97, Hi: 0x2bff, Stride: 1 },
{ Lo: 0x2ce5, Hi: 0x2cea, Stride: 1 },
{ Lo: 0x2e50, Hi: 0x2e51, Stride: 1 },
{ Lo: 0x2e80, Hi: 0x2e99, Stride: 1 },
{ Lo: 0x2e9b, Hi: 0x2ef3, Stride: 1 },
{ Lo: 0x2f00, Hi: 0x2fd5, Stride: 1 },
{ Lo: 0x2ff0, Hi: 0x2ffb, Stride: 1 },
{ Lo: 0x3004, Hi: 0x3012, Stride: 14 },
{ Lo: 0x3013, Hi: 0x3020, Stride: 13 },
{ Lo: 0x3036, Hi: 0x3037, Stride: 1 },
{ Lo: 0x303e, Hi: 0x303f, Stride: 1 },
{ Lo: 0x309b, Hi: 0x309c, Stride: 1 },
{ Lo: 0x3190, Hi: 0x3191, Stride: 1 },
{ Lo: 0x3196, Hi: 0x319f, Stride: 1 },
{ Lo: 0x31c0, Hi: 0x31e3, Stride: 1 },
{ Lo: 0x3200, Hi: 0x321e, Stride: 1 },
{ Lo: 0x322a, Hi: 0x3247, Stride: 1 },
{ Lo: 0x3250, Hi: 0x3260, Stride: 16 },
{ Lo: 0x3261, Hi: 0x327f, Stride: 1 },
{ Lo: 0x328a, Hi: 0x32b0, Stride: 1 },
{ Lo: 0x32c0, Hi: 0x33ff, Stride: 1 },
{ Lo: 0x4dc0, Hi: 0x4dff, Stride: 1 },
{ Lo: 0xa490, Hi: 0xa4c6, Stride: 1 },
{ Lo: 0xa700, Hi: 0xa716, Stride: 1 },
{ Lo: 0xa720, Hi: 0xa721, Stride: 1 },
{ Lo: 0xa789, Hi: 0xa78a, Stride: 1 },
{ Lo: 0xa828, Hi: 0xa82b, Stride: 1 },
{ Lo: 0xa836, Hi: 0xa839, Stride: 1 },
{ Lo: 0xaa77, Hi: 0xaa79, Stride: 1 },
{ Lo: 0xab5b, Hi: 0xab6a, Stride: 15 },
{ Lo: 0xab6b, Hi: 0xfb29, Stride: 20414 },
{ Lo: 0xfbb2, Hi: 0xfbc1, Stride: 1 },
{ Lo: 0xfdfc, Hi: 0xfdfd, Stride: 1 },
{ Lo: 0xfe62, Hi: 0xfe64, Stride: 2 },
{ Lo: 0xfe65, Hi: 0xfe66, Stride: 1 },
{ Lo: 0xfe69, Hi: 0xff04, Stride: 155 },
{ Lo: 0xff0b, Hi: 0xff1c, Stride: 17 },
{ Lo: 0xff1d, Hi: 0xff1e, Stride: 1 },
{ Lo: 0xff3e, Hi: 0xff40, Stride: 2 },
{ Lo: 0xff5c, Hi: 0xff5e, Stride: 2 },
{ Lo: 0xffe0, Hi: 0xffe6, Stride: 1 },
{ Lo: 0xffe8, Hi: 0xffee, Stride: 1 },
{ Lo: 0xfffc, Hi: 0xfffd, Stride: 1 },
],
R32: [
{ Lo: 0x10137, Hi: 0x1013f, Stride: 1 },
{ Lo: 0x10179, Hi: 0x10189, Stride: 1 },
{ Lo: 0x1018c, Hi: 0x1018e, Stride: 1 },
{ Lo: 0x10190, Hi: 0x1019c, Stride: 1 },
{ Lo: 0x101a0, Hi: 0x101d0, Stride: 48 },
{ Lo: 0x101d1, Hi: 0x101fc, Stride: 1 },
{ Lo: 0x10877, Hi: 0x10878, Stride: 1 },
{ Lo: 0x10ac8, Hi: 0x1173f, Stride: 3191 },
{ Lo: 0x11fd5, Hi: 0x11ff1, Stride: 1 },
{ Lo: 0x16b3c, Hi: 0x16b3f, Stride: 1 },
{ Lo: 0x16b45, Hi: 0x1bc9c, Stride: 20823 },
{ Lo: 0x1d000, Hi: 0x1d0f5, Stride: 1 },
{ Lo: 0x1d100, Hi: 0x1d126, Stride: 1 },
{ Lo: 0x1d129, Hi: 0x1d164, Stride: 1 },
{ Lo: 0x1d16a, Hi: 0x1d16c, Stride: 1 },
{ Lo: 0x1d183, Hi: 0x1d184, Stride: 1 },
{ Lo: 0x1d18c, Hi: 0x1d1a9, Stride: 1 },
{ Lo: 0x1d1ae, Hi: 0x1d1e8, Stride: 1 },
{ Lo: 0x1d200, Hi: 0x1d241, Stride: 1 },
{ Lo: 0x1d245, Hi: 0x1d300, Stride: 187 },
{ Lo: 0x1d301, Hi: 0x1d356, Stride: 1 },
{ Lo: 0x1d6c1, Hi: 0x1d6db, Stride: 26 },
{ Lo: 0x1d6fb, Hi: 0x1d715, Stride: 26 },
{ Lo: 0x1d735, Hi: 0x1d74f, Stride: 26 },
{ Lo: 0x1d76f, Hi: 0x1d789, Stride: 26 },
{ Lo: 0x1d7a9, Hi: 0x1d7c3, Stride: 26 },
{ Lo: 0x1d800, Hi: 0x1d9ff, Stride: 1 },
{ Lo: 0x1da37, Hi: 0x1da3a, Stride: 1 },
{ Lo: 0x1da6d, Hi: 0x1da74, Stride: 1 },
{ Lo: 0x1da76, Hi: 0x1da83, Stride: 1 },
{ Lo: 0x1da85, Hi: 0x1da86, Stride: 1 },
{ Lo: 0x1e14f, Hi: 0x1e2ff, Stride: 432 },
{ Lo: 0x1ecac, Hi: 0x1ecb0, Stride: 4 },
{ Lo: 0x1ed2e, Hi: 0x1eef0, Stride: 450 },
{ Lo: 0x1eef1, Hi: 0x1f000, Stride: 271 },
{ Lo: 0x1f001, Hi: 0x1f02b, Stride: 1 },
{ Lo: 0x1f030, Hi: 0x1f093, Stride: 1 },
{ Lo: 0x1f0a0, Hi: 0x1f0ae, Stride: 1 },
{ Lo: 0x1f0b1, Hi: 0x1f0bf, Stride: 1 },
{ Lo: 0x1f0c1, Hi: 0x1f0cf, Stride: 1 },
{ Lo: 0x1f0d1, Hi: 0x1f0f5, Stride: 1 },
{ Lo: 0x1f10d, Hi: 0x1f1ad, Stride: 1 },
{ Lo: 0x1f1e6, Hi: 0x1f202, Stride: 1 },
{ Lo: 0x1f210, Hi: 0x1f23b, Stride: 1 },
{ Lo: 0x1f240, Hi: 0x1f248, Stride: 1 },
{ Lo: 0x1f250, Hi: 0x1f251, Stride: 1 },
{ Lo: 0x1f260, Hi: 0x1f265, Stride: 1 },
{ Lo: 0x1f300, Hi: 0x1f6d7, Stride: 1 },
{ Lo: 0x1f6e0, Hi: 0x1f6ec, Stride: 1 },
{ Lo: 0x1f6f0, Hi: 0x1f6fc, Stride: 1 },
{ Lo: 0x1f700, Hi: 0x1f773, Stride: 1 },
{ Lo: 0x1f780, Hi: 0x1f7d8, Stride: 1 },
{ Lo: 0x1f7e0, Hi: 0x1f7eb, Stride: 1 },
{ Lo: 0x1f800, Hi: 0x1f80b, Stride: 1 },
{ Lo: 0x1f810, Hi: 0x1f847, Stride: 1 },
{ Lo: 0x1f850, Hi: 0x1f859, Stride: 1 },
{ Lo: 0x1f860, Hi: 0x1f887, Stride: 1 },
{ Lo: 0x1f890, Hi: 0x1f8ad, Stride: 1 },
{ Lo: 0x1f8b0, Hi: 0x1f8b1, Stride: 1 },
{ Lo: 0x1f900, Hi: 0x1f978, Stride: 1 },
{ Lo: 0x1f97a, Hi: 0x1f9cb, Stride: 1 },
{ Lo: 0x1f9cd, Hi: 0x1fa53, Stride: 1 },
{ Lo: 0x1fa60, Hi: 0x1fa6d, Stride: 1 },
{ Lo: 0x1fa70, Hi: 0x1fa74, Stride: 1 },
{ Lo: 0x1fa78, Hi: 0x1fa7a, Stride: 1 },
{ Lo: 0x1fa80, Hi: 0x1fa86, Stride: 1 },
{ Lo: 0x1fa90, Hi: 0x1faa8, Stride: 1 },
{ Lo: 0x1fab0, Hi: 0x1fab6, Stride: 1 },
{ Lo: 0x1fac0, Hi: 0x1fac2, Stride: 1 },
{ Lo: 0x1fad0, Hi: 0x1fad6, Stride: 1 },
{ Lo: 0x1fb00, Hi: 0x1fb92, Stride: 1 },
{ Lo: 0x1fb94, Hi: 0x1fbca, Stride: 1 },
],
LatinOffset: 10,
}
// PrintRanges defines the set of printable characters according to Go.
// ASCII space, U+0020, is handled separately.
const PrintRanges: RangeTable[] = [L, M, N, P, S]
// IsPrint reports whether the rune is defined as printable by Go. Such
// characters include letters, marks, numbers, punctuation, symbols, and the
// ASCII space character, from categories L, M, N, P, S and the ASCII space
// character. This categorization is the same as IsGraphic except that the
// only spacing character is ASCII space, U+0020.
function IsPrint(r: number): boolean {
if (r <= MaxLatin1) {
return (properties[r] & pp) != 0
}
return In(r, PrintRanges)
}
// is16 reports whether r is in the sorted slice of 16-bit ranges.
function is16(ranges: Range16[], r: number): boolean {
if (ranges.length <= linearMax || r <= MaxLatin1) {
for (const range_ of ranges) {
if (r < range_.Lo) {
return false
}
if (r <= range_.Hi) {
return range_.Stride == 1 || (r - range_.Lo) % range_.Stride == 0
}
}
return false
}
// binary search over ranges
let lo = 0
let hi = ranges.length
while (lo < hi) {
const m = Math.floor(lo + (hi - lo) / 2)
const range_ = ranges[m]
if (range_.Lo <= r && r <= range_.Hi) {
return range_.Stride == 1 || (r - range_.Lo) % range_.Stride == 0
}
if (r < range_.Lo) {
hi = m
} else {
lo = m + 1
}
}
return false
}
// is32 reports whether r is in the sorted slice of 32-bit ranges.
function is32(ranges: Range32[], r: number): boolean {
if (ranges.length <= linearMax) {
for (const range_ of ranges) {
if (r < range_.Lo) {
return false
}
if (r <= range_.Hi) {
return range_.Stride == 1 || (r - range_.Lo) % range_.Stride == 0
}
}
return false
}
// binary search over ranges
let lo = 0
let hi = ranges.length
while (lo < hi) {
const m = Math.floor(lo + (hi - lo) / 2)
const range_ = ranges[m]
if (range_.Lo <= r && r <= range_.Hi) {
return range_.Stride == 1 || (r - range_.Lo) % range_.Stride == 0
}
if (r < range_.Lo) {
hi = m
} else {
lo = m + 1
}
}
return false
}
// Is reports whether the rune is in the specified table of ranges.
function Is(rangeTab: RangeTable, r: number): boolean {
const r16 = rangeTab.R16
// Compare as uint32 to correctly handle negative runes.
if (r16.length > 0 && r <= r16[r16.length - 1].Hi) {
return is16(r16, r)
}
const r32 = rangeTab.R32
if (r32.length > 0 && r >= r32[0].Lo) {
return is32(r32, r)
}
return false
}
// In reports whether the rune is a member of one of the ranges.
function In(r: number, ranges: RangeTable[]): boolean {
for (const inside of ranges) {
if (Is(inside, r)) {
return true
}
}
return false
}
var input = "一句话A  a¡h\u202da试试打印"
for (const char of input) {
const code = char.charCodeAt(0)
const isPrintable = IsPrint(code)
console.log(`${isPrintable}\t0x${code.toString(16)} ==> ${char}`)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment