From cb30c51eb16ee21af7ac89aef8443603a7e55216 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 22 Dec 2022 16:05:24 -0800 Subject: [PATCH] add NamedSequences, closes #23 --- generate.zig | 1 + scripts/NamedSequences.zig | 38 ++++ src/lib.zig | 1 + src/main.zig | 1 + src/named_sequences.zig | 456 +++++++++++++++++++++++++++++++++++++ 5 files changed, 497 insertions(+) create mode 100644 scripts/NamedSequences.zig create mode 100644 src/named_sequences.zig diff --git a/generate.zig b/generate.zig index 04f90d4e886e1a0d9a5e7ce7d042f9560c748d01..1d43c39f51fee44b5eaf57a984de8e5d06ff3d7c 100644 --- a/generate.zig +++ b/generate.zig @@ -19,6 +19,7 @@ const files = [_]type{ @import("./scripts/Jamo.zig"), @import("./scripts/LineBreak.zig"), @import("./scripts/NameAliases.zig"), + @import("./scripts/NamedSequences.zig"), }; pub fn main() !void { diff --git a/scripts/NamedSequences.zig b/scripts/NamedSequences.zig new file mode 100644 index 0000000000000000000000000000000000000000..e080e4b76909dbb1ea9d7e42383d171ee0c78cd4 --- /dev/null +++ b/scripts/NamedSequences.zig @@ -0,0 +1,38 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "NamedSequences"; + + pub const dest_file = "src/named_sequences.zig"; + + pub const dest_header = + \\pub const NamedSequence = struct { + \\ name: []const u8, + \\ sequence: []const u21, + \\}; + \\ + \\pub const data = [_]NamedSequence{ + \\ + ; + + pub const dest_footer = + \\}; + \\ + ; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool { + _ = alloc; + var it = std.mem.split(u8, line, ";"); + + try writer.print(" .{{ .name = \"{}\", .sequence = &[_]u21{{", .{std.zig.fmtEscapes(it.next().?)}); + + var jt = std.mem.tokenize(u8, it.next().?, " "); + while (jt.next()) |jtem| { + try writer.print(" 0x{s},", .{jtem}); + } + try writer.writeAll(" } },\n"); + + return true; + } +}); diff --git a/src/lib.zig b/src/lib.zig index 2c10aec950ecadce7d7b0ad34da53648d9e89d25..41c94e3d7110afdfb56798399ce3fb27762c7e5d 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -20,3 +20,4 @@ pub const indic_syllabic_category = @import("./indic_syllabic_category.zig"); pub const jamo = @import("./jamo.zig"); pub const line_break = @import("./line_break.zig"); pub const name_aliases = @import("./name_aliases.zig"); +pub const named_sequences = @import("./named_sequences.zig"); diff --git a/src/main.zig b/src/main.zig index e5c67002d5be0060fb672adf1d58bb6ad8c32176..78b55fb970c884803bf752ce14e11954928a851f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -24,6 +24,7 @@ pub fn main() !void { ucd.jamo, ucd.line_break, ucd.name_aliases, + ucd.named_sequences, }; inline for (data) |b| { diff --git a/src/named_sequences.zig b/src/named_sequences.zig new file mode 100644 index 0000000000000000000000000000000000000000..21f46121f1aa851cd58f56e350d54e8da30e7275 --- /dev/null +++ b/src/named_sequences.zig @@ -0,0 +1,456 @@ +// This file is part of the Unicode Character Database +// For documentation, see http://www.unicode.org/reports/tr44/ +// +// Based on the source file: https://unicode.org/Public/13.0.0/ucd/NamedSequences.txt +// +// zig fmt: off + +pub const NamedSequence = struct { + name: []const u8, + sequence: []const u21, +}; + +pub const data = [_]NamedSequence{ + .{ .name = "KEYCAP NUMBER SIGN", .sequence = &[_]u21{ 0x0023, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP ASTERISK", .sequence = &[_]u21{ 0x002A, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT ZERO", .sequence = &[_]u21{ 0x0030, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT ONE", .sequence = &[_]u21{ 0x0031, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT TWO", .sequence = &[_]u21{ 0x0032, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT THREE", .sequence = &[_]u21{ 0x0033, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT FOUR", .sequence = &[_]u21{ 0x0034, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT FIVE", .sequence = &[_]u21{ 0x0035, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT SIX", .sequence = &[_]u21{ 0x0036, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT SEVEN", .sequence = &[_]u21{ 0x0037, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT EIGHT", .sequence = &[_]u21{ 0x0038, 0xFE0F, 0x20E3, } }, + .{ .name = "KEYCAP DIGIT NINE", .sequence = &[_]u21{ 0x0039, 0xFE0F, 0x20E3, } }, + .{ .name = "LATIN CAPITAL LETTER A WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x0100, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER A WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x0101, 0x0300, } }, + .{ .name = "LATIN CAPITAL LETTER I WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x012A, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER I WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x012B, 0x0300, } }, + .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x016A, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER U WITH MACRON AND GRAVE", .sequence = &[_]u21{ 0x016B, 0x0300, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0045, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0065, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00C8, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00E8, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00C9, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00E9, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x004F, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x006F, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00D2, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE", .sequence = &[_]u21{ 0x00F2, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00D3, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE", .sequence = &[_]u21{ 0x00F3, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0053, 0x0329, } }, + .{ .name = "LATIN SMALL LETTER S WITH VERTICAL LINE BELOW", .sequence = &[_]u21{ 0x0073, 0x0329, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON", .sequence = &[_]u21{ 0x00CA, 0x0304, } }, + .{ .name = "LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON", .sequence = &[_]u21{ 0x00EA, 0x0304, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON", .sequence = &[_]u21{ 0x00CA, 0x030C, } }, + .{ .name = "LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON", .sequence = &[_]u21{ 0x00EA, 0x030C, } }, + .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER NG WITH TILDE ABOVE", .sequence = &[_]u21{ 0x006E, 0x0360, 0x0067, } }, + .{ .name = "LATIN CAPITAL LETTER A WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0104, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER A WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0105, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER A WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0104, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER A WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0105, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0118, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER E WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0119, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0118, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER E WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0119, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0116, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER E WITH DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x0117, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER E WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0116, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER E WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0117, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND GRAVE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER I WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x0069, 0x0307, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER I WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x012E, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND ACUTE", .sequence = &[_]u21{ 0x012F, 0x0307, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER I WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x012E, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER I WITH OGONEK AND DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x012F, 0x0307, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER J WITH TILDE", .sequence = &[_]u21{ 0x004A, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER J WITH DOT ABOVE AND TILDE", .sequence = &[_]u21{ 0x006A, 0x0307, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER L WITH TILDE", .sequence = &[_]u21{ 0x004C, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER L WITH TILDE", .sequence = &[_]u21{ 0x006C, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER M WITH TILDE", .sequence = &[_]u21{ 0x004D, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER M WITH TILDE", .sequence = &[_]u21{ 0x006D, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER R WITH TILDE", .sequence = &[_]u21{ 0x0052, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER R WITH TILDE", .sequence = &[_]u21{ 0x0072, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER U WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0172, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER U WITH OGONEK AND ACUTE", .sequence = &[_]u21{ 0x0173, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER U WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0172, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER U WITH OGONEK AND TILDE", .sequence = &[_]u21{ 0x0173, 0x0303, } }, + .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND ACUTE", .sequence = &[_]u21{ 0x016A, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER U WITH MACRON AND ACUTE", .sequence = &[_]u21{ 0x016B, 0x0301, } }, + .{ .name = "LATIN CAPITAL LETTER U WITH MACRON AND TILDE", .sequence = &[_]u21{ 0x016A, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER U WITH MACRON AND TILDE", .sequence = &[_]u21{ 0x016B, 0x0303, } }, + .{ .name = "LATIN SMALL LETTER AE WITH GRAVE", .sequence = &[_]u21{ 0x00E6, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER OPEN O WITH GRAVE", .sequence = &[_]u21{ 0x0254, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER OPEN O WITH ACUTE", .sequence = &[_]u21{ 0x0254, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER TURNED V WITH GRAVE", .sequence = &[_]u21{ 0x028C, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER TURNED V WITH ACUTE", .sequence = &[_]u21{ 0x028C, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER SCHWA WITH GRAVE", .sequence = &[_]u21{ 0x0259, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER SCHWA WITH ACUTE", .sequence = &[_]u21{ 0x0259, 0x0301, } }, + .{ .name = "LATIN SMALL LETTER HOOKED SCHWA WITH GRAVE", .sequence = &[_]u21{ 0x025A, 0x0300, } }, + .{ .name = "LATIN SMALL LETTER HOOKED SCHWA WITH ACUTE", .sequence = &[_]u21{ 0x025A, 0x0301, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF", .sequence = &[_]u21{ 0x0626, 0x0627, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH WAW", .sequence = &[_]u21{ 0x0626, 0x0648, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA", .sequence = &[_]u21{ 0x0626, 0x0649, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH OE", .sequence = &[_]u21{ 0x0626, 0x06C6, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH U", .sequence = &[_]u21{ 0x0626, 0x06C7, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH YU", .sequence = &[_]u21{ 0x0626, 0x06C8, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH E", .sequence = &[_]u21{ 0x0626, 0x06D0, } }, + .{ .name = "ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE", .sequence = &[_]u21{ 0x0626, 0x06D5, } }, + .{ .name = "ARABIC SEQUENCE NOON WITH KEHEH", .sequence = &[_]u21{ 0x0646, 0x06A9, } }, + .{ .name = "BENGALI LETTER KHINYA", .sequence = &[_]u21{ 0x0995, 0x09CD, 0x09B7, } }, + .{ .name = "TAMIL CONSONANT K", .sequence = &[_]u21{ 0x0B95, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT NG", .sequence = &[_]u21{ 0x0B99, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT C", .sequence = &[_]u21{ 0x0B9A, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT NY", .sequence = &[_]u21{ 0x0B9E, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT TT", .sequence = &[_]u21{ 0x0B9F, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT NN", .sequence = &[_]u21{ 0x0BA3, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT T", .sequence = &[_]u21{ 0x0BA4, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT N", .sequence = &[_]u21{ 0x0BA8, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT P", .sequence = &[_]u21{ 0x0BAA, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT M", .sequence = &[_]u21{ 0x0BAE, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT Y", .sequence = &[_]u21{ 0x0BAF, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT R", .sequence = &[_]u21{ 0x0BB0, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT L", .sequence = &[_]u21{ 0x0BB2, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT V", .sequence = &[_]u21{ 0x0BB5, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT LLL", .sequence = &[_]u21{ 0x0BB4, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT LL", .sequence = &[_]u21{ 0x0BB3, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT RR", .sequence = &[_]u21{ 0x0BB1, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT NNN", .sequence = &[_]u21{ 0x0BA9, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT J", .sequence = &[_]u21{ 0x0B9C, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT SH", .sequence = &[_]u21{ 0x0BB6, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT SS", .sequence = &[_]u21{ 0x0BB7, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT S", .sequence = &[_]u21{ 0x0BB8, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT H", .sequence = &[_]u21{ 0x0BB9, 0x0BCD, } }, + .{ .name = "TAMIL CONSONANT KSS", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCD, } }, + .{ .name = "TAMIL SYLLABLE KAA", .sequence = &[_]u21{ 0x0B95, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE KI", .sequence = &[_]u21{ 0x0B95, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE KII", .sequence = &[_]u21{ 0x0B95, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE KU", .sequence = &[_]u21{ 0x0B95, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE KUU", .sequence = &[_]u21{ 0x0B95, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE KE", .sequence = &[_]u21{ 0x0B95, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE KEE", .sequence = &[_]u21{ 0x0B95, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE KAI", .sequence = &[_]u21{ 0x0B95, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE KO", .sequence = &[_]u21{ 0x0B95, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE KOO", .sequence = &[_]u21{ 0x0B95, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE KAU", .sequence = &[_]u21{ 0x0B95, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE NGAA", .sequence = &[_]u21{ 0x0B99, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE NGI", .sequence = &[_]u21{ 0x0B99, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE NGII", .sequence = &[_]u21{ 0x0B99, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE NGU", .sequence = &[_]u21{ 0x0B99, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE NGUU", .sequence = &[_]u21{ 0x0B99, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE NGE", .sequence = &[_]u21{ 0x0B99, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE NGEE", .sequence = &[_]u21{ 0x0B99, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE NGAI", .sequence = &[_]u21{ 0x0B99, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE NGO", .sequence = &[_]u21{ 0x0B99, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE NGOO", .sequence = &[_]u21{ 0x0B99, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE NGAU", .sequence = &[_]u21{ 0x0B99, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE CAA", .sequence = &[_]u21{ 0x0B9A, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE CI", .sequence = &[_]u21{ 0x0B9A, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE CII", .sequence = &[_]u21{ 0x0B9A, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE CU", .sequence = &[_]u21{ 0x0B9A, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE CUU", .sequence = &[_]u21{ 0x0B9A, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE CE", .sequence = &[_]u21{ 0x0B9A, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE CEE", .sequence = &[_]u21{ 0x0B9A, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE CAI", .sequence = &[_]u21{ 0x0B9A, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE CO", .sequence = &[_]u21{ 0x0B9A, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE COO", .sequence = &[_]u21{ 0x0B9A, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE CAU", .sequence = &[_]u21{ 0x0B9A, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE NYAA", .sequence = &[_]u21{ 0x0B9E, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE NYI", .sequence = &[_]u21{ 0x0B9E, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE NYII", .sequence = &[_]u21{ 0x0B9E, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE NYU", .sequence = &[_]u21{ 0x0B9E, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE NYUU", .sequence = &[_]u21{ 0x0B9E, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE NYE", .sequence = &[_]u21{ 0x0B9E, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE NYEE", .sequence = &[_]u21{ 0x0B9E, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE NYAI", .sequence = &[_]u21{ 0x0B9E, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE NYO", .sequence = &[_]u21{ 0x0B9E, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE NYOO", .sequence = &[_]u21{ 0x0B9E, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE NYAU", .sequence = &[_]u21{ 0x0B9E, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE TTAA", .sequence = &[_]u21{ 0x0B9F, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE TTI", .sequence = &[_]u21{ 0x0B9F, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE TTII", .sequence = &[_]u21{ 0x0B9F, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE TTU", .sequence = &[_]u21{ 0x0B9F, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE TTUU", .sequence = &[_]u21{ 0x0B9F, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE TTE", .sequence = &[_]u21{ 0x0B9F, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE TTEE", .sequence = &[_]u21{ 0x0B9F, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE TTAI", .sequence = &[_]u21{ 0x0B9F, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE TTO", .sequence = &[_]u21{ 0x0B9F, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE TTOO", .sequence = &[_]u21{ 0x0B9F, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE TTAU", .sequence = &[_]u21{ 0x0B9F, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE NNAA", .sequence = &[_]u21{ 0x0BA3, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE NNI", .sequence = &[_]u21{ 0x0BA3, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE NNII", .sequence = &[_]u21{ 0x0BA3, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE NNU", .sequence = &[_]u21{ 0x0BA3, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE NNUU", .sequence = &[_]u21{ 0x0BA3, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE NNE", .sequence = &[_]u21{ 0x0BA3, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE NNEE", .sequence = &[_]u21{ 0x0BA3, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE NNAI", .sequence = &[_]u21{ 0x0BA3, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE NNO", .sequence = &[_]u21{ 0x0BA3, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE NNOO", .sequence = &[_]u21{ 0x0BA3, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE NNAU", .sequence = &[_]u21{ 0x0BA3, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE TAA", .sequence = &[_]u21{ 0x0BA4, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE TI", .sequence = &[_]u21{ 0x0BA4, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE TII", .sequence = &[_]u21{ 0x0BA4, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE TU", .sequence = &[_]u21{ 0x0BA4, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE TUU", .sequence = &[_]u21{ 0x0BA4, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE TE", .sequence = &[_]u21{ 0x0BA4, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE TEE", .sequence = &[_]u21{ 0x0BA4, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE TAI", .sequence = &[_]u21{ 0x0BA4, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE TO", .sequence = &[_]u21{ 0x0BA4, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE TOO", .sequence = &[_]u21{ 0x0BA4, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE TAU", .sequence = &[_]u21{ 0x0BA4, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE NAA", .sequence = &[_]u21{ 0x0BA8, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE NI", .sequence = &[_]u21{ 0x0BA8, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE NII", .sequence = &[_]u21{ 0x0BA8, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE NU", .sequence = &[_]u21{ 0x0BA8, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE NUU", .sequence = &[_]u21{ 0x0BA8, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE NE", .sequence = &[_]u21{ 0x0BA8, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE NEE", .sequence = &[_]u21{ 0x0BA8, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE NAI", .sequence = &[_]u21{ 0x0BA8, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE NO", .sequence = &[_]u21{ 0x0BA8, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE NOO", .sequence = &[_]u21{ 0x0BA8, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE NAU", .sequence = &[_]u21{ 0x0BA8, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE PAA", .sequence = &[_]u21{ 0x0BAA, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE PI", .sequence = &[_]u21{ 0x0BAA, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE PII", .sequence = &[_]u21{ 0x0BAA, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE PU", .sequence = &[_]u21{ 0x0BAA, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE PUU", .sequence = &[_]u21{ 0x0BAA, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE PE", .sequence = &[_]u21{ 0x0BAA, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE PEE", .sequence = &[_]u21{ 0x0BAA, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE PAI", .sequence = &[_]u21{ 0x0BAA, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE PO", .sequence = &[_]u21{ 0x0BAA, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE POO", .sequence = &[_]u21{ 0x0BAA, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE PAU", .sequence = &[_]u21{ 0x0BAA, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE MAA", .sequence = &[_]u21{ 0x0BAE, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE MI", .sequence = &[_]u21{ 0x0BAE, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE MII", .sequence = &[_]u21{ 0x0BAE, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE MU", .sequence = &[_]u21{ 0x0BAE, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE MUU", .sequence = &[_]u21{ 0x0BAE, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE ME", .sequence = &[_]u21{ 0x0BAE, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE MEE", .sequence = &[_]u21{ 0x0BAE, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE MAI", .sequence = &[_]u21{ 0x0BAE, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE MO", .sequence = &[_]u21{ 0x0BAE, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE MOO", .sequence = &[_]u21{ 0x0BAE, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE MAU", .sequence = &[_]u21{ 0x0BAE, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE YAA", .sequence = &[_]u21{ 0x0BAF, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE YI", .sequence = &[_]u21{ 0x0BAF, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE YII", .sequence = &[_]u21{ 0x0BAF, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE YU", .sequence = &[_]u21{ 0x0BAF, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE YUU", .sequence = &[_]u21{ 0x0BAF, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE YE", .sequence = &[_]u21{ 0x0BAF, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE YEE", .sequence = &[_]u21{ 0x0BAF, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE YAI", .sequence = &[_]u21{ 0x0BAF, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE YO", .sequence = &[_]u21{ 0x0BAF, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE YOO", .sequence = &[_]u21{ 0x0BAF, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE YAU", .sequence = &[_]u21{ 0x0BAF, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE RAA", .sequence = &[_]u21{ 0x0BB0, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE RI", .sequence = &[_]u21{ 0x0BB0, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE RII", .sequence = &[_]u21{ 0x0BB0, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE RU", .sequence = &[_]u21{ 0x0BB0, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE RUU", .sequence = &[_]u21{ 0x0BB0, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE RE", .sequence = &[_]u21{ 0x0BB0, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE REE", .sequence = &[_]u21{ 0x0BB0, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE RAI", .sequence = &[_]u21{ 0x0BB0, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE RO", .sequence = &[_]u21{ 0x0BB0, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE ROO", .sequence = &[_]u21{ 0x0BB0, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE RAU", .sequence = &[_]u21{ 0x0BB0, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE LAA", .sequence = &[_]u21{ 0x0BB2, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE LI", .sequence = &[_]u21{ 0x0BB2, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE LII", .sequence = &[_]u21{ 0x0BB2, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE LU", .sequence = &[_]u21{ 0x0BB2, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE LUU", .sequence = &[_]u21{ 0x0BB2, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE LE", .sequence = &[_]u21{ 0x0BB2, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE LEE", .sequence = &[_]u21{ 0x0BB2, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE LAI", .sequence = &[_]u21{ 0x0BB2, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE LO", .sequence = &[_]u21{ 0x0BB2, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE LOO", .sequence = &[_]u21{ 0x0BB2, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE LAU", .sequence = &[_]u21{ 0x0BB2, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE VAA", .sequence = &[_]u21{ 0x0BB5, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE VI", .sequence = &[_]u21{ 0x0BB5, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE VII", .sequence = &[_]u21{ 0x0BB5, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE VU", .sequence = &[_]u21{ 0x0BB5, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE VUU", .sequence = &[_]u21{ 0x0BB5, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE VE", .sequence = &[_]u21{ 0x0BB5, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE VEE", .sequence = &[_]u21{ 0x0BB5, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE VAI", .sequence = &[_]u21{ 0x0BB5, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE VO", .sequence = &[_]u21{ 0x0BB5, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE VOO", .sequence = &[_]u21{ 0x0BB5, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE VAU", .sequence = &[_]u21{ 0x0BB5, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE LLLAA", .sequence = &[_]u21{ 0x0BB4, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE LLLI", .sequence = &[_]u21{ 0x0BB4, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE LLLII", .sequence = &[_]u21{ 0x0BB4, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE LLLU", .sequence = &[_]u21{ 0x0BB4, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE LLLUU", .sequence = &[_]u21{ 0x0BB4, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE LLLE", .sequence = &[_]u21{ 0x0BB4, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE LLLEE", .sequence = &[_]u21{ 0x0BB4, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE LLLAI", .sequence = &[_]u21{ 0x0BB4, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE LLLO", .sequence = &[_]u21{ 0x0BB4, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE LLLOO", .sequence = &[_]u21{ 0x0BB4, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE LLLAU", .sequence = &[_]u21{ 0x0BB4, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE LLAA", .sequence = &[_]u21{ 0x0BB3, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE LLI", .sequence = &[_]u21{ 0x0BB3, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE LLII", .sequence = &[_]u21{ 0x0BB3, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE LLU", .sequence = &[_]u21{ 0x0BB3, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE LLUU", .sequence = &[_]u21{ 0x0BB3, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE LLE", .sequence = &[_]u21{ 0x0BB3, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE LLEE", .sequence = &[_]u21{ 0x0BB3, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE LLAI", .sequence = &[_]u21{ 0x0BB3, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE LLO", .sequence = &[_]u21{ 0x0BB3, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE LLOO", .sequence = &[_]u21{ 0x0BB3, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE LLAU", .sequence = &[_]u21{ 0x0BB3, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE RRAA", .sequence = &[_]u21{ 0x0BB1, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE RRI", .sequence = &[_]u21{ 0x0BB1, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE RRII", .sequence = &[_]u21{ 0x0BB1, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE RRU", .sequence = &[_]u21{ 0x0BB1, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE RRUU", .sequence = &[_]u21{ 0x0BB1, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE RRE", .sequence = &[_]u21{ 0x0BB1, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE RREE", .sequence = &[_]u21{ 0x0BB1, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE RRAI", .sequence = &[_]u21{ 0x0BB1, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE RRO", .sequence = &[_]u21{ 0x0BB1, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE RROO", .sequence = &[_]u21{ 0x0BB1, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE RRAU", .sequence = &[_]u21{ 0x0BB1, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE NNNAA", .sequence = &[_]u21{ 0x0BA9, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE NNNI", .sequence = &[_]u21{ 0x0BA9, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE NNNII", .sequence = &[_]u21{ 0x0BA9, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE NNNU", .sequence = &[_]u21{ 0x0BA9, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE NNNUU", .sequence = &[_]u21{ 0x0BA9, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE NNNE", .sequence = &[_]u21{ 0x0BA9, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE NNNEE", .sequence = &[_]u21{ 0x0BA9, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE NNNAI", .sequence = &[_]u21{ 0x0BA9, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE NNNO", .sequence = &[_]u21{ 0x0BA9, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE NNNOO", .sequence = &[_]u21{ 0x0BA9, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE NNNAU", .sequence = &[_]u21{ 0x0BA9, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE JAA", .sequence = &[_]u21{ 0x0B9C, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE JI", .sequence = &[_]u21{ 0x0B9C, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE JII", .sequence = &[_]u21{ 0x0B9C, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE JU", .sequence = &[_]u21{ 0x0B9C, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE JUU", .sequence = &[_]u21{ 0x0B9C, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE JE", .sequence = &[_]u21{ 0x0B9C, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE JEE", .sequence = &[_]u21{ 0x0B9C, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE JAI", .sequence = &[_]u21{ 0x0B9C, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE JO", .sequence = &[_]u21{ 0x0B9C, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE JOO", .sequence = &[_]u21{ 0x0B9C, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE JAU", .sequence = &[_]u21{ 0x0B9C, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE SHAA", .sequence = &[_]u21{ 0x0BB6, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE SHI", .sequence = &[_]u21{ 0x0BB6, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE SHII", .sequence = &[_]u21{ 0x0BB6, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE SHU", .sequence = &[_]u21{ 0x0BB6, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE SHUU", .sequence = &[_]u21{ 0x0BB6, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE SHE", .sequence = &[_]u21{ 0x0BB6, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE SHEE", .sequence = &[_]u21{ 0x0BB6, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE SHAI", .sequence = &[_]u21{ 0x0BB6, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE SHO", .sequence = &[_]u21{ 0x0BB6, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE SHOO", .sequence = &[_]u21{ 0x0BB6, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE SHAU", .sequence = &[_]u21{ 0x0BB6, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE SSAA", .sequence = &[_]u21{ 0x0BB7, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE SSI", .sequence = &[_]u21{ 0x0BB7, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE SSII", .sequence = &[_]u21{ 0x0BB7, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE SSU", .sequence = &[_]u21{ 0x0BB7, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE SSUU", .sequence = &[_]u21{ 0x0BB7, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE SSE", .sequence = &[_]u21{ 0x0BB7, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE SSEE", .sequence = &[_]u21{ 0x0BB7, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE SSAI", .sequence = &[_]u21{ 0x0BB7, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE SSO", .sequence = &[_]u21{ 0x0BB7, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE SSOO", .sequence = &[_]u21{ 0x0BB7, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE SSAU", .sequence = &[_]u21{ 0x0BB7, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE SAA", .sequence = &[_]u21{ 0x0BB8, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE SI", .sequence = &[_]u21{ 0x0BB8, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE SII", .sequence = &[_]u21{ 0x0BB8, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE SU", .sequence = &[_]u21{ 0x0BB8, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE SUU", .sequence = &[_]u21{ 0x0BB8, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE SE", .sequence = &[_]u21{ 0x0BB8, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE SEE", .sequence = &[_]u21{ 0x0BB8, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE SAI", .sequence = &[_]u21{ 0x0BB8, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE SO", .sequence = &[_]u21{ 0x0BB8, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE SOO", .sequence = &[_]u21{ 0x0BB8, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE SAU", .sequence = &[_]u21{ 0x0BB8, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE HAA", .sequence = &[_]u21{ 0x0BB9, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE HI", .sequence = &[_]u21{ 0x0BB9, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE HII", .sequence = &[_]u21{ 0x0BB9, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE HU", .sequence = &[_]u21{ 0x0BB9, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE HUU", .sequence = &[_]u21{ 0x0BB9, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE HE", .sequence = &[_]u21{ 0x0BB9, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE HEE", .sequence = &[_]u21{ 0x0BB9, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE HAI", .sequence = &[_]u21{ 0x0BB9, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE HO", .sequence = &[_]u21{ 0x0BB9, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE HOO", .sequence = &[_]u21{ 0x0BB9, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE HAU", .sequence = &[_]u21{ 0x0BB9, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE KSSA", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, } }, + .{ .name = "TAMIL SYLLABLE KSSAA", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BBE, } }, + .{ .name = "TAMIL SYLLABLE KSSI", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BBF, } }, + .{ .name = "TAMIL SYLLABLE KSSII", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC0, } }, + .{ .name = "TAMIL SYLLABLE KSSU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC1, } }, + .{ .name = "TAMIL SYLLABLE KSSUU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC2, } }, + .{ .name = "TAMIL SYLLABLE KSSE", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC6, } }, + .{ .name = "TAMIL SYLLABLE KSSEE", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC7, } }, + .{ .name = "TAMIL SYLLABLE KSSAI", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BC8, } }, + .{ .name = "TAMIL SYLLABLE KSSO", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCA, } }, + .{ .name = "TAMIL SYLLABLE KSSOO", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCB, } }, + .{ .name = "TAMIL SYLLABLE KSSAU", .sequence = &[_]u21{ 0x0B95, 0x0BCD, 0x0BB7, 0x0BCC, } }, + .{ .name = "TAMIL SYLLABLE SHRII", .sequence = &[_]u21{ 0x0BB6, 0x0BCD, 0x0BB0, 0x0BC0, } }, + .{ .name = "SINHALA CONSONANT SIGN YANSAYA", .sequence = &[_]u21{ 0x0DCA, 0x200D, 0x0DBA, } }, + .{ .name = "SINHALA CONSONANT SIGN RAKAARAANSAYA", .sequence = &[_]u21{ 0x0DCA, 0x200D, 0x0DBB, } }, + .{ .name = "SINHALA CONSONANT SIGN REPAYA", .sequence = &[_]u21{ 0x0DBB, 0x0DCA, 0x200D, } }, + .{ .name = "GEORGIAN LETTER U-BRJGU", .sequence = &[_]u21{ 0x10E3, 0x0302, } }, + .{ .name = "KHMER CONSONANT SIGN COENG KA", .sequence = &[_]u21{ 0x17D2, 0x1780, } }, + .{ .name = "KHMER CONSONANT SIGN COENG KHA", .sequence = &[_]u21{ 0x17D2, 0x1781, } }, + .{ .name = "KHMER CONSONANT SIGN COENG KO", .sequence = &[_]u21{ 0x17D2, 0x1782, } }, + .{ .name = "KHMER CONSONANT SIGN COENG KHO", .sequence = &[_]u21{ 0x17D2, 0x1783, } }, + .{ .name = "KHMER CONSONANT SIGN COENG NGO", .sequence = &[_]u21{ 0x17D2, 0x1784, } }, + .{ .name = "KHMER CONSONANT SIGN COENG CA", .sequence = &[_]u21{ 0x17D2, 0x1785, } }, + .{ .name = "KHMER CONSONANT SIGN COENG CHA", .sequence = &[_]u21{ 0x17D2, 0x1786, } }, + .{ .name = "KHMER CONSONANT SIGN COENG CO", .sequence = &[_]u21{ 0x17D2, 0x1787, } }, + .{ .name = "KHMER CONSONANT SIGN COENG CHO", .sequence = &[_]u21{ 0x17D2, 0x1788, } }, + .{ .name = "KHMER CONSONANT SIGN COENG NYO", .sequence = &[_]u21{ 0x17D2, 0x1789, } }, + .{ .name = "KHMER CONSONANT SIGN COENG DA", .sequence = &[_]u21{ 0x17D2, 0x178A, } }, + .{ .name = "KHMER CONSONANT SIGN COENG TTHA", .sequence = &[_]u21{ 0x17D2, 0x178B, } }, + .{ .name = "KHMER CONSONANT SIGN COENG DO", .sequence = &[_]u21{ 0x17D2, 0x178C, } }, + .{ .name = "KHMER CONSONANT SIGN COENG TTHO", .sequence = &[_]u21{ 0x17D2, 0x178D, } }, + .{ .name = "KHMER CONSONANT SIGN COENG NA", .sequence = &[_]u21{ 0x17D2, 0x178E, } }, + .{ .name = "KHMER CONSONANT SIGN COENG TA", .sequence = &[_]u21{ 0x17D2, 0x178F, } }, + .{ .name = "KHMER CONSONANT SIGN COENG THA", .sequence = &[_]u21{ 0x17D2, 0x1790, } }, + .{ .name = "KHMER CONSONANT SIGN COENG TO", .sequence = &[_]u21{ 0x17D2, 0x1791, } }, + .{ .name = "KHMER CONSONANT SIGN COENG THO", .sequence = &[_]u21{ 0x17D2, 0x1792, } }, + .{ .name = "KHMER CONSONANT SIGN COENG NO", .sequence = &[_]u21{ 0x17D2, 0x1793, } }, + .{ .name = "KHMER CONSONANT SIGN COENG BA", .sequence = &[_]u21{ 0x17D2, 0x1794, } }, + .{ .name = "KHMER CONSONANT SIGN COENG PHA", .sequence = &[_]u21{ 0x17D2, 0x1795, } }, + .{ .name = "KHMER CONSONANT SIGN COENG PO", .sequence = &[_]u21{ 0x17D2, 0x1796, } }, + .{ .name = "KHMER CONSONANT SIGN COENG PHO", .sequence = &[_]u21{ 0x17D2, 0x1797, } }, + .{ .name = "KHMER CONSONANT SIGN COENG MO", .sequence = &[_]u21{ 0x17D2, 0x1798, } }, + .{ .name = "KHMER CONSONANT SIGN COENG YO", .sequence = &[_]u21{ 0x17D2, 0x1799, } }, + .{ .name = "KHMER CONSONANT SIGN COENG RO", .sequence = &[_]u21{ 0x17D2, 0x179A, } }, + .{ .name = "KHMER CONSONANT SIGN COENG LO", .sequence = &[_]u21{ 0x17D2, 0x179B, } }, + .{ .name = "KHMER CONSONANT SIGN COENG VO", .sequence = &[_]u21{ 0x17D2, 0x179C, } }, + .{ .name = "KHMER CONSONANT SIGN COENG SHA", .sequence = &[_]u21{ 0x17D2, 0x179D, } }, + .{ .name = "KHMER CONSONANT SIGN COENG SSA", .sequence = &[_]u21{ 0x17D2, 0x179E, } }, + .{ .name = "KHMER CONSONANT SIGN COENG SA", .sequence = &[_]u21{ 0x17D2, 0x179F, } }, + .{ .name = "KHMER CONSONANT SIGN COENG HA", .sequence = &[_]u21{ 0x17D2, 0x17A0, } }, + .{ .name = "KHMER CONSONANT SIGN COENG LA", .sequence = &[_]u21{ 0x17D2, 0x17A1, } }, + .{ .name = "KHMER VOWEL SIGN COENG QA", .sequence = &[_]u21{ 0x17D2, 0x17A2, } }, + .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG QU", .sequence = &[_]u21{ 0x17D2, 0x17A7, } }, + .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG RY", .sequence = &[_]u21{ 0x17D2, 0x17AB, } }, + .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG RYY", .sequence = &[_]u21{ 0x17D2, 0x17AC, } }, + .{ .name = "KHMER INDEPENDENT VOWEL SIGN COENG QE", .sequence = &[_]u21{ 0x17D2, 0x17AF, } }, + .{ .name = "KHMER VOWEL SIGN OM", .sequence = &[_]u21{ 0x17BB, 0x17C6, } }, + .{ .name = "KHMER VOWEL SIGN AAM", .sequence = &[_]u21{ 0x17B6, 0x17C6, } }, + .{ .name = "HIRAGANA LETTER BIDAKUON NGA", .sequence = &[_]u21{ 0x304B, 0x309A, } }, + .{ .name = "HIRAGANA LETTER BIDAKUON NGI", .sequence = &[_]u21{ 0x304D, 0x309A, } }, + .{ .name = "HIRAGANA LETTER BIDAKUON NGU", .sequence = &[_]u21{ 0x304F, 0x309A, } }, + .{ .name = "HIRAGANA LETTER BIDAKUON NGE", .sequence = &[_]u21{ 0x3051, 0x309A, } }, + .{ .name = "HIRAGANA LETTER BIDAKUON NGO", .sequence = &[_]u21{ 0x3053, 0x309A, } }, + .{ .name = "KATAKANA LETTER BIDAKUON NGA", .sequence = &[_]u21{ 0x30AB, 0x309A, } }, + .{ .name = "KATAKANA LETTER BIDAKUON NGI", .sequence = &[_]u21{ 0x30AD, 0x309A, } }, + .{ .name = "KATAKANA LETTER BIDAKUON NGU", .sequence = &[_]u21{ 0x30AF, 0x309A, } }, + .{ .name = "KATAKANA LETTER BIDAKUON NGE", .sequence = &[_]u21{ 0x30B1, 0x309A, } }, + .{ .name = "KATAKANA LETTER BIDAKUON NGO", .sequence = &[_]u21{ 0x30B3, 0x309A, } }, + .{ .name = "KATAKANA LETTER AINU CE", .sequence = &[_]u21{ 0x30BB, 0x309A, } }, + .{ .name = "KATAKANA LETTER AINU TU", .sequence = &[_]u21{ 0x30C4, 0x309A, } }, + .{ .name = "KATAKANA LETTER AINU TO", .sequence = &[_]u21{ 0x30C8, 0x309A, } }, + .{ .name = "KATAKANA LETTER AINU P", .sequence = &[_]u21{ 0x31F7, 0x309A, } }, + .{ .name = "MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR", .sequence = &[_]u21{ 0x02E5, 0x02E9, } }, + .{ .name = "MODIFIER LETTER EXTRA-LOW EXTRA-HIGH CONTOUR TONE BAR", .sequence = &[_]u21{ 0x02E9, 0x02E5, } }, +}; -- 2.54.0