authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2022-12-22 16:05:24 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2022-12-22 16:05:24 -08:00
logcb30c51eb16ee21af7ac89aef8443603a7e55216
treee798f56e000cb2b1005cff0f5ac47c5a70c8821c
parent7f00aeab4ecf35dd90b940a01e651833ffed8296

add NamedSequences, closes #23


5 files changed, 497 insertions(+), 0 deletions(-)

generate.zig+1
......@@ -19,6 +19,7 @@ const files = [_]type{
1919 @import("./scripts/Jamo.zig"),
2020 @import("./scripts/LineBreak.zig"),
2121 @import("./scripts/NameAliases.zig"),
22 @import("./scripts/NamedSequences.zig"),
2223};
2324
2425pub fn main() !void {
scripts/NamedSequences.zig created+38
......@@ -0,0 +1,38 @@
1const std = @import("std");
2const common = @import("./_common.zig");
3
4pub usingnamespace common.Main(struct {
5 pub const source_file = "NamedSequences";
6
7 pub const dest_file = "src/named_sequences.zig";
8
9 pub const dest_header =
10 \\pub const NamedSequence = struct {
11 \\ name: []const u8,
12 \\ sequence: []const u21,
13 \\};
14 \\
15 \\pub const data = [_]NamedSequence{
16 \\
17 ;
18
19 pub const dest_footer =
20 \\};
21 \\
22 ;
23
24 pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool {
25 _ = alloc;
26 var it = std.mem.split(u8, line, ";");
27
28 try writer.print(" .{{ .name = \"{}\", .sequence = &[_]u21{{", .{std.zig.fmtEscapes(it.next().?)});
29
30 var jt = std.mem.tokenize(u8, it.next().?, " ");
31 while (jt.next()) |jtem| {
32 try writer.print(" 0x{s},", .{jtem});
33 }
34 try writer.writeAll(" } },\n");
35
36 return true;
37 }
38});
src/lib.zig+1
......@@ -20,3 +20,4 @@ pub const indic_syllabic_category = @import("./indic_syllabic_category.zig");
2020pub const jamo = @import("./jamo.zig");
2121pub const line_break = @import("./line_break.zig");
2222pub const name_aliases = @import("./name_aliases.zig");
23pub const named_sequences = @import("./named_sequences.zig");
src/main.zig+1
......@@ -24,6 +24,7 @@ pub fn main() !void {
2424 ucd.jamo,
2525 ucd.line_break,
2626 ucd.name_aliases,
27 ucd.named_sequences,
2728 };
2829
2930 inline for (data) |b| {
src/named_sequences.zig created+456
......@@ -0,0 +1,456 @@
1// This file is part of the Unicode Character Database
2// For documentation, see http://www.unicode.org/reports/tr44/
3//
4// Based on the source file: https://unicode.org/Public/13.0.0/ucd/NamedSequences.txt
5//
6// zig fmt: off
7
8pub const NamedSequence = struct {
9 name: []const u8,
10 sequence: []const u21,
11};
12
13pub const data = [_]NamedSequence{
14 .{ .name = "KEYCAP NUMBER SIGN", .sequence = &[_]u21{ 0x0023, 0xFE0F, 0x20E3, } },
15 .{ .name = "KEYCAP ASTERISK", .sequence = &[_]u21{ 0x002A, 0xFE0F, 0x20E3, } },
16 .{ .name = "KEYCAP DIGIT ZERO", .sequence = &[_]u21{ 0x0030, 0xFE0F, 0x20E3, } },
17 .{ .name = "KEYCAP DIGIT ONE", .sequence = &[_]u21{ 0x0031, 0xFE0F, 0x20E3, } },
18 .{ .name = "KEYCAP DIGIT TWO", .sequence = &[_]u21{ 0x0032, 0xFE0F, 0x20E3, } },
19 .{ .name = "KEYCAP DIGIT THREE", .sequence = &[_]u21{ 0x0033, 0xFE0F, 0x20E3, } },
20 .{ .name = "KEYCAP DIGIT FOUR", .sequence = &[_]u21{ 0x0034, 0xFE0F, 0x20E3, } },
21 .{ .name = "KEYCAP DIGIT FIVE", .sequence = &[_]u21{ 0x0035, 0xFE0F, 0x20E3, } },
22 .{ .name = "KEYCAP DIGIT SIX", .sequence = &[_]u21{ 0x0036, 0xFE0F, 0x20E3, } },
23 .{ .name = "KEYCAP DIGIT SEVEN", .sequence = &[_]u21{ 0x0037, 0xFE0F, 0x20E3, } },
24 .{ .name = "KEYCAP DIGIT EIGHT", .sequence = &[_]u21{ 0x0038, 0xFE0F, 0x20E3, } },
25 .{ .name = "KEYCAP DIGIT NINE", .sequence = &[_]u21{ 0x0039, 0xFE0F, 0x20E3, } },
26 .{ .name = "LATIN CAPITAL LETTER A WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x0100, 0x0300, } },
27 .{ .name = "LATIN SMALL LETTER A WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x0101, 0x0300, } },
28 .{ .name = "LATIN CAPITAL LETTER I WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x012A, 0x0300, } },
29 .{ .name = "LATIN SMALL LETTER I WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x012B, 0x0300, } },
30 .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x016A, 0x0300, } },
31 .{ .name = "LATIN SMALL LETTER U WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x016B, 0x0300, } },
32 .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0045, 0x0329, } },
33 .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0065, 0x0329, } },
34 .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00C8, 0x0329, } },
35 .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00E8, 0x0329, } },
36 .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00C9, 0x0329, } },
37 .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00E9, 0x0329, } },
38 .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x004F, 0x0329, } },
39 .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x006F, 0x0329, } },
40 .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00D2, 0x0329, } },
41 .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00F2, 0x0329, } },
42 .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00D3, 0x0329, } },
43 .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00F3, 0x0329, } },
44 .{ .name = "LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0053, 0x0329, } },
45 .{ .name = "LATIN SMALL LETTER S WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0073, 0x0329, } },
46 .{ .name = "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON", .sequence = &[_]u21{ 0x00CA, 0x0304, } },
47 .{ .name = "LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON", .sequence = &[_]u21{ 0x00EA, 0x0304, } },
48 .{ .name = "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON", .sequence = &[_]u21{ 0x00CA, 0x030C, } },
49 .{ .name = "LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON", .sequence = &[_]u21{ 0x00EA, 0x030C, } },
50 .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0301, } },
51 .{ .name = "LATIN SMALL LETTER NG WITH TILDE ABOVE", .sequence = &[_]u21{ 0x006E, 0x0360, 0x0067, } },
52 .{ .name = "LATIN CAPITAL LETTER A WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0104, 0x0301, } },
53 .{ .name = "LATIN SMALL LETTER A WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0105, 0x0301, } },
54 .{ .name = "LATIN CAPITAL LETTER A WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0104, 0x0303, } },
55 .{ .name = "LATIN SMALL LETTER A WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0105, 0x0303, } },
56 .{ .name = "LATIN CAPITAL LETTER E WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0118, 0x0301, } },
57 .{ .name = "LATIN SMALL LETTER E WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0119, 0x0301, } },
58 .{ .name = "LATIN CAPITAL LETTER E WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0118, 0x0303, } },
59 .{ .name = "LATIN SMALL LETTER E WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0119, 0x0303, } },
60 .{ .name = "LATIN CAPITAL LETTER E WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0116, 0x0301, } },
61 .{ .name = "LATIN SMALL LETTER E WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0117, 0x0301, } },
62 .{ .name = "LATIN CAPITAL LETTER E WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0116, 0x0303, } },
63 .{ .name = "LATIN SMALL LETTER E WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0117, 0x0303, } },
64 .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND GRAVE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0300, } },
65 .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0303, } },
66 .{ .name = "LATIN CAPITAL LETTER I WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x012E, 0x0301, } },
67 .{ .name = "LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x012F, 0x0307, 0x0301, } },
68 .{ .name = "LATIN CAPITAL LETTER I WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x012E, 0x0303, } },
69 .{ .name = "LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x012F, 0x0307, 0x0303, } },
70 .{ .name = "LATIN CAPITAL LETTER J WITH TILDE", .sequence = &[_]u21{ 0x004A, 0x0303, } },
71 .{ .name = "LATIN SMALL LETTER J WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x006A, 0x0307, 0x0303, } },
72 .{ .name = "LATIN CAPITAL LETTER L WITH TILDE", .sequence = &[_]u21{ 0x004C, 0x0303, } },
73 .{ .name = "LATIN SMALL LETTER L WITH TILDE", .sequence = &[_]u21{ 0x006C, 0x0303, } },
74 .{ .name = "LATIN CAPITAL LETTER M WITH TILDE", .sequence = &[_]u21{ 0x004D, 0x0303, } },
75 .{ .name = "LATIN SMALL LETTER M WITH TILDE", .sequence = &[_]u21{ 0x006D, 0x0303, } },
76 .{ .name = "LATIN CAPITAL LETTER R WITH TILDE", .sequence = &[_]u21{ 0x0052, 0x0303, } },
77 .{ .name = "LATIN SMALL LETTER R WITH TILDE", .sequence = &[_]u21{ 0x0072, 0x0303, } },
78 .{ .name = "LATIN CAPITAL LETTER U WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0172, 0x0301, } },
79 .{ .name = "LATIN SMALL LETTER U WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0173, 0x0301, } },
80 .{ .name = "LATIN CAPITAL LETTER U WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0172, 0x0303, } },
81 .{ .name = "LATIN SMALL LETTER U WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0173, 0x0303, } },
82 .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND ACUTE", .sequence = &[_]u21{ 0x016A, 0x0301, } },
83 .{ .name = "LATIN SMALL LETTER U WITH MACRON AND ACUTE", .sequence = &[_]u21{ 0x016B, 0x0301, } },
84 .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND TILDE", .sequence = &[_]u21{ 0x016A, 0x0303, } },
85 .{ .name = "LATIN SMALL LETTER U WITH MACRON AND TILDE", .sequence = &[_]u21{ 0x016B, 0x0303, } },
86 .{ .name = "LATIN SMALL LETTER AE WITH GRAVE", .sequence = &[_]u21{ 0x00E6, 0x0300, } },
87 .{ .name = "LATIN SMALL LETTER OPEN O WITH GRAVE", .sequence = &[_]u21{ 0x0254, 0x0300, } },
88 .{ .name = "LATIN SMALL LETTER OPEN O WITH ACUTE", .sequence = &[_]u21{ 0x0254, 0x0301, } },
89 .{ .name = "LATIN SMALL LETTER TURNED V WITH GRAVE", .sequence = &[_]u21{ 0x028C, 0x0300, } },
90 .{ .name = "LATIN SMALL LETTER TURNED V WITH ACUTE", .sequence = &[_]u21{ 0x028C, 0x0301, } },
91 .{ .name = "LATIN SMALL LETTER SCHWA WITH GRAVE", .sequence = &[_]u21{ 0x0259, 0x0300, } },
92 .{ .name = "LATIN SMALL LETTER SCHWA WITH ACUTE", .sequence = &[_]u21{ 0x0259, 0x0301, } },
93 .{ .name = "LATIN SMALL LETTER HOOKED SCHWA WITH GRAVE", .sequence = &[_]u21{ 0x025A, 0x0300, } },
94 .{ .name = "LATIN SMALL LETTER HOOKED SCHWA WITH ACUTE", .sequence = &[_]u21{ 0x025A, 0x0301, } },
95 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF", .sequence = &[_]u21{ 0x0626, 0x0627, } },
96 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH WAW", .sequence = &[_]u21{ 0x0626, 0x0648, } },
97 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA", .sequence = &[_]u21{ 0x0626, 0x0649, } },
98 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH OE", .sequence = &[_]u21{ 0x0626, 0x06C6, } },
99 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH U", .sequence = &[_]u21{ 0x0626, 0x06C7, } },
100 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH YU", .sequence = &[_]u21{ 0x0626, 0x06C8, } },
101 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH E", .sequence = &[_]u21{ 0x0626, 0x06D0, } },
102 .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE", .sequence = &[_]u21{ 0x0626, 0x06D5, } },
103 .{ .name = "ARABIC SEQUENCE NOON WITH KEHEH", .sequence = &[_]u21{ 0x0646, 0x06A9, } },
104 .{ .name = "BENGALI LETTER KHINYA", .sequence = &[_]u21{ 0x0995, 0x09CD, 0x09B7, } },
105 .{ .name = "TAMIL CONSONANT K", .sequence = &[_]u21{ 0x0B95, 0x0BCD, } },
106 .{ .name = "TAMIL CONSONANT NG", .sequence = &[_]u21{ 0x0B99, 0x0BCD, } },
107 .{ .name = "TAMIL CONSONANT C", .sequence = &[_]u21{ 0x0B9A, 0x0BCD, } },
108 .{ .name = "TAMIL CONSONANT NY", .sequence = &[_]u21{ 0x0B9E, 0x0BCD, } },
109 .{ .name = "TAMIL CONSONANT TT", .sequence = &[_]u21{ 0x0B9F, 0x0BCD, } },
110 .{ .name = "TAMIL CONSONANT NN", .sequence = &[_]u21{ 0x0BA3, 0x0BCD, } },
111 .{ .name = "TAMIL CONSONANT T", .sequence = &[_]u21{ 0x0BA4, 0x0BCD, } },
112 .{ .name = "TAMIL CONSONANT N", .sequence = &[_]u21{ 0x0BA8, 0x0BCD, } },
113 .{ .name = "TAMIL CONSONANT P", .sequence = &[_]u21{ 0x0BAA, 0x0BCD, } },
114 .{ .name = "TAMIL CONSONANT M", .sequence = &[_]u21{ 0x0BAE, 0x0BCD, } },
115 .{ .name = "TAMIL CONSONANT Y", .sequence = &[_]u21{ 0x0BAF, 0x0BCD, } },
116 .{ .name = "TAMIL CONSONANT R", .sequence = &[_]u21{ 0x0BB0, 0x0BCD, } },
117 .{ .name = "TAMIL CONSONANT L", .sequence = &[_]u21{ 0x0BB2, 0x0BCD, } },
118 .{ .name = "TAMIL CONSONANT V", .sequence = &[_]u21{ 0x0BB5, 0x0BCD, } },
119 .{ .name = "TAMIL CONSONANT LLL", .sequence = &[_]u21{ 0x0BB4, 0x0BCD, } },
120 .{ .name = "TAMIL CONSONANT LL", .sequence = &[_]u21{ 0x0BB3, 0x0BCD, } },
121 .{ .name = "TAMIL CONSONANT RR", .sequence = &[_]u21{ 0x0BB1, 0x0BCD, } },
122 .{ .name = "TAMIL CONSONANT NNN", .sequence = &[_]u21{ 0x0BA9, 0x0BCD, } },
123 .{ .name = "TAMIL CONSONANT J", .sequence = &[_]u21{ 0x0B9C, 0x0BCD, } },
124 .{ .name = "TAMIL CONSONANT SH", .sequence = &[_]u21{ 0x0BB6, 0x0BCD, } },
125 .{ .name = "TAMIL CONSONANT SS", .sequence = &[_]u21{ 0x0BB7, 0x0BCD, } },
126 .{ .name = "TAMIL CONSONANT S", .sequence = &[_]u21{ 0x0BB8, 0x0BCD, } },
127 .{ .name = "TAMIL CONSONANT H", .sequence = &[_]u21{ 0x0BB9, 0x0BCD, } },
128 .{ .name = "TAMIL CONSONANT KSS", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCD, } },
129 .{ .name = "TAMIL SYLLABLE KAA", .sequence = &[_]u21{ 0x0B95, 0x0BBE, } },
130 .{ .name = "TAMIL SYLLABLE KI", .sequence = &[_]u21{ 0x0B95, 0x0BBF, } },
131 .{ .name = "TAMIL SYLLABLE KII", .sequence = &[_]u21{ 0x0B95, 0x0BC0, } },
132 .{ .name = "TAMIL SYLLABLE KU", .sequence = &[_]u21{ 0x0B95, 0x0BC1, } },
133 .{ .name = "TAMIL SYLLABLE KUU", .sequence = &[_]u21{ 0x0B95, 0x0BC2, } },
134 .{ .name = "TAMIL SYLLABLE KE", .sequence = &[_]u21{ 0x0B95, 0x0BC6, } },
135 .{ .name = "TAMIL SYLLABLE KEE", .sequence = &[_]u21{ 0x0B95, 0x0BC7, } },
136 .{ .name = "TAMIL SYLLABLE KAI", .sequence = &[_]u21{ 0x0B95, 0x0BC8, } },
137 .{ .name = "TAMIL SYLLABLE KO", .sequence = &[_]u21{ 0x0B95, 0x0BCA, } },
138 .{ .name = "TAMIL SYLLABLE KOO", .sequence = &[_]u21{ 0x0B95, 0x0BCB, } },
139 .{ .name = "TAMIL SYLLABLE KAU", .sequence = &[_]u21{ 0x0B95, 0x0BCC, } },
140 .{ .name = "TAMIL SYLLABLE NGAA", .sequence = &[_]u21{ 0x0B99, 0x0BBE, } },
141 .{ .name = "TAMIL SYLLABLE NGI", .sequence = &[_]u21{ 0x0B99, 0x0BBF, } },
142 .{ .name = "TAMIL SYLLABLE NGII", .sequence = &[_]u21{ 0x0B99, 0x0BC0, } },
143 .{ .name = "TAMIL SYLLABLE NGU", .sequence = &[_]u21{ 0x0B99, 0x0BC1, } },
144 .{ .name = "TAMIL SYLLABLE NGUU", .sequence = &[_]u21{ 0x0B99, 0x0BC2, } },
145 .{ .name = "TAMIL SYLLABLE NGE", .sequence = &[_]u21{ 0x0B99, 0x0BC6, } },
146 .{ .name = "TAMIL SYLLABLE NGEE", .sequence = &[_]u21{ 0x0B99, 0x0BC7, } },
147 .{ .name = "TAMIL SYLLABLE NGAI", .sequence = &[_]u21{ 0x0B99, 0x0BC8, } },
148 .{ .name = "TAMIL SYLLABLE NGO", .sequence = &[_]u21{ 0x0B99, 0x0BCA, } },
149 .{ .name = "TAMIL SYLLABLE NGOO", .sequence = &[_]u21{ 0x0B99, 0x0BCB, } },
150 .{ .name = "TAMIL SYLLABLE NGAU", .sequence = &[_]u21{ 0x0B99, 0x0BCC, } },
151 .{ .name = "TAMIL SYLLABLE CAA", .sequence = &[_]u21{ 0x0B9A, 0x0BBE, } },
152 .{ .name = "TAMIL SYLLABLE CI", .sequence = &[_]u21{ 0x0B9A, 0x0BBF, } },
153 .{ .name = "TAMIL SYLLABLE CII", .sequence = &[_]u21{ 0x0B9A, 0x0BC0, } },
154 .{ .name = "TAMIL SYLLABLE CU", .sequence = &[_]u21{ 0x0B9A, 0x0BC1, } },
155 .{ .name = "TAMIL SYLLABLE CUU", .sequence = &[_]u21{ 0x0B9A, 0x0BC2, } },
156 .{ .name = "TAMIL SYLLABLE CE", .sequence = &[_]u21{ 0x0B9A, 0x0BC6, } },
157 .{ .name = "TAMIL SYLLABLE CEE", .sequence = &[_]u21{ 0x0B9A, 0x0BC7, } },
158 .{ .name = "TAMIL SYLLABLE CAI", .sequence = &[_]u21{ 0x0B9A, 0x0BC8, } },
159 .{ .name = "TAMIL SYLLABLE CO", .sequence = &[_]u21{ 0x0B9A, 0x0BCA, } },
160 .{ .name = "TAMIL SYLLABLE COO", .sequence = &[_]u21{ 0x0B9A, 0x0BCB, } },
161 .{ .name = "TAMIL SYLLABLE CAU", .sequence = &[_]u21{ 0x0B9A, 0x0BCC, } },
162 .{ .name = "TAMIL SYLLABLE NYAA", .sequence = &[_]u21{ 0x0B9E, 0x0BBE, } },
163 .{ .name = "TAMIL SYLLABLE NYI", .sequence = &[_]u21{ 0x0B9E, 0x0BBF, } },
164 .{ .name = "TAMIL SYLLABLE NYII", .sequence = &[_]u21{ 0x0B9E, 0x0BC0, } },
165 .{ .name = "TAMIL SYLLABLE NYU", .sequence = &[_]u21{ 0x0B9E, 0x0BC1, } },
166 .{ .name = "TAMIL SYLLABLE NYUU", .sequence = &[_]u21{ 0x0B9E, 0x0BC2, } },
167 .{ .name = "TAMIL SYLLABLE NYE", .sequence = &[_]u21{ 0x0B9E, 0x0BC6, } },
168 .{ .name = "TAMIL SYLLABLE NYEE", .sequence = &[_]u21{ 0x0B9E, 0x0BC7, } },
169 .{ .name = "TAMIL SYLLABLE NYAI", .sequence = &[_]u21{ 0x0B9E, 0x0BC8, } },
170 .{ .name = "TAMIL SYLLABLE NYO", .sequence = &[_]u21{ 0x0B9E, 0x0BCA, } },
171 .{ .name = "TAMIL SYLLABLE NYOO", .sequence = &[_]u21{ 0x0B9E, 0x0BCB, } },
172 .{ .name = "TAMIL SYLLABLE NYAU", .sequence = &[_]u21{ 0x0B9E, 0x0BCC, } },
173 .{ .name = "TAMIL SYLLABLE TTAA", .sequence = &[_]u21{ 0x0B9F, 0x0BBE, } },
174 .{ .name = "TAMIL SYLLABLE TTI", .sequence = &[_]u21{ 0x0B9F, 0x0BBF, } },
175 .{ .name = "TAMIL SYLLABLE TTII", .sequence = &[_]u21{ 0x0B9F, 0x0BC0, } },
176 .{ .name = "TAMIL SYLLABLE TTU", .sequence = &[_]u21{ 0x0B9F, 0x0BC1, } },
177 .{ .name = "TAMIL SYLLABLE TTUU", .sequence = &[_]u21{ 0x0B9F, 0x0BC2, } },
178 .{ .name = "TAMIL SYLLABLE TTE", .sequence = &[_]u21{ 0x0B9F, 0x0BC6, } },
179 .{ .name = "TAMIL SYLLABLE TTEE", .sequence = &[_]u21{ 0x0B9F, 0x0BC7, } },
180 .{ .name = "TAMIL SYLLABLE TTAI", .sequence = &[_]u21{ 0x0B9F, 0x0BC8, } },
181 .{ .name = "TAMIL SYLLABLE TTO", .sequence = &[_]u21{ 0x0B9F, 0x0BCA, } },
182 .{ .name = "TAMIL SYLLABLE TTOO", .sequence = &[_]u21{ 0x0B9F, 0x0BCB, } },
183 .{ .name = "TAMIL SYLLABLE TTAU", .sequence = &[_]u21{ 0x0B9F, 0x0BCC, } },
184 .{ .name = "TAMIL SYLLABLE NNAA", .sequence = &[_]u21{ 0x0BA3, 0x0BBE, } },
185 .{ .name = "TAMIL SYLLABLE NNI", .sequence = &[_]u21{ 0x0BA3, 0x0BBF, } },
186 .{ .name = "TAMIL SYLLABLE NNII", .sequence = &[_]u21{ 0x0BA3, 0x0BC0, } },
187 .{ .name = "TAMIL SYLLABLE NNU", .sequence = &[_]u21{ 0x0BA3, 0x0BC1, } },
188 .{ .name = "TAMIL SYLLABLE NNUU", .sequence = &[_]u21{ 0x0BA3, 0x0BC2, } },
189 .{ .name = "TAMIL SYLLABLE NNE", .sequence = &[_]u21{ 0x0BA3, 0x0BC6, } },
190 .{ .name = "TAMIL SYLLABLE NNEE", .sequence = &[_]u21{ 0x0BA3, 0x0BC7, } },
191 .{ .name = "TAMIL SYLLABLE NNAI", .sequence = &[_]u21{ 0x0BA3, 0x0BC8, } },
192 .{ .name = "TAMIL SYLLABLE NNO", .sequence = &[_]u21{ 0x0BA3, 0x0BCA, } },
193 .{ .name = "TAMIL SYLLABLE NNOO", .sequence = &[_]u21{ 0x0BA3, 0x0BCB, } },
194 .{ .name = "TAMIL SYLLABLE NNAU", .sequence = &[_]u21{ 0x0BA3, 0x0BCC, } },
195 .{ .name = "TAMIL SYLLABLE TAA", .sequence = &[_]u21{ 0x0BA4, 0x0BBE, } },
196 .{ .name = "TAMIL SYLLABLE TI", .sequence = &[_]u21{ 0x0BA4, 0x0BBF, } },
197 .{ .name = "TAMIL SYLLABLE TII", .sequence = &[_]u21{ 0x0BA4, 0x0BC0, } },
198 .{ .name = "TAMIL SYLLABLE TU", .sequence = &[_]u21{ 0x0BA4, 0x0BC1, } },
199 .{ .name = "TAMIL SYLLABLE TUU", .sequence = &[_]u21{ 0x0BA4, 0x0BC2, } },
200 .{ .name = "TAMIL SYLLABLE TE", .sequence = &[_]u21{ 0x0BA4, 0x0BC6, } },
201 .{ .name = "TAMIL SYLLABLE TEE", .sequence = &[_]u21{ 0x0BA4, 0x0BC7, } },
202 .{ .name = "TAMIL SYLLABLE TAI", .sequence = &[_]u21{ 0x0BA4, 0x0BC8, } },
203 .{ .name = "TAMIL SYLLABLE TO", .sequence = &[_]u21{ 0x0BA4, 0x0BCA, } },
204 .{ .name = "TAMIL SYLLABLE TOO", .sequence = &[_]u21{ 0x0BA4, 0x0BCB, } },
205 .{ .name = "TAMIL SYLLABLE TAU", .sequence = &[_]u21{ 0x0BA4, 0x0BCC, } },
206 .{ .name = "TAMIL SYLLABLE NAA", .sequence = &[_]u21{ 0x0BA8, 0x0BBE, } },
207 .{ .name = "TAMIL SYLLABLE NI", .sequence = &[_]u21{ 0x0BA8, 0x0BBF, } },
208 .{ .name = "TAMIL SYLLABLE NII", .sequence = &[_]u21{ 0x0BA8, 0x0BC0, } },
209 .{ .name = "TAMIL SYLLABLE NU", .sequence = &[_]u21{ 0x0BA8, 0x0BC1, } },
210 .{ .name = "TAMIL SYLLABLE NUU", .sequence = &[_]u21{ 0x0BA8, 0x0BC2, } },
211 .{ .name = "TAMIL SYLLABLE NE", .sequence = &[_]u21{ 0x0BA8, 0x0BC6, } },
212 .{ .name = "TAMIL SYLLABLE NEE", .sequence = &[_]u21{ 0x0BA8, 0x0BC7, } },
213 .{ .name = "TAMIL SYLLABLE NAI", .sequence = &[_]u21{ 0x0BA8, 0x0BC8, } },
214 .{ .name = "TAMIL SYLLABLE NO", .sequence = &[_]u21{ 0x0BA8, 0x0BCA, } },
215 .{ .name = "TAMIL SYLLABLE NOO", .sequence = &[_]u21{ 0x0BA8, 0x0BCB, } },
216 .{ .name = "TAMIL SYLLABLE NAU", .sequence = &[_]u21{ 0x0BA8, 0x0BCC, } },
217 .{ .name = "TAMIL SYLLABLE PAA", .sequence = &[_]u21{ 0x0BAA, 0x0BBE, } },
218 .{ .name = "TAMIL SYLLABLE PI", .sequence = &[_]u21{ 0x0BAA, 0x0BBF, } },
219 .{ .name = "TAMIL SYLLABLE PII", .sequence = &[_]u21{ 0x0BAA, 0x0BC0, } },
220 .{ .name = "TAMIL SYLLABLE PU", .sequence = &[_]u21{ 0x0BAA, 0x0BC1, } },
221 .{ .name = "TAMIL SYLLABLE PUU", .sequence = &[_]u21{ 0x0BAA, 0x0BC2, } },
222 .{ .name = "TAMIL SYLLABLE PE", .sequence = &[_]u21{ 0x0BAA, 0x0BC6, } },
223 .{ .name = "TAMIL SYLLABLE PEE", .sequence = &[_]u21{ 0x0BAA, 0x0BC7, } },
224 .{ .name = "TAMIL SYLLABLE PAI", .sequence = &[_]u21{ 0x0BAA, 0x0BC8, } },
225 .{ .name = "TAMIL SYLLABLE PO", .sequence = &[_]u21{ 0x0BAA, 0x0BCA, } },
226 .{ .name = "TAMIL SYLLABLE POO", .sequence = &[_]u21{ 0x0BAA, 0x0BCB, } },
227 .{ .name = "TAMIL SYLLABLE PAU", .sequence = &[_]u21{ 0x0BAA, 0x0BCC, } },
228 .{ .name = "TAMIL SYLLABLE MAA", .sequence = &[_]u21{ 0x0BAE, 0x0BBE, } },
229 .{ .name = "TAMIL SYLLABLE MI", .sequence = &[_]u21{ 0x0BAE, 0x0BBF, } },
230 .{ .name = "TAMIL SYLLABLE MII", .sequence = &[_]u21{ 0x0BAE, 0x0BC0, } },
231 .{ .name = "TAMIL SYLLABLE MU", .sequence = &[_]u21{ 0x0BAE, 0x0BC1, } },
232 .{ .name = "TAMIL SYLLABLE MUU", .sequence = &[_]u21{ 0x0BAE, 0x0BC2, } },
233 .{ .name = "TAMIL SYLLABLE ME", .sequence = &[_]u21{ 0x0BAE, 0x0BC6, } },
234 .{ .name = "TAMIL SYLLABLE MEE", .sequence = &[_]u21{ 0x0BAE, 0x0BC7, } },
235 .{ .name = "TAMIL SYLLABLE MAI", .sequence = &[_]u21{ 0x0BAE, 0x0BC8, } },
236 .{ .name = "TAMIL SYLLABLE MO", .sequence = &[_]u21{ 0x0BAE, 0x0BCA, } },
237 .{ .name = "TAMIL SYLLABLE MOO", .sequence = &[_]u21{ 0x0BAE, 0x0BCB, } },
238 .{ .name = "TAMIL SYLLABLE MAU", .sequence = &[_]u21{ 0x0BAE, 0x0BCC, } },
239 .{ .name = "TAMIL SYLLABLE YAA", .sequence = &[_]u21{ 0x0BAF, 0x0BBE, } },
240 .{ .name = "TAMIL SYLLABLE YI", .sequence = &[_]u21{ 0x0BAF, 0x0BBF, } },
241 .{ .name = "TAMIL SYLLABLE YII", .sequence = &[_]u21{ 0x0BAF, 0x0BC0, } },
242 .{ .name = "TAMIL SYLLABLE YU", .sequence = &[_]u21{ 0x0BAF, 0x0BC1, } },
243 .{ .name = "TAMIL SYLLABLE YUU", .sequence = &[_]u21{ 0x0BAF, 0x0BC2, } },
244 .{ .name = "TAMIL SYLLABLE YE", .sequence = &[_]u21{ 0x0BAF, 0x0BC6, } },
245 .{ .name = "TAMIL SYLLABLE YEE", .sequence = &[_]u21{ 0x0BAF, 0x0BC7, } },
246 .{ .name = "TAMIL SYLLABLE YAI", .sequence = &[_]u21{ 0x0BAF, 0x0BC8, } },
247 .{ .name = "TAMIL SYLLABLE YO", .sequence = &[_]u21{ 0x0BAF, 0x0BCA, } },
248 .{ .name = "TAMIL SYLLABLE YOO", .sequence = &[_]u21{ 0x0BAF, 0x0BCB, } },
249 .{ .name = "TAMIL SYLLABLE YAU", .sequence = &[_]u21{ 0x0BAF, 0x0BCC, } },
250 .{ .name = "TAMIL SYLLABLE RAA", .sequence = &[_]u21{ 0x0BB0, 0x0BBE, } },
251 .{ .name = "TAMIL SYLLABLE RI", .sequence = &[_]u21{ 0x0BB0, 0x0BBF, } },
252 .{ .name = "TAMIL SYLLABLE RII", .sequence = &[_]u21{ 0x0BB0, 0x0BC0, } },
253 .{ .name = "TAMIL SYLLABLE RU", .sequence = &[_]u21{ 0x0BB0, 0x0BC1, } },
254 .{ .name = "TAMIL SYLLABLE RUU", .sequence = &[_]u21{ 0x0BB0, 0x0BC2, } },
255 .{ .name = "TAMIL SYLLABLE RE", .sequence = &[_]u21{ 0x0BB0, 0x0BC6, } },
256 .{ .name = "TAMIL SYLLABLE REE", .sequence = &[_]u21{ 0x0BB0, 0x0BC7, } },
257 .{ .name = "TAMIL SYLLABLE RAI", .sequence = &[_]u21{ 0x0BB0, 0x0BC8, } },
258 .{ .name = "TAMIL SYLLABLE RO", .sequence = &[_]u21{ 0x0BB0, 0x0BCA, } },
259 .{ .name = "TAMIL SYLLABLE ROO", .sequence = &[_]u21{ 0x0BB0, 0x0BCB, } },
260 .{ .name = "TAMIL SYLLABLE RAU", .sequence = &[_]u21{ 0x0BB0, 0x0BCC, } },
261 .{ .name = "TAMIL SYLLABLE LAA", .sequence = &[_]u21{ 0x0BB2, 0x0BBE, } },
262 .{ .name = "TAMIL SYLLABLE LI", .sequence = &[_]u21{ 0x0BB2, 0x0BBF, } },
263 .{ .name = "TAMIL SYLLABLE LII", .sequence = &[_]u21{ 0x0BB2, 0x0BC0, } },
264 .{ .name = "TAMIL SYLLABLE LU", .sequence = &[_]u21{ 0x0BB2, 0x0BC1, } },
265 .{ .name = "TAMIL SYLLABLE LUU", .sequence = &[_]u21{ 0x0BB2, 0x0BC2, } },
266 .{ .name = "TAMIL SYLLABLE LE", .sequence = &[_]u21{ 0x0BB2, 0x0BC6, } },
267 .{ .name = "TAMIL SYLLABLE LEE", .sequence = &[_]u21{ 0x0BB2, 0x0BC7, } },
268 .{ .name = "TAMIL SYLLABLE LAI", .sequence = &[_]u21{ 0x0BB2, 0x0BC8, } },
269 .{ .name = "TAMIL SYLLABLE LO", .sequence = &[_]u21{ 0x0BB2, 0x0BCA, } },
270 .{ .name = "TAMIL SYLLABLE LOO", .sequence = &[_]u21{ 0x0BB2, 0x0BCB, } },
271 .{ .name = "TAMIL SYLLABLE LAU", .sequence = &[_]u21{ 0x0BB2, 0x0BCC, } },
272 .{ .name = "TAMIL SYLLABLE VAA", .sequence = &[_]u21{ 0x0BB5, 0x0BBE, } },
273 .{ .name = "TAMIL SYLLABLE VI", .sequence = &[_]u21{ 0x0BB5, 0x0BBF, } },
274 .{ .name = "TAMIL SYLLABLE VII", .sequence = &[_]u21{ 0x0BB5, 0x0BC0, } },
275 .{ .name = "TAMIL SYLLABLE VU", .sequence = &[_]u21{ 0x0BB5, 0x0BC1, } },
276 .{ .name = "TAMIL SYLLABLE VUU", .sequence = &[_]u21{ 0x0BB5, 0x0BC2, } },
277 .{ .name = "TAMIL SYLLABLE VE", .sequence = &[_]u21{ 0x0BB5, 0x0BC6, } },
278 .{ .name = "TAMIL SYLLABLE VEE", .sequence = &[_]u21{ 0x0BB5, 0x0BC7, } },
279 .{ .name = "TAMIL SYLLABLE VAI", .sequence = &[_]u21{ 0x0BB5, 0x0BC8, } },
280 .{ .name = "TAMIL SYLLABLE VO", .sequence = &[_]u21{ 0x0BB5, 0x0BCA, } },
281 .{ .name = "TAMIL SYLLABLE VOO", .sequence = &[_]u21{ 0x0BB5, 0x0BCB, } },
282 .{ .name = "TAMIL SYLLABLE VAU", .sequence = &[_]u21{ 0x0BB5, 0x0BCC, } },
283 .{ .name = "TAMIL SYLLABLE LLLAA", .sequence = &[_]u21{ 0x0BB4, 0x0BBE, } },
284 .{ .name = "TAMIL SYLLABLE LLLI", .sequence = &[_]u21{ 0x0BB4, 0x0BBF, } },
285 .{ .name = "TAMIL SYLLABLE LLLII", .sequence = &[_]u21{ 0x0BB4, 0x0BC0, } },
286 .{ .name = "TAMIL SYLLABLE LLLU", .sequence = &[_]u21{ 0x0BB4, 0x0BC1, } },
287 .{ .name = "TAMIL SYLLABLE LLLUU", .sequence = &[_]u21{ 0x0BB4, 0x0BC2, } },
288 .{ .name = "TAMIL SYLLABLE LLLE", .sequence = &[_]u21{ 0x0BB4, 0x0BC6, } },
289 .{ .name = "TAMIL SYLLABLE LLLEE", .sequence = &[_]u21{ 0x0BB4, 0x0BC7, } },
290 .{ .name = "TAMIL SYLLABLE LLLAI", .sequence = &[_]u21{ 0x0BB4, 0x0BC8, } },
291 .{ .name = "TAMIL SYLLABLE LLLO", .sequence = &[_]u21{ 0x0BB4, 0x0BCA, } },
292 .{ .name = "TAMIL SYLLABLE LLLOO", .sequence = &[_]u21{ 0x0BB4, 0x0BCB, } },
293 .{ .name = "TAMIL SYLLABLE LLLAU", .sequence = &[_]u21{ 0x0BB4, 0x0BCC, } },
294 .{ .name = "TAMIL SYLLABLE LLAA", .sequence = &[_]u21{ 0x0BB3, 0x0BBE, } },
295 .{ .name = "TAMIL SYLLABLE LLI", .sequence = &[_]u21{ 0x0BB3, 0x0BBF, } },
296 .{ .name = "TAMIL SYLLABLE LLII", .sequence = &[_]u21{ 0x0BB3, 0x0BC0, } },
297 .{ .name = "TAMIL SYLLABLE LLU", .sequence = &[_]u21{ 0x0BB3, 0x0BC1, } },
298 .{ .name = "TAMIL SYLLABLE LLUU", .sequence = &[_]u21{ 0x0BB3, 0x0BC2, } },
299 .{ .name = "TAMIL SYLLABLE LLE", .sequence = &[_]u21{ 0x0BB3, 0x0BC6, } },
300 .{ .name = "TAMIL SYLLABLE LLEE", .sequence = &[_]u21{ 0x0BB3, 0x0BC7, } },
301 .{ .name = "TAMIL SYLLABLE LLAI", .sequence = &[_]u21{ 0x0BB3, 0x0BC8, } },
302 .{ .name = "TAMIL SYLLABLE LLO", .sequence = &[_]u21{ 0x0BB3, 0x0BCA, } },
303 .{ .name = "TAMIL SYLLABLE LLOO", .sequence = &[_]u21{ 0x0BB3, 0x0BCB, } },
304 .{ .name = "TAMIL SYLLABLE LLAU", .sequence = &[_]u21{ 0x0BB3, 0x0BCC, } },
305 .{ .name = "TAMIL SYLLABLE RRAA", .sequence = &[_]u21{ 0x0BB1, 0x0BBE, } },
306 .{ .name = "TAMIL SYLLABLE RRI", .sequence = &[_]u21{ 0x0BB1, 0x0BBF, } },
307 .{ .name = "TAMIL SYLLABLE RRII", .sequence = &[_]u21{ 0x0BB1, 0x0BC0, } },
308 .{ .name = "TAMIL SYLLABLE RRU", .sequence = &[_]u21{ 0x0BB1, 0x0BC1, } },
309 .{ .name = "TAMIL SYLLABLE RRUU", .sequence = &[_]u21{ 0x0BB1, 0x0BC2, } },
310 .{ .name = "TAMIL SYLLABLE RRE", .sequence = &[_]u21{ 0x0BB1, 0x0BC6, } },
311 .{ .name = "TAMIL SYLLABLE RREE", .sequence = &[_]u21{ 0x0BB1, 0x0BC7, } },
312 .{ .name = "TAMIL SYLLABLE RRAI", .sequence = &[_]u21{ 0x0BB1, 0x0BC8, } },
313 .{ .name = "TAMIL SYLLABLE RRO", .sequence = &[_]u21{ 0x0BB1, 0x0BCA, } },
314 .{ .name = "TAMIL SYLLABLE RROO", .sequence = &[_]u21{ 0x0BB1, 0x0BCB, } },
315 .{ .name = "TAMIL SYLLABLE RRAU", .sequence = &[_]u21{ 0x0BB1, 0x0BCC, } },
316 .{ .name = "TAMIL SYLLABLE NNNAA", .sequence = &[_]u21{ 0x0BA9, 0x0BBE, } },
317 .{ .name = "TAMIL SYLLABLE NNNI", .sequence = &[_]u21{ 0x0BA9, 0x0BBF, } },
318 .{ .name = "TAMIL SYLLABLE NNNII", .sequence = &[_]u21{ 0x0BA9, 0x0BC0, } },
319 .{ .name = "TAMIL SYLLABLE NNNU", .sequence = &[_]u21{ 0x0BA9, 0x0BC1, } },
320 .{ .name = "TAMIL SYLLABLE NNNUU", .sequence = &[_]u21{ 0x0BA9, 0x0BC2, } },
321 .{ .name = "TAMIL SYLLABLE NNNE", .sequence = &[_]u21{ 0x0BA9, 0x0BC6, } },
322 .{ .name = "TAMIL SYLLABLE NNNEE", .sequence = &[_]u21{ 0x0BA9, 0x0BC7, } },
323 .{ .name = "TAMIL SYLLABLE NNNAI", .sequence = &[_]u21{ 0x0BA9, 0x0BC8, } },
324 .{ .name = "TAMIL SYLLABLE NNNO", .sequence = &[_]u21{ 0x0BA9, 0x0BCA, } },
325 .{ .name = "TAMIL SYLLABLE NNNOO", .sequence = &[_]u21{ 0x0BA9, 0x0BCB, } },
326 .{ .name = "TAMIL SYLLABLE NNNAU", .sequence = &[_]u21{ 0x0BA9, 0x0BCC, } },
327 .{ .name = "TAMIL SYLLABLE JAA", .sequence = &[_]u21{ 0x0B9C, 0x0BBE, } },
328 .{ .name = "TAMIL SYLLABLE JI", .sequence = &[_]u21{ 0x0B9C, 0x0BBF, } },
329 .{ .name = "TAMIL SYLLABLE JII", .sequence = &[_]u21{ 0x0B9C, 0x0BC0, } },
330 .{ .name = "TAMIL SYLLABLE JU", .sequence = &[_]u21{ 0x0B9C, 0x0BC1, } },
331 .{ .name = "TAMIL SYLLABLE JUU", .sequence = &[_]u21{ 0x0B9C, 0x0BC2, } },
332 .{ .name = "TAMIL SYLLABLE JE", .sequence = &[_]u21{ 0x0B9C, 0x0BC6, } },
333 .{ .name = "TAMIL SYLLABLE JEE", .sequence = &[_]u21{ 0x0B9C, 0x0BC7, } },
334 .{ .name = "TAMIL SYLLABLE JAI", .sequence = &[_]u21{ 0x0B9C, 0x0BC8, } },
335 .{ .name = "TAMIL SYLLABLE JO", .sequence = &[_]u21{ 0x0B9C, 0x0BCA, } },
336 .{ .name = "TAMIL SYLLABLE JOO", .sequence = &[_]u21{ 0x0B9C, 0x0BCB, } },
337 .{ .name = "TAMIL SYLLABLE JAU", .sequence = &[_]u21{ 0x0B9C, 0x0BCC, } },
338 .{ .name = "TAMIL SYLLABLE SHAA", .sequence = &[_]u21{ 0x0BB6, 0x0BBE, } },
339 .{ .name = "TAMIL SYLLABLE SHI", .sequence = &[_]u21{ 0x0BB6, 0x0BBF, } },
340 .{ .name = "TAMIL SYLLABLE SHII", .sequence = &[_]u21{ 0x0BB6, 0x0BC0, } },
341 .{ .name = "TAMIL SYLLABLE SHU", .sequence = &[_]u21{ 0x0BB6, 0x0BC1, } },
342 .{ .name = "TAMIL SYLLABLE SHUU", .sequence = &[_]u21{ 0x0BB6, 0x0BC2, } },
343 .{ .name = "TAMIL SYLLABLE SHE", .sequence = &[_]u21{ 0x0BB6, 0x0BC6, } },
344 .{ .name = "TAMIL SYLLABLE SHEE", .sequence = &[_]u21{ 0x0BB6, 0x0BC7, } },
345 .{ .name = "TAMIL SYLLABLE SHAI", .sequence = &[_]u21{ 0x0BB6, 0x0BC8, } },
346 .{ .name = "TAMIL SYLLABLE SHO", .sequence = &[_]u21{ 0x0BB6, 0x0BCA, } },
347 .{ .name = "TAMIL SYLLABLE SHOO", .sequence = &[_]u21{ 0x0BB6, 0x0BCB, } },
348 .{ .name = "TAMIL SYLLABLE SHAU", .sequence = &[_]u21{ 0x0BB6, 0x0BCC, } },
349 .{ .name = "TAMIL SYLLABLE SSAA", .sequence = &[_]u21{ 0x0BB7, 0x0BBE, } },
350 .{ .name = "TAMIL SYLLABLE SSI", .sequence = &[_]u21{ 0x0BB7, 0x0BBF, } },
351 .{ .name = "TAMIL SYLLABLE SSII", .sequence = &[_]u21{ 0x0BB7, 0x0BC0, } },
352 .{ .name = "TAMIL SYLLABLE SSU", .sequence = &[_]u21{ 0x0BB7, 0x0BC1, } },
353 .{ .name = "TAMIL SYLLABLE SSUU", .sequence = &[_]u21{ 0x0BB7, 0x0BC2, } },
354 .{ .name = "TAMIL SYLLABLE SSE", .sequence = &[_]u21{ 0x0BB7, 0x0BC6, } },
355 .{ .name = "TAMIL SYLLABLE SSEE", .sequence = &[_]u21{ 0x0BB7, 0x0BC7, } },
356 .{ .name = "TAMIL SYLLABLE SSAI", .sequence = &[_]u21{ 0x0BB7, 0x0BC8, } },
357 .{ .name = "TAMIL SYLLABLE SSO", .sequence = &[_]u21{ 0x0BB7, 0x0BCA, } },
358 .{ .name = "TAMIL SYLLABLE SSOO", .sequence = &[_]u21{ 0x0BB7, 0x0BCB, } },
359 .{ .name = "TAMIL SYLLABLE SSAU", .sequence = &[_]u21{ 0x0BB7, 0x0BCC, } },
360 .{ .name = "TAMIL SYLLABLE SAA", .sequence = &[_]u21{ 0x0BB8, 0x0BBE, } },
361 .{ .name = "TAMIL SYLLABLE SI", .sequence = &[_]u21{ 0x0BB8, 0x0BBF, } },
362 .{ .name = "TAMIL SYLLABLE SII", .sequence = &[_]u21{ 0x0BB8, 0x0BC0, } },
363 .{ .name = "TAMIL SYLLABLE SU", .sequence = &[_]u21{ 0x0BB8, 0x0BC1, } },
364 .{ .name = "TAMIL SYLLABLE SUU", .sequence = &[_]u21{ 0x0BB8, 0x0BC2, } },
365 .{ .name = "TAMIL SYLLABLE SE", .sequence = &[_]u21{ 0x0BB8, 0x0BC6, } },
366 .{ .name = "TAMIL SYLLABLE SEE", .sequence = &[_]u21{ 0x0BB8, 0x0BC7, } },
367 .{ .name = "TAMIL SYLLABLE SAI", .sequence = &[_]u21{ 0x0BB8, 0x0BC8, } },
368 .{ .name = "TAMIL SYLLABLE SO", .sequence = &[_]u21{ 0x0BB8, 0x0BCA, } },
369 .{ .name = "TAMIL SYLLABLE SOO", .sequence = &[_]u21{ 0x0BB8, 0x0BCB, } },
370 .{ .name = "TAMIL SYLLABLE SAU", .sequence = &[_]u21{ 0x0BB8, 0x0BCC, } },
371 .{ .name = "TAMIL SYLLABLE HAA", .sequence = &[_]u21{ 0x0BB9, 0x0BBE, } },
372 .{ .name = "TAMIL SYLLABLE HI", .sequence = &[_]u21{ 0x0BB9, 0x0BBF, } },
373 .{ .name = "TAMIL SYLLABLE HII", .sequence = &[_]u21{ 0x0BB9, 0x0BC0, } },
374 .{ .name = "TAMIL SYLLABLE HU", .sequence = &[_]u21{ 0x0BB9, 0x0BC1, } },
375 .{ .name = "TAMIL SYLLABLE HUU", .sequence = &[_]u21{ 0x0BB9, 0x0BC2, } },
376 .{ .name = "TAMIL SYLLABLE HE", .sequence = &[_]u21{ 0x0BB9, 0x0BC6, } },
377 .{ .name = "TAMIL SYLLABLE HEE", .sequence = &[_]u21{ 0x0BB9, 0x0BC7, } },
378 .{ .name = "TAMIL SYLLABLE HAI", .sequence = &[_]u21{ 0x0BB9, 0x0BC8, } },
379 .{ .name = "TAMIL SYLLABLE HO", .sequence = &[_]u21{ 0x0BB9, 0x0BCA, } },
380 .{ .name = "TAMIL SYLLABLE HOO", .sequence = &[_]u21{ 0x0BB9, 0x0BCB, } },
381 .{ .name = "TAMIL SYLLABLE HAU", .sequence = &[_]u21{ 0x0BB9, 0x0BCC, } },
382 .{ .name = "TAMIL SYLLABLE KSSA", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, } },
383 .{ .name = "TAMIL SYLLABLE KSSAA", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BBE, } },
384 .{ .name = "TAMIL SYLLABLE KSSI", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BBF, } },
385 .{ .name = "TAMIL SYLLABLE KSSII", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC0, } },
386 .{ .name = "TAMIL SYLLABLE KSSU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC1, } },
387 .{ .name = "TAMIL SYLLABLE KSSUU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC2, } },
388 .{ .name = "TAMIL SYLLABLE KSSE", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC6, } },
389 .{ .name = "TAMIL SYLLABLE KSSEE", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC7, } },
390 .{ .name = "TAMIL SYLLABLE KSSAI", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC8, } },
391 .{ .name = "TAMIL SYLLABLE KSSO", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCA, } },
392 .{ .name = "TAMIL SYLLABLE KSSOO", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCB, } },
393 .{ .name = "TAMIL SYLLABLE KSSAU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCC, } },
394 .{ .name = "TAMIL SYLLABLE SHRII", .sequence = &[_]u21{ 0x0BB6, 0x0BCD, 0x0BB0, 0x0BC0, } },
395 .{ .name = "SINHALA CONSONANT SIGN YANSAYA", .sequence = &[_]u21{ 0x0DCA, 0x200D, 0x0DBA, } },
396 .{ .name = "SINHALA CONSONANT SIGN RAKAARAANSAYA", .sequence = &[_]u21{ 0x0DCA, 0x200D, 0x0DBB, } },
397 .{ .name = "SINHALA CONSONANT SIGN REPAYA", .sequence = &[_]u21{ 0x0DBB, 0x0DCA, 0x200D, } },
398 .{ .name = "GEORGIAN LETTER U-BRJGU", .sequence = &[_]u21{ 0x10E3, 0x0302, } },
399 .{ .name = "KHMER CONSONANT SIGN COENG KA", .sequence = &[_]u21{ 0x17D2, 0x1780, } },
400 .{ .name = "KHMER CONSONANT SIGN COENG KHA", .sequence = &[_]u21{ 0x17D2, 0x1781, } },
401 .{ .name = "KHMER CONSONANT SIGN COENG KO", .sequence = &[_]u21{ 0x17D2, 0x1782, } },
402 .{ .name = "KHMER CONSONANT SIGN COENG KHO", .sequence = &[_]u21{ 0x17D2, 0x1783, } },
403 .{ .name = "KHMER CONSONANT SIGN COENG NGO", .sequence = &[_]u21{ 0x17D2, 0x1784, } },
404 .{ .name = "KHMER CONSONANT SIGN COENG CA", .sequence = &[_]u21{ 0x17D2, 0x1785, } },
405 .{ .name = "KHMER CONSONANT SIGN COENG CHA", .sequence = &[_]u21{ 0x17D2, 0x1786, } },
406 .{ .name = "KHMER CONSONANT SIGN COENG CO", .sequence = &[_]u21{ 0x17D2, 0x1787, } },
407 .{ .name = "KHMER CONSONANT SIGN COENG CHO", .sequence = &[_]u21{ 0x17D2, 0x1788, } },
408 .{ .name = "KHMER CONSONANT SIGN COENG NYO", .sequence = &[_]u21{ 0x17D2, 0x1789, } },
409 .{ .name = "KHMER CONSONANT SIGN COENG DA", .sequence = &[_]u21{ 0x17D2, 0x178A, } },
410 .{ .name = "KHMER CONSONANT SIGN COENG TTHA", .sequence = &[_]u21{ 0x17D2, 0x178B, } },
411 .{ .name = "KHMER CONSONANT SIGN COENG DO", .sequence = &[_]u21{ 0x17D2, 0x178C, } },
412 .{ .name = "KHMER CONSONANT SIGN COENG TTHO", .sequence = &[_]u21{ 0x17D2, 0x178D, } },
413 .{ .name = "KHMER CONSONANT SIGN COENG NA", .sequence = &[_]u21{ 0x17D2, 0x178E, } },
414 .{ .name = "KHMER CONSONANT SIGN COENG TA", .sequence = &[_]u21{ 0x17D2, 0x178F, } },
415 .{ .name = "KHMER CONSONANT SIGN COENG THA", .sequence = &[_]u21{ 0x17D2, 0x1790, } },
416 .{ .name = "KHMER CONSONANT SIGN COENG TO", .sequence = &[_]u21{ 0x17D2, 0x1791, } },
417 .{ .name = "KHMER CONSONANT SIGN COENG THO", .sequence = &[_]u21{ 0x17D2, 0x1792, } },
418 .{ .name = "KHMER CONSONANT SIGN COENG NO", .sequence = &[_]u21{ 0x17D2, 0x1793, } },
419 .{ .name = "KHMER CONSONANT SIGN COENG BA", .sequence = &[_]u21{ 0x17D2, 0x1794, } },
420 .{ .name = "KHMER CONSONANT SIGN COENG PHA", .sequence = &[_]u21{ 0x17D2, 0x1795, } },
421 .{ .name = "KHMER CONSONANT SIGN COENG PO", .sequence = &[_]u21{ 0x17D2, 0x1796, } },
422 .{ .name = "KHMER CONSONANT SIGN COENG PHO", .sequence = &[_]u21{ 0x17D2, 0x1797, } },
423 .{ .name = "KHMER CONSONANT SIGN COENG MO", .sequence = &[_]u21{ 0x17D2, 0x1798, } },
424 .{ .name = "KHMER CONSONANT SIGN COENG YO", .sequence = &[_]u21{ 0x17D2, 0x1799, } },
425 .{ .name = "KHMER CONSONANT SIGN COENG RO", .sequence = &[_]u21{ 0x17D2, 0x179A, } },
426 .{ .name = "KHMER CONSONANT SIGN COENG LO", .sequence = &[_]u21{ 0x17D2, 0x179B, } },
427 .{ .name = "KHMER CONSONANT SIGN COENG VO", .sequence = &[_]u21{ 0x17D2, 0x179C, } },
428 .{ .name = "KHMER CONSONANT SIGN COENG SHA", .sequence = &[_]u21{ 0x17D2, 0x179D, } },
429 .{ .name = "KHMER CONSONANT SIGN COENG SSA", .sequence = &[_]u21{ 0x17D2, 0x179E, } },
430 .{ .name = "KHMER CONSONANT SIGN COENG SA", .sequence = &[_]u21{ 0x17D2, 0x179F, } },
431 .{ .name = "KHMER CONSONANT SIGN COENG HA", .sequence = &[_]u21{ 0x17D2, 0x17A0, } },
432 .{ .name = "KHMER CONSONANT SIGN COENG LA", .sequence = &[_]u21{ 0x17D2, 0x17A1, } },
433 .{ .name = "KHMER VOWEL SIGN COENG QA", .sequence = &[_]u21{ 0x17D2, 0x17A2, } },
434 .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG QU", .sequence = &[_]u21{ 0x17D2, 0x17A7, } },
435 .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG RY", .sequence = &[_]u21{ 0x17D2, 0x17AB, } },
436 .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG RYY", .sequence = &[_]u21{ 0x17D2, 0x17AC, } },
437 .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG QE", .sequence = &[_]u21{ 0x17D2, 0x17AF, } },
438 .{ .name = "KHMER VOWEL SIGN OM", .sequence = &[_]u21{ 0x17BB, 0x17C6, } },
439 .{ .name = "KHMER VOWEL SIGN AAM", .sequence = &[_]u21{ 0x17B6, 0x17C6, } },
440 .{ .name = "HIRAGANA LETTER BIDAKUON NGA", .sequence = &[_]u21{ 0x304B, 0x309A, } },
441 .{ .name = "HIRAGANA LETTER BIDAKUON NGI", .sequence = &[_]u21{ 0x304D, 0x309A, } },
442 .{ .name = "HIRAGANA LETTER BIDAKUON NGU", .sequence = &[_]u21{ 0x304F, 0x309A, } },
443 .{ .name = "HIRAGANA LETTER BIDAKUON NGE", .sequence = &[_]u21{ 0x3051, 0x309A, } },
444 .{ .name = "HIRAGANA LETTER BIDAKUON NGO", .sequence = &[_]u21{ 0x3053, 0x309A, } },
445 .{ .name = "KATAKANA LETTER BIDAKUON NGA", .sequence = &[_]u21{ 0x30AB, 0x309A, } },
446 .{ .name = "KATAKANA LETTER BIDAKUON NGI", .sequence = &[_]u21{ 0x30AD, 0x309A, } },
447 .{ .name = "KATAKANA LETTER BIDAKUON NGU", .sequence = &[_]u21{ 0x30AF, 0x309A, } },
448 .{ .name = "KATAKANA LETTER BIDAKUON NGE", .sequence = &[_]u21{ 0x30B1, 0x309A, } },
449 .{ .name = "KATAKANA LETTER BIDAKUON NGO", .sequence = &[_]u21{ 0x30B3, 0x309A, } },
450 .{ .name = "KATAKANA LETTER AINU CE", .sequence = &[_]u21{ 0x30BB, 0x309A, } },
451 .{ .name = "KATAKANA LETTER AINU TU", .sequence = &[_]u21{ 0x30C4, 0x309A, } },
452 .{ .name = "KATAKANA LETTER AINU TO", .sequence = &[_]u21{ 0x30C8, 0x309A, } },
453 .{ .name = "KATAKANA LETTER AINU P", .sequence = &[_]u21{ 0x31F7, 0x309A, } },
454 .{ .name = "MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR", .sequence = &[_]u21{ 0x02E5, 0x02E9, } },
455 .{ .name = "MODIFIER LETTER EXTRA-LOW EXTRA-HIGH CONTOUR TONE BAR", .sequence = &[_]u21{ 0x02E9, 0x02E5, } },
456};