From 35065b703a0912fd39d56f91f7e4f8c886b9ab63 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 20 Jan 2026 23:19:29 -0800 Subject: [PATCH] add DerivedNormalizationProps --- generate.zig | 1 + scripts/DerivedNormalizationProps.zig | 260 +++ scripts/_common.zig | 1 + src/derived_normalization_props.zig | 2538 +++++++++++++++++++++++++ src/lib.zig | 2 +- test.zig | 1 + 6 files changed, 2802 insertions(+), 1 deletion(-) create mode 100644 scripts/DerivedNormalizationProps.zig create mode 100644 src/derived_normalization_props.zig diff --git a/generate.zig b/generate.zig index 6b683f9d8e0221d8165c6388a900ea3dde7abef3..2e7a194b8d4b73573a7d90b50fd14c2ca36c1014 100644 --- a/generate.zig +++ b/generate.zig @@ -10,6 +10,7 @@ const files = [_]type{ @import("./scripts/CompositionExclusions.zig"), @import("./scripts/DerivedAge.zig"), @import("./scripts/DerivedCoreProperties.zig"), + @import("./scripts/DerivedNormalizationProps.zig"), @import("./scripts/EastAsianWidth.zig"), @import("./scripts/EmojiSources.zig"), @import("./scripts/EquivalentUnifiedIdeograph.zig"), diff --git a/scripts/DerivedNormalizationProps.zig b/scripts/DerivedNormalizationProps.zig new file mode 100644 index 0000000000000000000000000000000000000000..5571715e8d2239b753acfe31d954e25e2c070115 --- /dev/null +++ b/scripts/DerivedNormalizationProps.zig @@ -0,0 +1,260 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "DerivedNormalizationProps"; + + pub const dest_file = "src/derived_normalization_props.zig"; + + pub const dest_header = + \\const ucd = @import("./lib.zig"); + \\ + \\pub const Range = struct { + \\ from: u21, + \\ to: u21, + \\}; + \\ + ; + + pub const dest_footer = ""; + + var sections: std.StringArrayHashMapUnmanaged(std.ArrayListUnmanaged([]const u8)) = .{}; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !void { + _ = writer; + var it = std.mem.tokenizeAny(u8, line, " ; "); + + const cp_range = it.next().?; + const rest = it.rest(); + + const gop = try sections.getOrPut(alloc, try alloc.dupe(u8, rest)); + if (!gop.found_existing) gop.value_ptr.* = .{}; + try gop.value_ptr.append(alloc, try alloc.dupe(u8, cp_range)); + } + + pub fn after(alloc: std.mem.Allocator, writer: anytype) !void { + _ = alloc; + + { + const list = sections.fetchSwapRemove("Full_Composition_Exclusion ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const full_composition_exclusion = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFD_QC; N " + const list = sections.fetchSwapRemove("NFD_QC; N ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfd_qc_n = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFC_QC; N " + const list = sections.fetchSwapRemove("NFC_QC; N ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfc_qc_n = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFC_QC; M " + const list = sections.fetchSwapRemove("NFC_QC; M ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfc_qc_m = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFKD_QC; N " + const list = sections.fetchSwapRemove("NFKD_QC; N ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfkd_qc_n = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFKC_QC; N " + const list = sections.fetchSwapRemove("NFKC_QC; N ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfkc_qc_n = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // "NFKC_QC; M " + const list = sections.fetchSwapRemove("NFKC_QC; M ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const nfkc_qc_m = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + { + // NFKC_CF + } + { + // NFKC_SCF + } + { + // "Changes_When_NFKC_Casefolded " + const list = sections.fetchSwapRemove("Changes_When_NFKC_Casefolded ").?; + try writer.writeAll("\n"); + try writer.writeAll("pub const changes_when_nfc_casefolded = struct {\n"); + try writer.writeAll(" pub const data = [_]u21{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..") == null) { + try writer.writeAll(" 0x"); + try writer.writeAll(item); + try writer.writeAll(",\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll(" pub const data_range = [_]Range{\n"); + for (list.value.items) |item| { + if (std.mem.indexOf(u8, item, "..")) |idx| { + try writer.writeAll(" .{ .from = 0x"); + try writer.writeAll(item[0..idx]); + try writer.writeAll(", .to = 0x"); + try writer.writeAll(item[idx + 2 ..]); + try writer.writeAll(" },\n"); + } + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); + } + } +}); diff --git a/scripts/_common.zig b/scripts/_common.zig index a27307153b8dd0f103d85e914c5927986993e77b..b5b15cd1d477457c69927152655baa59ee9d36d8 100644 --- a/scripts/_common.zig +++ b/scripts/_common.zig @@ -76,6 +76,7 @@ pub fn Main(comptime T: type) type { } std.debug.print("\n", .{}); try w.writeAll(T.dest_footer); + if (@hasDecl(T, "after")) try T.after(arena.allocator(), w); try bufw.flush(); } }; diff --git a/src/derived_normalization_props.zig b/src/derived_normalization_props.zig new file mode 100644 index 0000000000000000000000000000000000000000..a13e4e9c2dd14bc4b4dd6e2be7d965844f185197 --- /dev/null +++ b/src/derived_normalization_props.zig @@ -0,0 +1,2538 @@ +// 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/17.0.0/ucd/DerivedNormalizationProps.txt +// +// zig fmt: off + +const ucd = @import("./lib.zig"); + +pub const Range = struct { + from: u21, + to: u21, +}; + +pub const full_composition_exclusion = struct { + pub const data = [_]u21{ + 0x0374, + 0x037E, + 0x0387, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F78, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x1F71, + 0x1F73, + 0x1F75, + 0x1F77, + 0x1F79, + 0x1F7B, + 0x1F7D, + 0x1FBB, + 0x1FBE, + 0x1FC9, + 0x1FCB, + 0x1FD3, + 0x1FDB, + 0x1FE3, + 0x1FEB, + 0x1FF9, + 0x1FFB, + 0x1FFD, + 0x2126, + 0x2329, + 0x232A, + 0x2ADC, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB1F, + 0xFB3E, + }; + pub const data_range = [_]Range{ + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0344 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0F75, .to = 0x0F76 }, + .{ .from = 0x1FEE, .to = 0x1FEF }, + .{ .from = 0x2000, .to = 0x2001 }, + .{ .from = 0x212A, .to = 0x212B }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFB4E }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + }; +}; + +pub const nfd_qc_n = struct { + pub const data = [_]u21{ + 0x0374, + 0x037E, + 0x0385, + 0x0386, + 0x0387, + 0x038C, + 0x0403, + 0x0407, + 0x0419, + 0x0439, + 0x0453, + 0x0457, + 0x06C0, + 0x06C2, + 0x06D3, + 0x0929, + 0x0931, + 0x0934, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0B48, + 0x0B94, + 0x0C48, + 0x0CC0, + 0x0DDA, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F78, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x1026, + 0x1B06, + 0x1B08, + 0x1B0A, + 0x1B0C, + 0x1B0E, + 0x1B12, + 0x1B3B, + 0x1B3D, + 0x1B43, + 0x1E9B, + 0x1F59, + 0x1F5B, + 0x1F5D, + 0x1FBE, + 0x1FC1, + 0x1FFD, + 0x2126, + 0x21AE, + 0x21CD, + 0x2204, + 0x2209, + 0x220C, + 0x2224, + 0x2226, + 0x2241, + 0x2244, + 0x2247, + 0x2249, + 0x2260, + 0x2262, + 0x2329, + 0x232A, + 0x2ADC, + 0x304C, + 0x304E, + 0x3050, + 0x3052, + 0x3054, + 0x3056, + 0x3058, + 0x305A, + 0x305C, + 0x305E, + 0x3060, + 0x3062, + 0x3065, + 0x3067, + 0x3069, + 0x3094, + 0x309E, + 0x30AC, + 0x30AE, + 0x30B0, + 0x30B2, + 0x30B4, + 0x30B6, + 0x30B8, + 0x30BA, + 0x30BC, + 0x30BE, + 0x30C0, + 0x30C2, + 0x30C5, + 0x30C7, + 0x30C9, + 0x30F4, + 0x30FE, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB1F, + 0xFB3E, + 0x105C9, + 0x105E4, + 0x1109A, + 0x1109C, + 0x110AB, + 0x11383, + 0x11385, + 0x1138E, + 0x11391, + 0x113C5, + 0x114BE, + 0x11938, + }; + pub const data_range = [_]Range{ + .{ .from = 0x00C0, .to = 0x00C5 }, + .{ .from = 0x00C7, .to = 0x00CF }, + .{ .from = 0x00D1, .to = 0x00D6 }, + .{ .from = 0x00D9, .to = 0x00DD }, + .{ .from = 0x00E0, .to = 0x00E5 }, + .{ .from = 0x00E7, .to = 0x00EF }, + .{ .from = 0x00F1, .to = 0x00F6 }, + .{ .from = 0x00F9, .to = 0x00FD }, + .{ .from = 0x00FF, .to = 0x010F }, + .{ .from = 0x0112, .to = 0x0125 }, + .{ .from = 0x0128, .to = 0x0130 }, + .{ .from = 0x0134, .to = 0x0137 }, + .{ .from = 0x0139, .to = 0x013E }, + .{ .from = 0x0143, .to = 0x0148 }, + .{ .from = 0x014C, .to = 0x0151 }, + .{ .from = 0x0154, .to = 0x0165 }, + .{ .from = 0x0168, .to = 0x017E }, + .{ .from = 0x01A0, .to = 0x01A1 }, + .{ .from = 0x01AF, .to = 0x01B0 }, + .{ .from = 0x01CD, .to = 0x01DC }, + .{ .from = 0x01DE, .to = 0x01E3 }, + .{ .from = 0x01E6, .to = 0x01F0 }, + .{ .from = 0x01F4, .to = 0x01F5 }, + .{ .from = 0x01F8, .to = 0x021B }, + .{ .from = 0x021E, .to = 0x021F }, + .{ .from = 0x0226, .to = 0x0233 }, + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0344 }, + .{ .from = 0x0388, .to = 0x038A }, + .{ .from = 0x038E, .to = 0x0390 }, + .{ .from = 0x03AA, .to = 0x03B0 }, + .{ .from = 0x03CA, .to = 0x03CE }, + .{ .from = 0x03D3, .to = 0x03D4 }, + .{ .from = 0x0400, .to = 0x0401 }, + .{ .from = 0x040C, .to = 0x040E }, + .{ .from = 0x0450, .to = 0x0451 }, + .{ .from = 0x045C, .to = 0x045E }, + .{ .from = 0x0476, .to = 0x0477 }, + .{ .from = 0x04C1, .to = 0x04C2 }, + .{ .from = 0x04D0, .to = 0x04D3 }, + .{ .from = 0x04D6, .to = 0x04D7 }, + .{ .from = 0x04DA, .to = 0x04DF }, + .{ .from = 0x04E2, .to = 0x04E7 }, + .{ .from = 0x04EA, .to = 0x04F5 }, + .{ .from = 0x04F8, .to = 0x04F9 }, + .{ .from = 0x0622, .to = 0x0626 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09CB, .to = 0x09CC }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B4B, .to = 0x0B4C }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0BCA, .to = 0x0BCC }, + .{ .from = 0x0CC7, .to = 0x0CC8 }, + .{ .from = 0x0CCA, .to = 0x0CCB }, + .{ .from = 0x0D4A, .to = 0x0D4C }, + .{ .from = 0x0DDC, .to = 0x0DDE }, + .{ .from = 0x0F75, .to = 0x0F76 }, + .{ .from = 0x1B40, .to = 0x1B41 }, + .{ .from = 0x1E00, .to = 0x1E99 }, + .{ .from = 0x1EA0, .to = 0x1EF9 }, + .{ .from = 0x1F00, .to = 0x1F15 }, + .{ .from = 0x1F18, .to = 0x1F1D }, + .{ .from = 0x1F20, .to = 0x1F45 }, + .{ .from = 0x1F48, .to = 0x1F4D }, + .{ .from = 0x1F50, .to = 0x1F57 }, + .{ .from = 0x1F5F, .to = 0x1F7D }, + .{ .from = 0x1F80, .to = 0x1FB4 }, + .{ .from = 0x1FB6, .to = 0x1FBC }, + .{ .from = 0x1FC2, .to = 0x1FC4 }, + .{ .from = 0x1FC6, .to = 0x1FCC }, + .{ .from = 0x1FCD, .to = 0x1FCF }, + .{ .from = 0x1FD0, .to = 0x1FD3 }, + .{ .from = 0x1FD6, .to = 0x1FDB }, + .{ .from = 0x1FDD, .to = 0x1FDF }, + .{ .from = 0x1FE0, .to = 0x1FEC }, + .{ .from = 0x1FED, .to = 0x1FEF }, + .{ .from = 0x1FF2, .to = 0x1FF4 }, + .{ .from = 0x1FF6, .to = 0x1FFC }, + .{ .from = 0x2000, .to = 0x2001 }, + .{ .from = 0x212A, .to = 0x212B }, + .{ .from = 0x219A, .to = 0x219B }, + .{ .from = 0x21CE, .to = 0x21CF }, + .{ .from = 0x226D, .to = 0x2271 }, + .{ .from = 0x2274, .to = 0x2275 }, + .{ .from = 0x2278, .to = 0x2279 }, + .{ .from = 0x2280, .to = 0x2281 }, + .{ .from = 0x2284, .to = 0x2285 }, + .{ .from = 0x2288, .to = 0x2289 }, + .{ .from = 0x22AC, .to = 0x22AF }, + .{ .from = 0x22E0, .to = 0x22E3 }, + .{ .from = 0x22EA, .to = 0x22ED }, + .{ .from = 0x3070, .to = 0x3071 }, + .{ .from = 0x3073, .to = 0x3074 }, + .{ .from = 0x3076, .to = 0x3077 }, + .{ .from = 0x3079, .to = 0x307A }, + .{ .from = 0x307C, .to = 0x307D }, + .{ .from = 0x30D0, .to = 0x30D1 }, + .{ .from = 0x30D3, .to = 0x30D4 }, + .{ .from = 0x30D6, .to = 0x30D7 }, + .{ .from = 0x30D9, .to = 0x30DA }, + .{ .from = 0x30DC, .to = 0x30DD }, + .{ .from = 0x30F7, .to = 0x30FA }, + .{ .from = 0xAC00, .to = 0xD7A3 }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFB4E }, + .{ .from = 0x1112E, .to = 0x1112F }, + .{ .from = 0x1134B, .to = 0x1134C }, + .{ .from = 0x113C7, .to = 0x113C8 }, + .{ .from = 0x114BB, .to = 0x114BC }, + .{ .from = 0x115BA, .to = 0x115BB }, + .{ .from = 0x16121, .to = 0x16128 }, + .{ .from = 0x16D68, .to = 0x16D6A }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + }; +}; + +pub const nfc_qc_n = struct { + pub const data = [_]u21{ + 0x0374, + 0x037E, + 0x0387, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F78, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x1F71, + 0x1F73, + 0x1F75, + 0x1F77, + 0x1F79, + 0x1F7B, + 0x1F7D, + 0x1FBB, + 0x1FBE, + 0x1FC9, + 0x1FCB, + 0x1FD3, + 0x1FDB, + 0x1FE3, + 0x1FEB, + 0x1FF9, + 0x1FFB, + 0x1FFD, + 0x2126, + 0x2329, + 0x232A, + 0x2ADC, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB1F, + 0xFB3E, + }; + pub const data_range = [_]Range{ + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0344 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0F75, .to = 0x0F76 }, + .{ .from = 0x1FEE, .to = 0x1FEF }, + .{ .from = 0x2000, .to = 0x2001 }, + .{ .from = 0x212A, .to = 0x212B }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFB4E }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + }; +}; + +pub const nfc_qc_m = struct { + pub const data = [_]u21{ + 0x030F, + 0x0311, + 0x031B, + 0x0338, + 0x0342, + 0x0345, + 0x093C, + 0x09BE, + 0x09D7, + 0x0B3E, + 0x0B56, + 0x0B57, + 0x0BBE, + 0x0BD7, + 0x0C56, + 0x0CC2, + 0x0D3E, + 0x0D57, + 0x0DCA, + 0x0DCF, + 0x0DDF, + 0x102E, + 0x1B35, + 0x110BA, + 0x11127, + 0x1133E, + 0x11357, + 0x113B8, + 0x113BB, + 0x113C2, + 0x113C5, + 0x114B0, + 0x114BA, + 0x114BD, + 0x115AF, + 0x11930, + }; + pub const data_range = [_]Range{ + .{ .from = 0x0300, .to = 0x0304 }, + .{ .from = 0x0306, .to = 0x030C }, + .{ .from = 0x0313, .to = 0x0314 }, + .{ .from = 0x0323, .to = 0x0328 }, + .{ .from = 0x032D, .to = 0x032E }, + .{ .from = 0x0330, .to = 0x0331 }, + .{ .from = 0x0653, .to = 0x0655 }, + .{ .from = 0x0CD5, .to = 0x0CD6 }, + .{ .from = 0x1161, .to = 0x1175 }, + .{ .from = 0x11A8, .to = 0x11C2 }, + .{ .from = 0x3099, .to = 0x309A }, + .{ .from = 0x113C7, .to = 0x113C9 }, + .{ .from = 0x1611E, .to = 0x16129 }, + .{ .from = 0x16D67, .to = 0x16D68 }, + }; +}; + +pub const nfkd_qc_n = struct { + pub const data = [_]u21{ + 0x00A0, + 0x00A8, + 0x00AA, + 0x00AF, + 0x00B4, + 0x00B5, + 0x00B8, + 0x00B9, + 0x00BA, + 0x0374, + 0x037A, + 0x037E, + 0x0386, + 0x0387, + 0x038C, + 0x03F9, + 0x0403, + 0x0407, + 0x0419, + 0x0439, + 0x0453, + 0x0457, + 0x0587, + 0x06C0, + 0x06C2, + 0x06D3, + 0x0929, + 0x0931, + 0x0934, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0B48, + 0x0B94, + 0x0C48, + 0x0CC0, + 0x0DDA, + 0x0E33, + 0x0EB3, + 0x0F0C, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x1026, + 0x10FC, + 0x1B06, + 0x1B08, + 0x1B0A, + 0x1B0C, + 0x1B0E, + 0x1B12, + 0x1B3B, + 0x1B3D, + 0x1B43, + 0x1D78, + 0x1F59, + 0x1F5B, + 0x1F5D, + 0x1FBD, + 0x1FBE, + 0x2011, + 0x2017, + 0x202F, + 0x203C, + 0x203E, + 0x2057, + 0x205F, + 0x2070, + 0x2071, + 0x207D, + 0x207E, + 0x207F, + 0x208D, + 0x208E, + 0x20A8, + 0x2102, + 0x2103, + 0x2107, + 0x2109, + 0x2115, + 0x2116, + 0x2124, + 0x2126, + 0x2128, + 0x2139, + 0x213B, + 0x2140, + 0x2189, + 0x21AE, + 0x21CD, + 0x2204, + 0x2209, + 0x220C, + 0x2224, + 0x2226, + 0x2241, + 0x2244, + 0x2247, + 0x2249, + 0x2260, + 0x2262, + 0x2329, + 0x232A, + 0x24EA, + 0x2A0C, + 0x2ADC, + 0x2D6F, + 0x2E9F, + 0x2EF3, + 0x3000, + 0x3036, + 0x304C, + 0x304E, + 0x3050, + 0x3052, + 0x3054, + 0x3056, + 0x3058, + 0x305A, + 0x305C, + 0x305E, + 0x3060, + 0x3062, + 0x3065, + 0x3067, + 0x3069, + 0x3094, + 0x309E, + 0x309F, + 0x30AC, + 0x30AE, + 0x30B0, + 0x30B2, + 0x30B4, + 0x30B6, + 0x30B8, + 0x30BA, + 0x30BC, + 0x30BE, + 0x30C0, + 0x30C2, + 0x30C5, + 0x30C7, + 0x30C9, + 0x30F4, + 0x30FE, + 0x30FF, + 0x3250, + 0xA770, + 0xAB69, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB29, + 0xFB3E, + 0xFDFC, + 0xFE17, + 0xFE18, + 0xFE19, + 0xFE30, + 0xFE35, + 0xFE36, + 0xFE37, + 0xFE38, + 0xFE39, + 0xFE3A, + 0xFE3B, + 0xFE3C, + 0xFE3D, + 0xFE3E, + 0xFE3F, + 0xFE40, + 0xFE41, + 0xFE42, + 0xFE43, + 0xFE44, + 0xFE47, + 0xFE48, + 0xFE58, + 0xFE59, + 0xFE5A, + 0xFE5B, + 0xFE5C, + 0xFE5D, + 0xFE5E, + 0xFE62, + 0xFE63, + 0xFE68, + 0xFE69, + 0xFE74, + 0xFF04, + 0xFF08, + 0xFF09, + 0xFF0A, + 0xFF0B, + 0xFF0C, + 0xFF0D, + 0xFF3B, + 0xFF3C, + 0xFF3D, + 0xFF3E, + 0xFF3F, + 0xFF40, + 0xFF5B, + 0xFF5C, + 0xFF5D, + 0xFF5E, + 0xFF5F, + 0xFF60, + 0xFF61, + 0xFF62, + 0xFF63, + 0xFF70, + 0xFFE2, + 0xFFE3, + 0xFFE4, + 0xFFE8, + 0x105C9, + 0x105E4, + 0x1109A, + 0x1109C, + 0x110AB, + 0x11383, + 0x11385, + 0x1138E, + 0x11391, + 0x113C5, + 0x114BE, + 0x11938, + 0x1D4A2, + 0x1D4BB, + 0x1D546, + 0x1D6C1, + 0x1D6DB, + 0x1D6FB, + 0x1D715, + 0x1D735, + 0x1D74F, + 0x1D76F, + 0x1D789, + 0x1D7A9, + 0x1D7C3, + 0x1EE24, + 0x1EE27, + 0x1EE39, + 0x1EE3B, + 0x1EE42, + 0x1EE47, + 0x1EE49, + 0x1EE4B, + 0x1EE54, + 0x1EE57, + 0x1EE59, + 0x1EE5B, + 0x1EE5D, + 0x1EE5F, + 0x1EE64, + 0x1EE7E, + 0x1F190, + }; + pub const data_range = [_]Range{ + .{ .from = 0x00B2, .to = 0x00B3 }, + .{ .from = 0x00BC, .to = 0x00BE }, + .{ .from = 0x00C0, .to = 0x00C5 }, + .{ .from = 0x00C7, .to = 0x00CF }, + .{ .from = 0x00D1, .to = 0x00D6 }, + .{ .from = 0x00D9, .to = 0x00DD }, + .{ .from = 0x00E0, .to = 0x00E5 }, + .{ .from = 0x00E7, .to = 0x00EF }, + .{ .from = 0x00F1, .to = 0x00F6 }, + .{ .from = 0x00F9, .to = 0x00FD }, + .{ .from = 0x00FF, .to = 0x010F }, + .{ .from = 0x0112, .to = 0x0125 }, + .{ .from = 0x0128, .to = 0x0130 }, + .{ .from = 0x0132, .to = 0x0137 }, + .{ .from = 0x0139, .to = 0x0140 }, + .{ .from = 0x0143, .to = 0x0149 }, + .{ .from = 0x014C, .to = 0x0151 }, + .{ .from = 0x0154, .to = 0x0165 }, + .{ .from = 0x0168, .to = 0x017F }, + .{ .from = 0x01A0, .to = 0x01A1 }, + .{ .from = 0x01AF, .to = 0x01B0 }, + .{ .from = 0x01C4, .to = 0x01DC }, + .{ .from = 0x01DE, .to = 0x01E3 }, + .{ .from = 0x01E6, .to = 0x01F5 }, + .{ .from = 0x01F8, .to = 0x021B }, + .{ .from = 0x021E, .to = 0x021F }, + .{ .from = 0x0226, .to = 0x0233 }, + .{ .from = 0x02B0, .to = 0x02B8 }, + .{ .from = 0x02D8, .to = 0x02DD }, + .{ .from = 0x02E0, .to = 0x02E4 }, + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0344 }, + .{ .from = 0x0384, .to = 0x0385 }, + .{ .from = 0x0388, .to = 0x038A }, + .{ .from = 0x038E, .to = 0x0390 }, + .{ .from = 0x03AA, .to = 0x03B0 }, + .{ .from = 0x03CA, .to = 0x03CE }, + .{ .from = 0x03D0, .to = 0x03D6 }, + .{ .from = 0x03F0, .to = 0x03F2 }, + .{ .from = 0x03F4, .to = 0x03F5 }, + .{ .from = 0x0400, .to = 0x0401 }, + .{ .from = 0x040C, .to = 0x040E }, + .{ .from = 0x0450, .to = 0x0451 }, + .{ .from = 0x045C, .to = 0x045E }, + .{ .from = 0x0476, .to = 0x0477 }, + .{ .from = 0x04C1, .to = 0x04C2 }, + .{ .from = 0x04D0, .to = 0x04D3 }, + .{ .from = 0x04D6, .to = 0x04D7 }, + .{ .from = 0x04DA, .to = 0x04DF }, + .{ .from = 0x04E2, .to = 0x04E7 }, + .{ .from = 0x04EA, .to = 0x04F5 }, + .{ .from = 0x04F8, .to = 0x04F9 }, + .{ .from = 0x0622, .to = 0x0626 }, + .{ .from = 0x0675, .to = 0x0678 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09CB, .to = 0x09CC }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B4B, .to = 0x0B4C }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0BCA, .to = 0x0BCC }, + .{ .from = 0x0CC7, .to = 0x0CC8 }, + .{ .from = 0x0CCA, .to = 0x0CCB }, + .{ .from = 0x0D4A, .to = 0x0D4C }, + .{ .from = 0x0DDC, .to = 0x0DDE }, + .{ .from = 0x0EDC, .to = 0x0EDD }, + .{ .from = 0x0F75, .to = 0x0F79 }, + .{ .from = 0x1B40, .to = 0x1B41 }, + .{ .from = 0x1D2C, .to = 0x1D2E }, + .{ .from = 0x1D30, .to = 0x1D3A }, + .{ .from = 0x1D3C, .to = 0x1D4D }, + .{ .from = 0x1D4F, .to = 0x1D6A }, + .{ .from = 0x1D9B, .to = 0x1DBF }, + .{ .from = 0x1E00, .to = 0x1E9B }, + .{ .from = 0x1EA0, .to = 0x1EF9 }, + .{ .from = 0x1F00, .to = 0x1F15 }, + .{ .from = 0x1F18, .to = 0x1F1D }, + .{ .from = 0x1F20, .to = 0x1F45 }, + .{ .from = 0x1F48, .to = 0x1F4D }, + .{ .from = 0x1F50, .to = 0x1F57 }, + .{ .from = 0x1F5F, .to = 0x1F7D }, + .{ .from = 0x1F80, .to = 0x1FB4 }, + .{ .from = 0x1FB6, .to = 0x1FBC }, + .{ .from = 0x1FBF, .to = 0x1FC1 }, + .{ .from = 0x1FC2, .to = 0x1FC4 }, + .{ .from = 0x1FC6, .to = 0x1FCC }, + .{ .from = 0x1FCD, .to = 0x1FCF }, + .{ .from = 0x1FD0, .to = 0x1FD3 }, + .{ .from = 0x1FD6, .to = 0x1FDB }, + .{ .from = 0x1FDD, .to = 0x1FDF }, + .{ .from = 0x1FE0, .to = 0x1FEC }, + .{ .from = 0x1FED, .to = 0x1FEF }, + .{ .from = 0x1FF2, .to = 0x1FF4 }, + .{ .from = 0x1FF6, .to = 0x1FFC }, + .{ .from = 0x1FFD, .to = 0x1FFE }, + .{ .from = 0x2000, .to = 0x200A }, + .{ .from = 0x2024, .to = 0x2026 }, + .{ .from = 0x2033, .to = 0x2034 }, + .{ .from = 0x2036, .to = 0x2037 }, + .{ .from = 0x2047, .to = 0x2049 }, + .{ .from = 0x2074, .to = 0x2079 }, + .{ .from = 0x207A, .to = 0x207C }, + .{ .from = 0x2080, .to = 0x2089 }, + .{ .from = 0x208A, .to = 0x208C }, + .{ .from = 0x2090, .to = 0x209C }, + .{ .from = 0x2100, .to = 0x2101 }, + .{ .from = 0x2105, .to = 0x2106 }, + .{ .from = 0x210A, .to = 0x2113 }, + .{ .from = 0x2119, .to = 0x211D }, + .{ .from = 0x2120, .to = 0x2122 }, + .{ .from = 0x212A, .to = 0x212D }, + .{ .from = 0x212F, .to = 0x2131 }, + .{ .from = 0x2133, .to = 0x2134 }, + .{ .from = 0x2135, .to = 0x2138 }, + .{ .from = 0x213C, .to = 0x213F }, + .{ .from = 0x2145, .to = 0x2149 }, + .{ .from = 0x2150, .to = 0x215F }, + .{ .from = 0x2160, .to = 0x217F }, + .{ .from = 0x219A, .to = 0x219B }, + .{ .from = 0x21CE, .to = 0x21CF }, + .{ .from = 0x222C, .to = 0x222D }, + .{ .from = 0x222F, .to = 0x2230 }, + .{ .from = 0x226D, .to = 0x2271 }, + .{ .from = 0x2274, .to = 0x2275 }, + .{ .from = 0x2278, .to = 0x2279 }, + .{ .from = 0x2280, .to = 0x2281 }, + .{ .from = 0x2284, .to = 0x2285 }, + .{ .from = 0x2288, .to = 0x2289 }, + .{ .from = 0x22AC, .to = 0x22AF }, + .{ .from = 0x22E0, .to = 0x22E3 }, + .{ .from = 0x22EA, .to = 0x22ED }, + .{ .from = 0x2460, .to = 0x249B }, + .{ .from = 0x249C, .to = 0x24E9 }, + .{ .from = 0x2A74, .to = 0x2A76 }, + .{ .from = 0x2C7C, .to = 0x2C7D }, + .{ .from = 0x2F00, .to = 0x2FD5 }, + .{ .from = 0x3038, .to = 0x303A }, + .{ .from = 0x3070, .to = 0x3071 }, + .{ .from = 0x3073, .to = 0x3074 }, + .{ .from = 0x3076, .to = 0x3077 }, + .{ .from = 0x3079, .to = 0x307A }, + .{ .from = 0x307C, .to = 0x307D }, + .{ .from = 0x309B, .to = 0x309C }, + .{ .from = 0x30D0, .to = 0x30D1 }, + .{ .from = 0x30D3, .to = 0x30D4 }, + .{ .from = 0x30D6, .to = 0x30D7 }, + .{ .from = 0x30D9, .to = 0x30DA }, + .{ .from = 0x30DC, .to = 0x30DD }, + .{ .from = 0x30F7, .to = 0x30FA }, + .{ .from = 0x3131, .to = 0x318E }, + .{ .from = 0x3192, .to = 0x3195 }, + .{ .from = 0x3196, .to = 0x319F }, + .{ .from = 0x3200, .to = 0x321E }, + .{ .from = 0x3220, .to = 0x3229 }, + .{ .from = 0x322A, .to = 0x3247 }, + .{ .from = 0x3251, .to = 0x325F }, + .{ .from = 0x3260, .to = 0x327E }, + .{ .from = 0x3280, .to = 0x3289 }, + .{ .from = 0x328A, .to = 0x32B0 }, + .{ .from = 0x32B1, .to = 0x32BF }, + .{ .from = 0x32C0, .to = 0x33FF }, + .{ .from = 0xA69C, .to = 0xA69D }, + .{ .from = 0xA7F1, .to = 0xA7F4 }, + .{ .from = 0xA7F8, .to = 0xA7F9 }, + .{ .from = 0xAB5C, .to = 0xAB5F }, + .{ .from = 0xAC00, .to = 0xD7A3 }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB00, .to = 0xFB06 }, + .{ .from = 0xFB13, .to = 0xFB17 }, + .{ .from = 0xFB1F, .to = 0xFB28 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFBB1 }, + .{ .from = 0xFBD3, .to = 0xFD3D }, + .{ .from = 0xFD50, .to = 0xFD8F }, + .{ .from = 0xFD92, .to = 0xFDC7 }, + .{ .from = 0xFDF0, .to = 0xFDFB }, + .{ .from = 0xFE10, .to = 0xFE16 }, + .{ .from = 0xFE31, .to = 0xFE32 }, + .{ .from = 0xFE33, .to = 0xFE34 }, + .{ .from = 0xFE49, .to = 0xFE4C }, + .{ .from = 0xFE4D, .to = 0xFE4F }, + .{ .from = 0xFE50, .to = 0xFE52 }, + .{ .from = 0xFE54, .to = 0xFE57 }, + .{ .from = 0xFE5F, .to = 0xFE61 }, + .{ .from = 0xFE64, .to = 0xFE66 }, + .{ .from = 0xFE6A, .to = 0xFE6B }, + .{ .from = 0xFE70, .to = 0xFE72 }, + .{ .from = 0xFE76, .to = 0xFEFC }, + .{ .from = 0xFF01, .to = 0xFF03 }, + .{ .from = 0xFF05, .to = 0xFF07 }, + .{ .from = 0xFF0E, .to = 0xFF0F }, + .{ .from = 0xFF10, .to = 0xFF19 }, + .{ .from = 0xFF1A, .to = 0xFF1B }, + .{ .from = 0xFF1C, .to = 0xFF1E }, + .{ .from = 0xFF1F, .to = 0xFF20 }, + .{ .from = 0xFF21, .to = 0xFF3A }, + .{ .from = 0xFF41, .to = 0xFF5A }, + .{ .from = 0xFF64, .to = 0xFF65 }, + .{ .from = 0xFF66, .to = 0xFF6F }, + .{ .from = 0xFF71, .to = 0xFF9D }, + .{ .from = 0xFF9E, .to = 0xFF9F }, + .{ .from = 0xFFA0, .to = 0xFFBE }, + .{ .from = 0xFFC2, .to = 0xFFC7 }, + .{ .from = 0xFFCA, .to = 0xFFCF }, + .{ .from = 0xFFD2, .to = 0xFFD7 }, + .{ .from = 0xFFDA, .to = 0xFFDC }, + .{ .from = 0xFFE0, .to = 0xFFE1 }, + .{ .from = 0xFFE5, .to = 0xFFE6 }, + .{ .from = 0xFFE9, .to = 0xFFEC }, + .{ .from = 0xFFED, .to = 0xFFEE }, + .{ .from = 0x10781, .to = 0x10785 }, + .{ .from = 0x10787, .to = 0x107B0 }, + .{ .from = 0x107B2, .to = 0x107BA }, + .{ .from = 0x1112E, .to = 0x1112F }, + .{ .from = 0x1134B, .to = 0x1134C }, + .{ .from = 0x113C7, .to = 0x113C8 }, + .{ .from = 0x114BB, .to = 0x114BC }, + .{ .from = 0x115BA, .to = 0x115BB }, + .{ .from = 0x16121, .to = 0x16128 }, + .{ .from = 0x16D68, .to = 0x16D6A }, + .{ .from = 0x1CCD6, .to = 0x1CCEF }, + .{ .from = 0x1CCF0, .to = 0x1CCF9 }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x1D400, .to = 0x1D454 }, + .{ .from = 0x1D456, .to = 0x1D49C }, + .{ .from = 0x1D49E, .to = 0x1D49F }, + .{ .from = 0x1D4A5, .to = 0x1D4A6 }, + .{ .from = 0x1D4A9, .to = 0x1D4AC }, + .{ .from = 0x1D4AE, .to = 0x1D4B9 }, + .{ .from = 0x1D4BD, .to = 0x1D4C3 }, + .{ .from = 0x1D4C5, .to = 0x1D505 }, + .{ .from = 0x1D507, .to = 0x1D50A }, + .{ .from = 0x1D50D, .to = 0x1D514 }, + .{ .from = 0x1D516, .to = 0x1D51C }, + .{ .from = 0x1D51E, .to = 0x1D539 }, + .{ .from = 0x1D53B, .to = 0x1D53E }, + .{ .from = 0x1D540, .to = 0x1D544 }, + .{ .from = 0x1D54A, .to = 0x1D550 }, + .{ .from = 0x1D552, .to = 0x1D6A5 }, + .{ .from = 0x1D6A8, .to = 0x1D6C0 }, + .{ .from = 0x1D6C2, .to = 0x1D6DA }, + .{ .from = 0x1D6DC, .to = 0x1D6FA }, + .{ .from = 0x1D6FC, .to = 0x1D714 }, + .{ .from = 0x1D716, .to = 0x1D734 }, + .{ .from = 0x1D736, .to = 0x1D74E }, + .{ .from = 0x1D750, .to = 0x1D76E }, + .{ .from = 0x1D770, .to = 0x1D788 }, + .{ .from = 0x1D78A, .to = 0x1D7A8 }, + .{ .from = 0x1D7AA, .to = 0x1D7C2 }, + .{ .from = 0x1D7C4, .to = 0x1D7CB }, + .{ .from = 0x1D7CE, .to = 0x1D7FF }, + .{ .from = 0x1E030, .to = 0x1E06D }, + .{ .from = 0x1EE00, .to = 0x1EE03 }, + .{ .from = 0x1EE05, .to = 0x1EE1F }, + .{ .from = 0x1EE21, .to = 0x1EE22 }, + .{ .from = 0x1EE29, .to = 0x1EE32 }, + .{ .from = 0x1EE34, .to = 0x1EE37 }, + .{ .from = 0x1EE4D, .to = 0x1EE4F }, + .{ .from = 0x1EE51, .to = 0x1EE52 }, + .{ .from = 0x1EE61, .to = 0x1EE62 }, + .{ .from = 0x1EE67, .to = 0x1EE6A }, + .{ .from = 0x1EE6C, .to = 0x1EE72 }, + .{ .from = 0x1EE74, .to = 0x1EE77 }, + .{ .from = 0x1EE79, .to = 0x1EE7C }, + .{ .from = 0x1EE80, .to = 0x1EE89 }, + .{ .from = 0x1EE8B, .to = 0x1EE9B }, + .{ .from = 0x1EEA1, .to = 0x1EEA3 }, + .{ .from = 0x1EEA5, .to = 0x1EEA9 }, + .{ .from = 0x1EEAB, .to = 0x1EEBB }, + .{ .from = 0x1F100, .to = 0x1F10A }, + .{ .from = 0x1F110, .to = 0x1F12E }, + .{ .from = 0x1F130, .to = 0x1F14F }, + .{ .from = 0x1F16A, .to = 0x1F16C }, + .{ .from = 0x1F200, .to = 0x1F202 }, + .{ .from = 0x1F210, .to = 0x1F23B }, + .{ .from = 0x1F240, .to = 0x1F248 }, + .{ .from = 0x1F250, .to = 0x1F251 }, + .{ .from = 0x1FBF0, .to = 0x1FBF9 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + }; +}; + +pub const nfkc_qc_n = struct { + pub const data = [_]u21{ + 0x00A0, + 0x00A8, + 0x00AA, + 0x00AF, + 0x00B4, + 0x00B5, + 0x00B8, + 0x00B9, + 0x00BA, + 0x0149, + 0x017F, + 0x0374, + 0x037A, + 0x037E, + 0x0387, + 0x03F9, + 0x0587, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0E33, + 0x0EB3, + 0x0F0C, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x10FC, + 0x1D78, + 0x1F71, + 0x1F73, + 0x1F75, + 0x1F77, + 0x1F79, + 0x1F7B, + 0x1F7D, + 0x1FBB, + 0x1FBD, + 0x1FBE, + 0x1FC9, + 0x1FCB, + 0x1FD3, + 0x1FDB, + 0x1FE3, + 0x1FEB, + 0x1FF9, + 0x1FFB, + 0x2011, + 0x2017, + 0x202F, + 0x203C, + 0x203E, + 0x2057, + 0x205F, + 0x2070, + 0x2071, + 0x207D, + 0x207E, + 0x207F, + 0x208D, + 0x208E, + 0x20A8, + 0x2102, + 0x2103, + 0x2107, + 0x2109, + 0x2115, + 0x2116, + 0x2124, + 0x2126, + 0x2128, + 0x2139, + 0x213B, + 0x2140, + 0x2189, + 0x2329, + 0x232A, + 0x24EA, + 0x2A0C, + 0x2ADC, + 0x2D6F, + 0x2E9F, + 0x2EF3, + 0x3000, + 0x3036, + 0x309F, + 0x30FF, + 0x3250, + 0xA770, + 0xAB69, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB29, + 0xFB3E, + 0xFDFC, + 0xFE17, + 0xFE18, + 0xFE19, + 0xFE30, + 0xFE35, + 0xFE36, + 0xFE37, + 0xFE38, + 0xFE39, + 0xFE3A, + 0xFE3B, + 0xFE3C, + 0xFE3D, + 0xFE3E, + 0xFE3F, + 0xFE40, + 0xFE41, + 0xFE42, + 0xFE43, + 0xFE44, + 0xFE47, + 0xFE48, + 0xFE58, + 0xFE59, + 0xFE5A, + 0xFE5B, + 0xFE5C, + 0xFE5D, + 0xFE5E, + 0xFE62, + 0xFE63, + 0xFE68, + 0xFE69, + 0xFE74, + 0xFF04, + 0xFF08, + 0xFF09, + 0xFF0A, + 0xFF0B, + 0xFF0C, + 0xFF0D, + 0xFF3B, + 0xFF3C, + 0xFF3D, + 0xFF3E, + 0xFF3F, + 0xFF40, + 0xFF5B, + 0xFF5C, + 0xFF5D, + 0xFF5E, + 0xFF5F, + 0xFF60, + 0xFF61, + 0xFF62, + 0xFF63, + 0xFF70, + 0xFFE2, + 0xFFE3, + 0xFFE4, + 0xFFE8, + 0x1D4A2, + 0x1D4BB, + 0x1D546, + 0x1D6C1, + 0x1D6DB, + 0x1D6FB, + 0x1D715, + 0x1D735, + 0x1D74F, + 0x1D76F, + 0x1D789, + 0x1D7A9, + 0x1D7C3, + 0x1EE24, + 0x1EE27, + 0x1EE39, + 0x1EE3B, + 0x1EE42, + 0x1EE47, + 0x1EE49, + 0x1EE4B, + 0x1EE54, + 0x1EE57, + 0x1EE59, + 0x1EE5B, + 0x1EE5D, + 0x1EE5F, + 0x1EE64, + 0x1EE7E, + 0x1F190, + }; + pub const data_range = [_]Range{ + .{ .from = 0x00B2, .to = 0x00B3 }, + .{ .from = 0x00BC, .to = 0x00BE }, + .{ .from = 0x0132, .to = 0x0133 }, + .{ .from = 0x013F, .to = 0x0140 }, + .{ .from = 0x01C4, .to = 0x01CC }, + .{ .from = 0x01F1, .to = 0x01F3 }, + .{ .from = 0x02B0, .to = 0x02B8 }, + .{ .from = 0x02D8, .to = 0x02DD }, + .{ .from = 0x02E0, .to = 0x02E4 }, + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0344 }, + .{ .from = 0x0384, .to = 0x0385 }, + .{ .from = 0x03D0, .to = 0x03D6 }, + .{ .from = 0x03F0, .to = 0x03F2 }, + .{ .from = 0x03F4, .to = 0x03F5 }, + .{ .from = 0x0675, .to = 0x0678 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0EDC, .to = 0x0EDD }, + .{ .from = 0x0F75, .to = 0x0F79 }, + .{ .from = 0x1D2C, .to = 0x1D2E }, + .{ .from = 0x1D30, .to = 0x1D3A }, + .{ .from = 0x1D3C, .to = 0x1D4D }, + .{ .from = 0x1D4F, .to = 0x1D6A }, + .{ .from = 0x1D9B, .to = 0x1DBF }, + .{ .from = 0x1E9A, .to = 0x1E9B }, + .{ .from = 0x1FBF, .to = 0x1FC1 }, + .{ .from = 0x1FCD, .to = 0x1FCF }, + .{ .from = 0x1FDD, .to = 0x1FDF }, + .{ .from = 0x1FED, .to = 0x1FEF }, + .{ .from = 0x1FFD, .to = 0x1FFE }, + .{ .from = 0x2000, .to = 0x200A }, + .{ .from = 0x2024, .to = 0x2026 }, + .{ .from = 0x2033, .to = 0x2034 }, + .{ .from = 0x2036, .to = 0x2037 }, + .{ .from = 0x2047, .to = 0x2049 }, + .{ .from = 0x2074, .to = 0x2079 }, + .{ .from = 0x207A, .to = 0x207C }, + .{ .from = 0x2080, .to = 0x2089 }, + .{ .from = 0x208A, .to = 0x208C }, + .{ .from = 0x2090, .to = 0x209C }, + .{ .from = 0x2100, .to = 0x2101 }, + .{ .from = 0x2105, .to = 0x2106 }, + .{ .from = 0x210A, .to = 0x2113 }, + .{ .from = 0x2119, .to = 0x211D }, + .{ .from = 0x2120, .to = 0x2122 }, + .{ .from = 0x212A, .to = 0x212D }, + .{ .from = 0x212F, .to = 0x2131 }, + .{ .from = 0x2133, .to = 0x2134 }, + .{ .from = 0x2135, .to = 0x2138 }, + .{ .from = 0x213C, .to = 0x213F }, + .{ .from = 0x2145, .to = 0x2149 }, + .{ .from = 0x2150, .to = 0x215F }, + .{ .from = 0x2160, .to = 0x217F }, + .{ .from = 0x222C, .to = 0x222D }, + .{ .from = 0x222F, .to = 0x2230 }, + .{ .from = 0x2460, .to = 0x249B }, + .{ .from = 0x249C, .to = 0x24E9 }, + .{ .from = 0x2A74, .to = 0x2A76 }, + .{ .from = 0x2C7C, .to = 0x2C7D }, + .{ .from = 0x2F00, .to = 0x2FD5 }, + .{ .from = 0x3038, .to = 0x303A }, + .{ .from = 0x309B, .to = 0x309C }, + .{ .from = 0x3131, .to = 0x318E }, + .{ .from = 0x3192, .to = 0x3195 }, + .{ .from = 0x3196, .to = 0x319F }, + .{ .from = 0x3200, .to = 0x321E }, + .{ .from = 0x3220, .to = 0x3229 }, + .{ .from = 0x322A, .to = 0x3247 }, + .{ .from = 0x3251, .to = 0x325F }, + .{ .from = 0x3260, .to = 0x327E }, + .{ .from = 0x3280, .to = 0x3289 }, + .{ .from = 0x328A, .to = 0x32B0 }, + .{ .from = 0x32B1, .to = 0x32BF }, + .{ .from = 0x32C0, .to = 0x33FF }, + .{ .from = 0xA69C, .to = 0xA69D }, + .{ .from = 0xA7F1, .to = 0xA7F4 }, + .{ .from = 0xA7F8, .to = 0xA7F9 }, + .{ .from = 0xAB5C, .to = 0xAB5F }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB00, .to = 0xFB06 }, + .{ .from = 0xFB13, .to = 0xFB17 }, + .{ .from = 0xFB1F, .to = 0xFB28 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFBB1 }, + .{ .from = 0xFBD3, .to = 0xFD3D }, + .{ .from = 0xFD50, .to = 0xFD8F }, + .{ .from = 0xFD92, .to = 0xFDC7 }, + .{ .from = 0xFDF0, .to = 0xFDFB }, + .{ .from = 0xFE10, .to = 0xFE16 }, + .{ .from = 0xFE31, .to = 0xFE32 }, + .{ .from = 0xFE33, .to = 0xFE34 }, + .{ .from = 0xFE49, .to = 0xFE4C }, + .{ .from = 0xFE4D, .to = 0xFE4F }, + .{ .from = 0xFE50, .to = 0xFE52 }, + .{ .from = 0xFE54, .to = 0xFE57 }, + .{ .from = 0xFE5F, .to = 0xFE61 }, + .{ .from = 0xFE64, .to = 0xFE66 }, + .{ .from = 0xFE6A, .to = 0xFE6B }, + .{ .from = 0xFE70, .to = 0xFE72 }, + .{ .from = 0xFE76, .to = 0xFEFC }, + .{ .from = 0xFF01, .to = 0xFF03 }, + .{ .from = 0xFF05, .to = 0xFF07 }, + .{ .from = 0xFF0E, .to = 0xFF0F }, + .{ .from = 0xFF10, .to = 0xFF19 }, + .{ .from = 0xFF1A, .to = 0xFF1B }, + .{ .from = 0xFF1C, .to = 0xFF1E }, + .{ .from = 0xFF1F, .to = 0xFF20 }, + .{ .from = 0xFF21, .to = 0xFF3A }, + .{ .from = 0xFF41, .to = 0xFF5A }, + .{ .from = 0xFF64, .to = 0xFF65 }, + .{ .from = 0xFF66, .to = 0xFF6F }, + .{ .from = 0xFF71, .to = 0xFF9D }, + .{ .from = 0xFF9E, .to = 0xFF9F }, + .{ .from = 0xFFA0, .to = 0xFFBE }, + .{ .from = 0xFFC2, .to = 0xFFC7 }, + .{ .from = 0xFFCA, .to = 0xFFCF }, + .{ .from = 0xFFD2, .to = 0xFFD7 }, + .{ .from = 0xFFDA, .to = 0xFFDC }, + .{ .from = 0xFFE0, .to = 0xFFE1 }, + .{ .from = 0xFFE5, .to = 0xFFE6 }, + .{ .from = 0xFFE9, .to = 0xFFEC }, + .{ .from = 0xFFED, .to = 0xFFEE }, + .{ .from = 0x10781, .to = 0x10785 }, + .{ .from = 0x10787, .to = 0x107B0 }, + .{ .from = 0x107B2, .to = 0x107BA }, + .{ .from = 0x1CCD6, .to = 0x1CCEF }, + .{ .from = 0x1CCF0, .to = 0x1CCF9 }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x1D400, .to = 0x1D454 }, + .{ .from = 0x1D456, .to = 0x1D49C }, + .{ .from = 0x1D49E, .to = 0x1D49F }, + .{ .from = 0x1D4A5, .to = 0x1D4A6 }, + .{ .from = 0x1D4A9, .to = 0x1D4AC }, + .{ .from = 0x1D4AE, .to = 0x1D4B9 }, + .{ .from = 0x1D4BD, .to = 0x1D4C3 }, + .{ .from = 0x1D4C5, .to = 0x1D505 }, + .{ .from = 0x1D507, .to = 0x1D50A }, + .{ .from = 0x1D50D, .to = 0x1D514 }, + .{ .from = 0x1D516, .to = 0x1D51C }, + .{ .from = 0x1D51E, .to = 0x1D539 }, + .{ .from = 0x1D53B, .to = 0x1D53E }, + .{ .from = 0x1D540, .to = 0x1D544 }, + .{ .from = 0x1D54A, .to = 0x1D550 }, + .{ .from = 0x1D552, .to = 0x1D6A5 }, + .{ .from = 0x1D6A8, .to = 0x1D6C0 }, + .{ .from = 0x1D6C2, .to = 0x1D6DA }, + .{ .from = 0x1D6DC, .to = 0x1D6FA }, + .{ .from = 0x1D6FC, .to = 0x1D714 }, + .{ .from = 0x1D716, .to = 0x1D734 }, + .{ .from = 0x1D736, .to = 0x1D74E }, + .{ .from = 0x1D750, .to = 0x1D76E }, + .{ .from = 0x1D770, .to = 0x1D788 }, + .{ .from = 0x1D78A, .to = 0x1D7A8 }, + .{ .from = 0x1D7AA, .to = 0x1D7C2 }, + .{ .from = 0x1D7C4, .to = 0x1D7CB }, + .{ .from = 0x1D7CE, .to = 0x1D7FF }, + .{ .from = 0x1E030, .to = 0x1E06D }, + .{ .from = 0x1EE00, .to = 0x1EE03 }, + .{ .from = 0x1EE05, .to = 0x1EE1F }, + .{ .from = 0x1EE21, .to = 0x1EE22 }, + .{ .from = 0x1EE29, .to = 0x1EE32 }, + .{ .from = 0x1EE34, .to = 0x1EE37 }, + .{ .from = 0x1EE4D, .to = 0x1EE4F }, + .{ .from = 0x1EE51, .to = 0x1EE52 }, + .{ .from = 0x1EE61, .to = 0x1EE62 }, + .{ .from = 0x1EE67, .to = 0x1EE6A }, + .{ .from = 0x1EE6C, .to = 0x1EE72 }, + .{ .from = 0x1EE74, .to = 0x1EE77 }, + .{ .from = 0x1EE79, .to = 0x1EE7C }, + .{ .from = 0x1EE80, .to = 0x1EE89 }, + .{ .from = 0x1EE8B, .to = 0x1EE9B }, + .{ .from = 0x1EEA1, .to = 0x1EEA3 }, + .{ .from = 0x1EEA5, .to = 0x1EEA9 }, + .{ .from = 0x1EEAB, .to = 0x1EEBB }, + .{ .from = 0x1F100, .to = 0x1F10A }, + .{ .from = 0x1F110, .to = 0x1F12E }, + .{ .from = 0x1F130, .to = 0x1F14F }, + .{ .from = 0x1F16A, .to = 0x1F16C }, + .{ .from = 0x1F200, .to = 0x1F202 }, + .{ .from = 0x1F210, .to = 0x1F23B }, + .{ .from = 0x1F240, .to = 0x1F248 }, + .{ .from = 0x1F250, .to = 0x1F251 }, + .{ .from = 0x1FBF0, .to = 0x1FBF9 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + }; +}; + +pub const nfkc_qc_m = struct { + pub const data = [_]u21{ + 0x030F, + 0x0311, + 0x031B, + 0x0338, + 0x0342, + 0x0345, + 0x093C, + 0x09BE, + 0x09D7, + 0x0B3E, + 0x0B56, + 0x0B57, + 0x0BBE, + 0x0BD7, + 0x0C56, + 0x0CC2, + 0x0D3E, + 0x0D57, + 0x0DCA, + 0x0DCF, + 0x0DDF, + 0x102E, + 0x1B35, + 0x110BA, + 0x11127, + 0x1133E, + 0x11357, + 0x113B8, + 0x113BB, + 0x113C2, + 0x113C5, + 0x114B0, + 0x114BA, + 0x114BD, + 0x115AF, + 0x11930, + }; + pub const data_range = [_]Range{ + .{ .from = 0x0300, .to = 0x0304 }, + .{ .from = 0x0306, .to = 0x030C }, + .{ .from = 0x0313, .to = 0x0314 }, + .{ .from = 0x0323, .to = 0x0328 }, + .{ .from = 0x032D, .to = 0x032E }, + .{ .from = 0x0330, .to = 0x0331 }, + .{ .from = 0x0653, .to = 0x0655 }, + .{ .from = 0x0CD5, .to = 0x0CD6 }, + .{ .from = 0x1161, .to = 0x1175 }, + .{ .from = 0x11A8, .to = 0x11C2 }, + .{ .from = 0x3099, .to = 0x309A }, + .{ .from = 0x113C7, .to = 0x113C9 }, + .{ .from = 0x1611E, .to = 0x16129 }, + .{ .from = 0x16D67, .to = 0x16D68 }, + }; +}; + +pub const changes_when_nfc_casefolded = struct { + pub const data = [_]u21{ + 0x00A0, + 0x00A8, + 0x00AA, + 0x00AD, + 0x00AF, + 0x00B4, + 0x00B5, + 0x00B8, + 0x00B9, + 0x00BA, + 0x0100, + 0x0102, + 0x0104, + 0x0106, + 0x0108, + 0x010A, + 0x010C, + 0x010E, + 0x0110, + 0x0112, + 0x0114, + 0x0116, + 0x0118, + 0x011A, + 0x011C, + 0x011E, + 0x0120, + 0x0122, + 0x0124, + 0x0126, + 0x0128, + 0x012A, + 0x012C, + 0x012E, + 0x0130, + 0x0136, + 0x0139, + 0x013B, + 0x013D, + 0x0143, + 0x0145, + 0x0147, + 0x014C, + 0x014E, + 0x0150, + 0x0152, + 0x0154, + 0x0156, + 0x0158, + 0x015A, + 0x015C, + 0x015E, + 0x0160, + 0x0162, + 0x0164, + 0x0166, + 0x0168, + 0x016A, + 0x016C, + 0x016E, + 0x0170, + 0x0172, + 0x0174, + 0x0176, + 0x017B, + 0x017D, + 0x017F, + 0x0184, + 0x01A2, + 0x01A4, + 0x01A9, + 0x01AC, + 0x01B5, + 0x01BC, + 0x01CF, + 0x01D1, + 0x01D3, + 0x01D5, + 0x01D7, + 0x01D9, + 0x01DB, + 0x01DE, + 0x01E0, + 0x01E2, + 0x01E4, + 0x01E6, + 0x01E8, + 0x01EA, + 0x01EC, + 0x01EE, + 0x01FA, + 0x01FC, + 0x01FE, + 0x0200, + 0x0202, + 0x0204, + 0x0206, + 0x0208, + 0x020A, + 0x020C, + 0x020E, + 0x0210, + 0x0212, + 0x0214, + 0x0216, + 0x0218, + 0x021A, + 0x021C, + 0x021E, + 0x0220, + 0x0222, + 0x0224, + 0x0226, + 0x0228, + 0x022A, + 0x022C, + 0x022E, + 0x0230, + 0x0232, + 0x0241, + 0x0248, + 0x024A, + 0x024C, + 0x024E, + 0x034F, + 0x0370, + 0x0372, + 0x0374, + 0x0376, + 0x037A, + 0x037E, + 0x037F, + 0x0386, + 0x0387, + 0x038C, + 0x03C2, + 0x03D8, + 0x03DA, + 0x03DC, + 0x03DE, + 0x03E0, + 0x03E2, + 0x03E4, + 0x03E6, + 0x03E8, + 0x03EA, + 0x03EC, + 0x03EE, + 0x03F7, + 0x0460, + 0x0462, + 0x0464, + 0x0466, + 0x0468, + 0x046A, + 0x046C, + 0x046E, + 0x0470, + 0x0472, + 0x0474, + 0x0476, + 0x0478, + 0x047A, + 0x047C, + 0x047E, + 0x0480, + 0x048A, + 0x048C, + 0x048E, + 0x0490, + 0x0492, + 0x0494, + 0x0496, + 0x0498, + 0x049A, + 0x049C, + 0x049E, + 0x04A0, + 0x04A2, + 0x04A4, + 0x04A6, + 0x04A8, + 0x04AA, + 0x04AC, + 0x04AE, + 0x04B0, + 0x04B2, + 0x04B4, + 0x04B6, + 0x04B8, + 0x04BA, + 0x04BC, + 0x04BE, + 0x04C3, + 0x04C5, + 0x04C7, + 0x04C9, + 0x04CB, + 0x04CD, + 0x04D0, + 0x04D2, + 0x04D4, + 0x04D6, + 0x04D8, + 0x04DA, + 0x04DC, + 0x04DE, + 0x04E0, + 0x04E2, + 0x04E4, + 0x04E6, + 0x04E8, + 0x04EA, + 0x04EC, + 0x04EE, + 0x04F0, + 0x04F2, + 0x04F4, + 0x04F6, + 0x04F8, + 0x04FA, + 0x04FC, + 0x04FE, + 0x0500, + 0x0502, + 0x0504, + 0x0506, + 0x0508, + 0x050A, + 0x050C, + 0x050E, + 0x0510, + 0x0512, + 0x0514, + 0x0516, + 0x0518, + 0x051A, + 0x051C, + 0x051E, + 0x0520, + 0x0522, + 0x0524, + 0x0526, + 0x0528, + 0x052A, + 0x052C, + 0x052E, + 0x0587, + 0x061C, + 0x09DF, + 0x0A33, + 0x0A36, + 0x0A5E, + 0x0E33, + 0x0EB3, + 0x0F0C, + 0x0F43, + 0x0F4D, + 0x0F52, + 0x0F57, + 0x0F5C, + 0x0F69, + 0x0F73, + 0x0F81, + 0x0F93, + 0x0F9D, + 0x0FA2, + 0x0FA7, + 0x0FAC, + 0x0FB9, + 0x10C7, + 0x10CD, + 0x10FC, + 0x180E, + 0x180F, + 0x1D78, + 0x1E00, + 0x1E02, + 0x1E04, + 0x1E06, + 0x1E08, + 0x1E0A, + 0x1E0C, + 0x1E0E, + 0x1E10, + 0x1E12, + 0x1E14, + 0x1E16, + 0x1E18, + 0x1E1A, + 0x1E1C, + 0x1E1E, + 0x1E20, + 0x1E22, + 0x1E24, + 0x1E26, + 0x1E28, + 0x1E2A, + 0x1E2C, + 0x1E2E, + 0x1E30, + 0x1E32, + 0x1E34, + 0x1E36, + 0x1E38, + 0x1E3A, + 0x1E3C, + 0x1E3E, + 0x1E40, + 0x1E42, + 0x1E44, + 0x1E46, + 0x1E48, + 0x1E4A, + 0x1E4C, + 0x1E4E, + 0x1E50, + 0x1E52, + 0x1E54, + 0x1E56, + 0x1E58, + 0x1E5A, + 0x1E5C, + 0x1E5E, + 0x1E60, + 0x1E62, + 0x1E64, + 0x1E66, + 0x1E68, + 0x1E6A, + 0x1E6C, + 0x1E6E, + 0x1E70, + 0x1E72, + 0x1E74, + 0x1E76, + 0x1E78, + 0x1E7A, + 0x1E7C, + 0x1E7E, + 0x1E80, + 0x1E82, + 0x1E84, + 0x1E86, + 0x1E88, + 0x1E8A, + 0x1E8C, + 0x1E8E, + 0x1E90, + 0x1E92, + 0x1E94, + 0x1E9E, + 0x1EA0, + 0x1EA2, + 0x1EA4, + 0x1EA6, + 0x1EA8, + 0x1EAA, + 0x1EAC, + 0x1EAE, + 0x1EB0, + 0x1EB2, + 0x1EB4, + 0x1EB6, + 0x1EB8, + 0x1EBA, + 0x1EBC, + 0x1EBE, + 0x1EC0, + 0x1EC2, + 0x1EC4, + 0x1EC6, + 0x1EC8, + 0x1ECA, + 0x1ECC, + 0x1ECE, + 0x1ED0, + 0x1ED2, + 0x1ED4, + 0x1ED6, + 0x1ED8, + 0x1EDA, + 0x1EDC, + 0x1EDE, + 0x1EE0, + 0x1EE2, + 0x1EE4, + 0x1EE6, + 0x1EE8, + 0x1EEA, + 0x1EEC, + 0x1EEE, + 0x1EF0, + 0x1EF2, + 0x1EF4, + 0x1EF6, + 0x1EF8, + 0x1EFA, + 0x1EFC, + 0x1EFE, + 0x1F59, + 0x1F5B, + 0x1F5D, + 0x1F5F, + 0x1F71, + 0x1F73, + 0x1F75, + 0x1F77, + 0x1F79, + 0x1F7B, + 0x1F7D, + 0x1FBD, + 0x1FBE, + 0x1FD3, + 0x1FE3, + 0x2011, + 0x2017, + 0x202F, + 0x203C, + 0x203E, + 0x2057, + 0x205F, + 0x2065, + 0x2070, + 0x2071, + 0x207D, + 0x207E, + 0x207F, + 0x208D, + 0x208E, + 0x20A8, + 0x2102, + 0x2103, + 0x2107, + 0x2109, + 0x2115, + 0x2116, + 0x2124, + 0x2126, + 0x2128, + 0x2139, + 0x213B, + 0x2140, + 0x2183, + 0x2189, + 0x2329, + 0x232A, + 0x24EA, + 0x2A0C, + 0x2ADC, + 0x2C60, + 0x2C67, + 0x2C69, + 0x2C6B, + 0x2C72, + 0x2C75, + 0x2C82, + 0x2C84, + 0x2C86, + 0x2C88, + 0x2C8A, + 0x2C8C, + 0x2C8E, + 0x2C90, + 0x2C92, + 0x2C94, + 0x2C96, + 0x2C98, + 0x2C9A, + 0x2C9C, + 0x2C9E, + 0x2CA0, + 0x2CA2, + 0x2CA4, + 0x2CA6, + 0x2CA8, + 0x2CAA, + 0x2CAC, + 0x2CAE, + 0x2CB0, + 0x2CB2, + 0x2CB4, + 0x2CB6, + 0x2CB8, + 0x2CBA, + 0x2CBC, + 0x2CBE, + 0x2CC0, + 0x2CC2, + 0x2CC4, + 0x2CC6, + 0x2CC8, + 0x2CCA, + 0x2CCC, + 0x2CCE, + 0x2CD0, + 0x2CD2, + 0x2CD4, + 0x2CD6, + 0x2CD8, + 0x2CDA, + 0x2CDC, + 0x2CDE, + 0x2CE0, + 0x2CE2, + 0x2CEB, + 0x2CED, + 0x2CF2, + 0x2D6F, + 0x2E9F, + 0x2EF3, + 0x3000, + 0x3036, + 0x309F, + 0x30FF, + 0x3250, + 0xA640, + 0xA642, + 0xA644, + 0xA646, + 0xA648, + 0xA64A, + 0xA64C, + 0xA64E, + 0xA650, + 0xA652, + 0xA654, + 0xA656, + 0xA658, + 0xA65A, + 0xA65C, + 0xA65E, + 0xA660, + 0xA662, + 0xA664, + 0xA666, + 0xA668, + 0xA66A, + 0xA66C, + 0xA680, + 0xA682, + 0xA684, + 0xA686, + 0xA688, + 0xA68A, + 0xA68C, + 0xA68E, + 0xA690, + 0xA692, + 0xA694, + 0xA696, + 0xA698, + 0xA69A, + 0xA722, + 0xA724, + 0xA726, + 0xA728, + 0xA72A, + 0xA72C, + 0xA72E, + 0xA732, + 0xA734, + 0xA736, + 0xA738, + 0xA73A, + 0xA73C, + 0xA73E, + 0xA740, + 0xA742, + 0xA744, + 0xA746, + 0xA748, + 0xA74A, + 0xA74C, + 0xA74E, + 0xA750, + 0xA752, + 0xA754, + 0xA756, + 0xA758, + 0xA75A, + 0xA75C, + 0xA75E, + 0xA760, + 0xA762, + 0xA764, + 0xA766, + 0xA768, + 0xA76A, + 0xA76C, + 0xA76E, + 0xA770, + 0xA779, + 0xA77B, + 0xA780, + 0xA782, + 0xA784, + 0xA786, + 0xA78B, + 0xA78D, + 0xA790, + 0xA792, + 0xA796, + 0xA798, + 0xA79A, + 0xA79C, + 0xA79E, + 0xA7A0, + 0xA7A2, + 0xA7A4, + 0xA7A6, + 0xA7A8, + 0xA7B6, + 0xA7B8, + 0xA7BA, + 0xA7BC, + 0xA7BE, + 0xA7C0, + 0xA7C2, + 0xA7C9, + 0xA7CE, + 0xA7D0, + 0xA7D2, + 0xA7D4, + 0xA7D6, + 0xA7D8, + 0xA7DA, + 0xA7DC, + 0xA7F5, + 0xAB69, + 0xFA10, + 0xFA12, + 0xFA20, + 0xFA22, + 0xFB1D, + 0xFB29, + 0xFB3E, + 0xFDFC, + 0xFE17, + 0xFE18, + 0xFE19, + 0xFE30, + 0xFE35, + 0xFE36, + 0xFE37, + 0xFE38, + 0xFE39, + 0xFE3A, + 0xFE3B, + 0xFE3C, + 0xFE3D, + 0xFE3E, + 0xFE3F, + 0xFE40, + 0xFE41, + 0xFE42, + 0xFE43, + 0xFE44, + 0xFE47, + 0xFE48, + 0xFE58, + 0xFE59, + 0xFE5A, + 0xFE5B, + 0xFE5C, + 0xFE5D, + 0xFE5E, + 0xFE62, + 0xFE63, + 0xFE68, + 0xFE69, + 0xFE74, + 0xFEFF, + 0xFF04, + 0xFF08, + 0xFF09, + 0xFF0A, + 0xFF0B, + 0xFF0C, + 0xFF0D, + 0xFF3B, + 0xFF3C, + 0xFF3D, + 0xFF3E, + 0xFF3F, + 0xFF40, + 0xFF5B, + 0xFF5C, + 0xFF5D, + 0xFF5E, + 0xFF5F, + 0xFF60, + 0xFF61, + 0xFF62, + 0xFF63, + 0xFF70, + 0xFFE2, + 0xFFE3, + 0xFFE4, + 0xFFE8, + 0x1D4A2, + 0x1D4BB, + 0x1D546, + 0x1D6C1, + 0x1D6DB, + 0x1D6FB, + 0x1D715, + 0x1D735, + 0x1D74F, + 0x1D76F, + 0x1D789, + 0x1D7A9, + 0x1D7C3, + 0x1EE24, + 0x1EE27, + 0x1EE39, + 0x1EE3B, + 0x1EE42, + 0x1EE47, + 0x1EE49, + 0x1EE4B, + 0x1EE54, + 0x1EE57, + 0x1EE59, + 0x1EE5B, + 0x1EE5D, + 0x1EE5F, + 0x1EE64, + 0x1EE7E, + 0x1F190, + 0xE0000, + 0xE0001, + }; + pub const data_range = [_]Range{ + .{ .from = 0x0041, .to = 0x005A }, + .{ .from = 0x00B2, .to = 0x00B3 }, + .{ .from = 0x00BC, .to = 0x00BE }, + .{ .from = 0x00C0, .to = 0x00D6 }, + .{ .from = 0x00D8, .to = 0x00DF }, + .{ .from = 0x0132, .to = 0x0134 }, + .{ .from = 0x013F, .to = 0x0141 }, + .{ .from = 0x0149, .to = 0x014A }, + .{ .from = 0x0178, .to = 0x0179 }, + .{ .from = 0x0181, .to = 0x0182 }, + .{ .from = 0x0186, .to = 0x0187 }, + .{ .from = 0x0189, .to = 0x018B }, + .{ .from = 0x018E, .to = 0x0191 }, + .{ .from = 0x0193, .to = 0x0194 }, + .{ .from = 0x0196, .to = 0x0198 }, + .{ .from = 0x019C, .to = 0x019D }, + .{ .from = 0x019F, .to = 0x01A0 }, + .{ .from = 0x01A6, .to = 0x01A7 }, + .{ .from = 0x01AE, .to = 0x01AF }, + .{ .from = 0x01B1, .to = 0x01B3 }, + .{ .from = 0x01B7, .to = 0x01B8 }, + .{ .from = 0x01C4, .to = 0x01CD }, + .{ .from = 0x01F1, .to = 0x01F4 }, + .{ .from = 0x01F6, .to = 0x01F8 }, + .{ .from = 0x023A, .to = 0x023B }, + .{ .from = 0x023D, .to = 0x023E }, + .{ .from = 0x0243, .to = 0x0246 }, + .{ .from = 0x02B0, .to = 0x02B8 }, + .{ .from = 0x02D8, .to = 0x02DD }, + .{ .from = 0x02E0, .to = 0x02E4 }, + .{ .from = 0x0340, .to = 0x0341 }, + .{ .from = 0x0343, .to = 0x0345 }, + .{ .from = 0x0384, .to = 0x0385 }, + .{ .from = 0x0388, .to = 0x038A }, + .{ .from = 0x038E, .to = 0x038F }, + .{ .from = 0x0391, .to = 0x03A1 }, + .{ .from = 0x03A3, .to = 0x03AB }, + .{ .from = 0x03CF, .to = 0x03D6 }, + .{ .from = 0x03F0, .to = 0x03F2 }, + .{ .from = 0x03F4, .to = 0x03F5 }, + .{ .from = 0x03F9, .to = 0x03FA }, + .{ .from = 0x03FD, .to = 0x042F }, + .{ .from = 0x04C0, .to = 0x04C1 }, + .{ .from = 0x0531, .to = 0x0556 }, + .{ .from = 0x0675, .to = 0x0678 }, + .{ .from = 0x0958, .to = 0x095F }, + .{ .from = 0x09DC, .to = 0x09DD }, + .{ .from = 0x0A59, .to = 0x0A5B }, + .{ .from = 0x0B5C, .to = 0x0B5D }, + .{ .from = 0x0EDC, .to = 0x0EDD }, + .{ .from = 0x0F75, .to = 0x0F79 }, + .{ .from = 0x10A0, .to = 0x10C5 }, + .{ .from = 0x115F, .to = 0x1160 }, + .{ .from = 0x13F8, .to = 0x13FD }, + .{ .from = 0x17B4, .to = 0x17B5 }, + .{ .from = 0x180B, .to = 0x180D }, + .{ .from = 0x1C80, .to = 0x1C89 }, + .{ .from = 0x1C90, .to = 0x1CBA }, + .{ .from = 0x1CBD, .to = 0x1CBF }, + .{ .from = 0x1D2C, .to = 0x1D2E }, + .{ .from = 0x1D30, .to = 0x1D3A }, + .{ .from = 0x1D3C, .to = 0x1D4D }, + .{ .from = 0x1D4F, .to = 0x1D6A }, + .{ .from = 0x1D9B, .to = 0x1DBF }, + .{ .from = 0x1E9A, .to = 0x1E9B }, + .{ .from = 0x1F08, .to = 0x1F0F }, + .{ .from = 0x1F18, .to = 0x1F1D }, + .{ .from = 0x1F28, .to = 0x1F2F }, + .{ .from = 0x1F38, .to = 0x1F3F }, + .{ .from = 0x1F48, .to = 0x1F4D }, + .{ .from = 0x1F68, .to = 0x1F6F }, + .{ .from = 0x1F80, .to = 0x1FAF }, + .{ .from = 0x1FB2, .to = 0x1FB4 }, + .{ .from = 0x1FB7, .to = 0x1FBC }, + .{ .from = 0x1FBF, .to = 0x1FC1 }, + .{ .from = 0x1FC2, .to = 0x1FC4 }, + .{ .from = 0x1FC7, .to = 0x1FCC }, + .{ .from = 0x1FCD, .to = 0x1FCF }, + .{ .from = 0x1FD8, .to = 0x1FDB }, + .{ .from = 0x1FDD, .to = 0x1FDF }, + .{ .from = 0x1FE8, .to = 0x1FEC }, + .{ .from = 0x1FED, .to = 0x1FEF }, + .{ .from = 0x1FF2, .to = 0x1FF4 }, + .{ .from = 0x1FF7, .to = 0x1FFC }, + .{ .from = 0x1FFD, .to = 0x1FFE }, + .{ .from = 0x2000, .to = 0x200A }, + .{ .from = 0x200B, .to = 0x200F }, + .{ .from = 0x2024, .to = 0x2026 }, + .{ .from = 0x202A, .to = 0x202E }, + .{ .from = 0x2033, .to = 0x2034 }, + .{ .from = 0x2036, .to = 0x2037 }, + .{ .from = 0x2047, .to = 0x2049 }, + .{ .from = 0x2060, .to = 0x2064 }, + .{ .from = 0x2066, .to = 0x206F }, + .{ .from = 0x2074, .to = 0x2079 }, + .{ .from = 0x207A, .to = 0x207C }, + .{ .from = 0x2080, .to = 0x2089 }, + .{ .from = 0x208A, .to = 0x208C }, + .{ .from = 0x2090, .to = 0x209C }, + .{ .from = 0x2100, .to = 0x2101 }, + .{ .from = 0x2105, .to = 0x2106 }, + .{ .from = 0x210A, .to = 0x2113 }, + .{ .from = 0x2119, .to = 0x211D }, + .{ .from = 0x2120, .to = 0x2122 }, + .{ .from = 0x212A, .to = 0x212D }, + .{ .from = 0x212F, .to = 0x2134 }, + .{ .from = 0x2135, .to = 0x2138 }, + .{ .from = 0x213C, .to = 0x213F }, + .{ .from = 0x2145, .to = 0x2149 }, + .{ .from = 0x2150, .to = 0x215F }, + .{ .from = 0x2160, .to = 0x217F }, + .{ .from = 0x222C, .to = 0x222D }, + .{ .from = 0x222F, .to = 0x2230 }, + .{ .from = 0x2460, .to = 0x249B }, + .{ .from = 0x249C, .to = 0x24E9 }, + .{ .from = 0x2A74, .to = 0x2A76 }, + .{ .from = 0x2C00, .to = 0x2C2F }, + .{ .from = 0x2C62, .to = 0x2C64 }, + .{ .from = 0x2C6D, .to = 0x2C70 }, + .{ .from = 0x2C7C, .to = 0x2C7D }, + .{ .from = 0x2C7E, .to = 0x2C80 }, + .{ .from = 0x2F00, .to = 0x2FD5 }, + .{ .from = 0x3038, .to = 0x303A }, + .{ .from = 0x309B, .to = 0x309C }, + .{ .from = 0x3131, .to = 0x318E }, + .{ .from = 0x3192, .to = 0x3195 }, + .{ .from = 0x3196, .to = 0x319F }, + .{ .from = 0x3200, .to = 0x321E }, + .{ .from = 0x3220, .to = 0x3229 }, + .{ .from = 0x322A, .to = 0x3247 }, + .{ .from = 0x3251, .to = 0x325F }, + .{ .from = 0x3260, .to = 0x327E }, + .{ .from = 0x3280, .to = 0x3289 }, + .{ .from = 0x328A, .to = 0x32B0 }, + .{ .from = 0x32B1, .to = 0x32BF }, + .{ .from = 0x32C0, .to = 0x33FF }, + .{ .from = 0xA69C, .to = 0xA69D }, + .{ .from = 0xA77D, .to = 0xA77E }, + .{ .from = 0xA7AA, .to = 0xA7AE }, + .{ .from = 0xA7B0, .to = 0xA7B4 }, + .{ .from = 0xA7C4, .to = 0xA7C7 }, + .{ .from = 0xA7CB, .to = 0xA7CC }, + .{ .from = 0xA7F1, .to = 0xA7F4 }, + .{ .from = 0xA7F8, .to = 0xA7F9 }, + .{ .from = 0xAB5C, .to = 0xAB5F }, + .{ .from = 0xAB70, .to = 0xABBF }, + .{ .from = 0xF900, .to = 0xFA0D }, + .{ .from = 0xFA15, .to = 0xFA1E }, + .{ .from = 0xFA25, .to = 0xFA26 }, + .{ .from = 0xFA2A, .to = 0xFA6D }, + .{ .from = 0xFA70, .to = 0xFAD9 }, + .{ .from = 0xFB00, .to = 0xFB06 }, + .{ .from = 0xFB13, .to = 0xFB17 }, + .{ .from = 0xFB1F, .to = 0xFB28 }, + .{ .from = 0xFB2A, .to = 0xFB36 }, + .{ .from = 0xFB38, .to = 0xFB3C }, + .{ .from = 0xFB40, .to = 0xFB41 }, + .{ .from = 0xFB43, .to = 0xFB44 }, + .{ .from = 0xFB46, .to = 0xFBB1 }, + .{ .from = 0xFBD3, .to = 0xFD3D }, + .{ .from = 0xFD50, .to = 0xFD8F }, + .{ .from = 0xFD92, .to = 0xFDC7 }, + .{ .from = 0xFDF0, .to = 0xFDFB }, + .{ .from = 0xFE00, .to = 0xFE0F }, + .{ .from = 0xFE10, .to = 0xFE16 }, + .{ .from = 0xFE31, .to = 0xFE32 }, + .{ .from = 0xFE33, .to = 0xFE34 }, + .{ .from = 0xFE49, .to = 0xFE4C }, + .{ .from = 0xFE4D, .to = 0xFE4F }, + .{ .from = 0xFE50, .to = 0xFE52 }, + .{ .from = 0xFE54, .to = 0xFE57 }, + .{ .from = 0xFE5F, .to = 0xFE61 }, + .{ .from = 0xFE64, .to = 0xFE66 }, + .{ .from = 0xFE6A, .to = 0xFE6B }, + .{ .from = 0xFE70, .to = 0xFE72 }, + .{ .from = 0xFE76, .to = 0xFEFC }, + .{ .from = 0xFF01, .to = 0xFF03 }, + .{ .from = 0xFF05, .to = 0xFF07 }, + .{ .from = 0xFF0E, .to = 0xFF0F }, + .{ .from = 0xFF10, .to = 0xFF19 }, + .{ .from = 0xFF1A, .to = 0xFF1B }, + .{ .from = 0xFF1C, .to = 0xFF1E }, + .{ .from = 0xFF1F, .to = 0xFF20 }, + .{ .from = 0xFF21, .to = 0xFF3A }, + .{ .from = 0xFF41, .to = 0xFF5A }, + .{ .from = 0xFF64, .to = 0xFF65 }, + .{ .from = 0xFF66, .to = 0xFF6F }, + .{ .from = 0xFF71, .to = 0xFF9D }, + .{ .from = 0xFF9E, .to = 0xFF9F }, + .{ .from = 0xFFA0, .to = 0xFFBE }, + .{ .from = 0xFFC2, .to = 0xFFC7 }, + .{ .from = 0xFFCA, .to = 0xFFCF }, + .{ .from = 0xFFD2, .to = 0xFFD7 }, + .{ .from = 0xFFDA, .to = 0xFFDC }, + .{ .from = 0xFFE0, .to = 0xFFE1 }, + .{ .from = 0xFFE5, .to = 0xFFE6 }, + .{ .from = 0xFFE9, .to = 0xFFEC }, + .{ .from = 0xFFED, .to = 0xFFEE }, + .{ .from = 0xFFF0, .to = 0xFFF8 }, + .{ .from = 0x10400, .to = 0x10427 }, + .{ .from = 0x104B0, .to = 0x104D3 }, + .{ .from = 0x10570, .to = 0x1057A }, + .{ .from = 0x1057C, .to = 0x1058A }, + .{ .from = 0x1058C, .to = 0x10592 }, + .{ .from = 0x10594, .to = 0x10595 }, + .{ .from = 0x10781, .to = 0x10785 }, + .{ .from = 0x10787, .to = 0x107B0 }, + .{ .from = 0x107B2, .to = 0x107BA }, + .{ .from = 0x10C80, .to = 0x10CB2 }, + .{ .from = 0x10D50, .to = 0x10D65 }, + .{ .from = 0x118A0, .to = 0x118BF }, + .{ .from = 0x16E40, .to = 0x16E5F }, + .{ .from = 0x16EA0, .to = 0x16EB8 }, + .{ .from = 0x1BCA0, .to = 0x1BCA3 }, + .{ .from = 0x1CCD6, .to = 0x1CCEF }, + .{ .from = 0x1CCF0, .to = 0x1CCF9 }, + .{ .from = 0x1D15E, .to = 0x1D164 }, + .{ .from = 0x1D173, .to = 0x1D17A }, + .{ .from = 0x1D1BB, .to = 0x1D1C0 }, + .{ .from = 0x1D400, .to = 0x1D454 }, + .{ .from = 0x1D456, .to = 0x1D49C }, + .{ .from = 0x1D49E, .to = 0x1D49F }, + .{ .from = 0x1D4A5, .to = 0x1D4A6 }, + .{ .from = 0x1D4A9, .to = 0x1D4AC }, + .{ .from = 0x1D4AE, .to = 0x1D4B9 }, + .{ .from = 0x1D4BD, .to = 0x1D4C3 }, + .{ .from = 0x1D4C5, .to = 0x1D505 }, + .{ .from = 0x1D507, .to = 0x1D50A }, + .{ .from = 0x1D50D, .to = 0x1D514 }, + .{ .from = 0x1D516, .to = 0x1D51C }, + .{ .from = 0x1D51E, .to = 0x1D539 }, + .{ .from = 0x1D53B, .to = 0x1D53E }, + .{ .from = 0x1D540, .to = 0x1D544 }, + .{ .from = 0x1D54A, .to = 0x1D550 }, + .{ .from = 0x1D552, .to = 0x1D6A5 }, + .{ .from = 0x1D6A8, .to = 0x1D6C0 }, + .{ .from = 0x1D6C2, .to = 0x1D6DA }, + .{ .from = 0x1D6DC, .to = 0x1D6FA }, + .{ .from = 0x1D6FC, .to = 0x1D714 }, + .{ .from = 0x1D716, .to = 0x1D734 }, + .{ .from = 0x1D736, .to = 0x1D74E }, + .{ .from = 0x1D750, .to = 0x1D76E }, + .{ .from = 0x1D770, .to = 0x1D788 }, + .{ .from = 0x1D78A, .to = 0x1D7A8 }, + .{ .from = 0x1D7AA, .to = 0x1D7C2 }, + .{ .from = 0x1D7C4, .to = 0x1D7CB }, + .{ .from = 0x1D7CE, .to = 0x1D7FF }, + .{ .from = 0x1E030, .to = 0x1E06D }, + .{ .from = 0x1E900, .to = 0x1E921 }, + .{ .from = 0x1EE00, .to = 0x1EE03 }, + .{ .from = 0x1EE05, .to = 0x1EE1F }, + .{ .from = 0x1EE21, .to = 0x1EE22 }, + .{ .from = 0x1EE29, .to = 0x1EE32 }, + .{ .from = 0x1EE34, .to = 0x1EE37 }, + .{ .from = 0x1EE4D, .to = 0x1EE4F }, + .{ .from = 0x1EE51, .to = 0x1EE52 }, + .{ .from = 0x1EE61, .to = 0x1EE62 }, + .{ .from = 0x1EE67, .to = 0x1EE6A }, + .{ .from = 0x1EE6C, .to = 0x1EE72 }, + .{ .from = 0x1EE74, .to = 0x1EE77 }, + .{ .from = 0x1EE79, .to = 0x1EE7C }, + .{ .from = 0x1EE80, .to = 0x1EE89 }, + .{ .from = 0x1EE8B, .to = 0x1EE9B }, + .{ .from = 0x1EEA1, .to = 0x1EEA3 }, + .{ .from = 0x1EEA5, .to = 0x1EEA9 }, + .{ .from = 0x1EEAB, .to = 0x1EEBB }, + .{ .from = 0x1F100, .to = 0x1F10A }, + .{ .from = 0x1F110, .to = 0x1F12E }, + .{ .from = 0x1F130, .to = 0x1F14F }, + .{ .from = 0x1F16A, .to = 0x1F16C }, + .{ .from = 0x1F200, .to = 0x1F202 }, + .{ .from = 0x1F210, .to = 0x1F23B }, + .{ .from = 0x1F240, .to = 0x1F248 }, + .{ .from = 0x1F250, .to = 0x1F251 }, + .{ .from = 0x1FBF0, .to = 0x1FBF9 }, + .{ .from = 0x2F800, .to = 0x2FA1D }, + .{ .from = 0xE0002, .to = 0xE001F }, + .{ .from = 0xE0020, .to = 0xE007F }, + .{ .from = 0xE0080, .to = 0xE00FF }, + .{ .from = 0xE0100, .to = 0xE01EF }, + .{ .from = 0xE01F0, .to = 0xE0FFF }, + }; +}; diff --git a/src/lib.zig b/src/lib.zig index 66e8af4c3f2f404401b7a5701fe96018b51e7fe4..bcc280aac50d001973a5377b8d9fa5ecf4f59bc9 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -9,7 +9,7 @@ pub const case_folding = @import("./case_folding.zig"); pub const composition_exclusions = @import("./composition_exclusions.zig"); pub const derived_age = @import("./derived_age.zig"); pub const derived_core_properties = @import("./derived_core_properties.zig"); -// DerivedNormalizationProps.txt +pub const derived_normalization_props = @import("./derived_normalization_props.zig"); pub const east_asian_width = @import("./east_asian_width.zig"); pub const emoji_sources = @import("./emoji_sources.zig"); pub const equivalent_unified_ideograph = @import("./equivalent_unified_ideograph.zig"); diff --git a/test.zig b/test.zig index d732811ce69e6263edf2aefff4dc6947d8599817..075ed1953e15de1ca2381eca9b9dc9e3711dccf8 100644 --- a/test.zig +++ b/test.zig @@ -11,6 +11,7 @@ test { _ = &ucd.composition_exclusions.data; _ = &ucd.derived_age.data; _ = &ucd.derived_core_properties.data; + std.testing.refAllDeclsRecursive(ucd.derived_normalization_props); _ = &ucd.east_asian_width.data; _ = &ucd.emoji_sources.data; _ = &ucd.equivalent_unified_ideograph.data; -- 2.54.0