authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-20 23:19:29 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-20 23:19:29 -08:00
log35065b703a0912fd39d56f91f7e4f8c886b9ab63
tree45153ecbe679568aac9d014282797c9f6a201dbf
parent338a9cb2ecb894ee599e422d454fad96e5cb8c96

add DerivedNormalizationProps


6 files changed, 2802 insertions(+), 1 deletions(-)

generate.zig+1
......@@ -10,6 +10,7 @@ const files = [_]type{
1010 @import("./scripts/CompositionExclusions.zig"),
1111 @import("./scripts/DerivedAge.zig"),
1212 @import("./scripts/DerivedCoreProperties.zig"),
13 @import("./scripts/DerivedNormalizationProps.zig"),
1314 @import("./scripts/EastAsianWidth.zig"),
1415 @import("./scripts/EmojiSources.zig"),
1516 @import("./scripts/EquivalentUnifiedIdeograph.zig"),
scripts/DerivedNormalizationProps.zig created+260
......@@ -0,0 +1,260 @@
1const std = @import("std");
2const common = @import("./_common.zig");
3
4pub usingnamespace common.Main(struct {
5 pub const source_file = "DerivedNormalizationProps";
6
7 pub const dest_file = "src/derived_normalization_props.zig";
8
9 pub const dest_header =
10 \\const ucd = @import("./lib.zig");
11 \\
12 \\pub const Range = struct {
13 \\ from: u21,
14 \\ to: u21,
15 \\};
16 \\
17 ;
18
19 pub const dest_footer = "";
20
21 var sections: std.StringArrayHashMapUnmanaged(std.ArrayListUnmanaged([]const u8)) = .{};
22
23 pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !void {
24 _ = writer;
25 var it = std.mem.tokenizeAny(u8, line, " ; ");
26
27 const cp_range = it.next().?;
28 const rest = it.rest();
29
30 const gop = try sections.getOrPut(alloc, try alloc.dupe(u8, rest));
31 if (!gop.found_existing) gop.value_ptr.* = .{};
32 try gop.value_ptr.append(alloc, try alloc.dupe(u8, cp_range));
33 }
34
35 pub fn after(alloc: std.mem.Allocator, writer: anytype) !void {
36 _ = alloc;
37
38 {
39 const list = sections.fetchSwapRemove("Full_Composition_Exclusion ").?;
40 try writer.writeAll("\n");
41 try writer.writeAll("pub const full_composition_exclusion = struct {\n");
42 try writer.writeAll(" pub const data = [_]u21{\n");
43 for (list.value.items) |item| {
44 if (std.mem.indexOf(u8, item, "..") == null) {
45 try writer.writeAll(" 0x");
46 try writer.writeAll(item);
47 try writer.writeAll(",\n");
48 }
49 }
50 try writer.writeAll(" };\n");
51 try writer.writeAll(" pub const data_range = [_]Range{\n");
52 for (list.value.items) |item| {
53 if (std.mem.indexOf(u8, item, "..")) |idx| {
54 try writer.writeAll(" .{ .from = 0x");
55 try writer.writeAll(item[0..idx]);
56 try writer.writeAll(", .to = 0x");
57 try writer.writeAll(item[idx + 2 ..]);
58 try writer.writeAll(" },\n");
59 }
60 }
61 try writer.writeAll(" };\n");
62 try writer.writeAll("};\n");
63 }
64 {
65 // "NFD_QC; N "
66 const list = sections.fetchSwapRemove("NFD_QC; N ").?;
67 try writer.writeAll("\n");
68 try writer.writeAll("pub const nfd_qc_n = struct {\n");
69 try writer.writeAll(" pub const data = [_]u21{\n");
70 for (list.value.items) |item| {
71 if (std.mem.indexOf(u8, item, "..") == null) {
72 try writer.writeAll(" 0x");
73 try writer.writeAll(item);
74 try writer.writeAll(",\n");
75 }
76 }
77 try writer.writeAll(" };\n");
78 try writer.writeAll(" pub const data_range = [_]Range{\n");
79 for (list.value.items) |item| {
80 if (std.mem.indexOf(u8, item, "..")) |idx| {
81 try writer.writeAll(" .{ .from = 0x");
82 try writer.writeAll(item[0..idx]);
83 try writer.writeAll(", .to = 0x");
84 try writer.writeAll(item[idx + 2 ..]);
85 try writer.writeAll(" },\n");
86 }
87 }
88 try writer.writeAll(" };\n");
89 try writer.writeAll("};\n");
90 }
91 {
92 // "NFC_QC; N "
93 const list = sections.fetchSwapRemove("NFC_QC; N ").?;
94 try writer.writeAll("\n");
95 try writer.writeAll("pub const nfc_qc_n = struct {\n");
96 try writer.writeAll(" pub const data = [_]u21{\n");
97 for (list.value.items) |item| {
98 if (std.mem.indexOf(u8, item, "..") == null) {
99 try writer.writeAll(" 0x");
100 try writer.writeAll(item);
101 try writer.writeAll(",\n");
102 }
103 }
104 try writer.writeAll(" };\n");
105 try writer.writeAll(" pub const data_range = [_]Range{\n");
106 for (list.value.items) |item| {
107 if (std.mem.indexOf(u8, item, "..")) |idx| {
108 try writer.writeAll(" .{ .from = 0x");
109 try writer.writeAll(item[0..idx]);
110 try writer.writeAll(", .to = 0x");
111 try writer.writeAll(item[idx + 2 ..]);
112 try writer.writeAll(" },\n");
113 }
114 }
115 try writer.writeAll(" };\n");
116 try writer.writeAll("};\n");
117 }
118 {
119 // "NFC_QC; M "
120 const list = sections.fetchSwapRemove("NFC_QC; M ").?;
121 try writer.writeAll("\n");
122 try writer.writeAll("pub const nfc_qc_m = struct {\n");
123 try writer.writeAll(" pub const data = [_]u21{\n");
124 for (list.value.items) |item| {
125 if (std.mem.indexOf(u8, item, "..") == null) {
126 try writer.writeAll(" 0x");
127 try writer.writeAll(item);
128 try writer.writeAll(",\n");
129 }
130 }
131 try writer.writeAll(" };\n");
132 try writer.writeAll(" pub const data_range = [_]Range{\n");
133 for (list.value.items) |item| {
134 if (std.mem.indexOf(u8, item, "..")) |idx| {
135 try writer.writeAll(" .{ .from = 0x");
136 try writer.writeAll(item[0..idx]);
137 try writer.writeAll(", .to = 0x");
138 try writer.writeAll(item[idx + 2 ..]);
139 try writer.writeAll(" },\n");
140 }
141 }
142 try writer.writeAll(" };\n");
143 try writer.writeAll("};\n");
144 }
145 {
146 // "NFKD_QC; N "
147 const list = sections.fetchSwapRemove("NFKD_QC; N ").?;
148 try writer.writeAll("\n");
149 try writer.writeAll("pub const nfkd_qc_n = struct {\n");
150 try writer.writeAll(" pub const data = [_]u21{\n");
151 for (list.value.items) |item| {
152 if (std.mem.indexOf(u8, item, "..") == null) {
153 try writer.writeAll(" 0x");
154 try writer.writeAll(item);
155 try writer.writeAll(",\n");
156 }
157 }
158 try writer.writeAll(" };\n");
159 try writer.writeAll(" pub const data_range = [_]Range{\n");
160 for (list.value.items) |item| {
161 if (std.mem.indexOf(u8, item, "..")) |idx| {
162 try writer.writeAll(" .{ .from = 0x");
163 try writer.writeAll(item[0..idx]);
164 try writer.writeAll(", .to = 0x");
165 try writer.writeAll(item[idx + 2 ..]);
166 try writer.writeAll(" },\n");
167 }
168 }
169 try writer.writeAll(" };\n");
170 try writer.writeAll("};\n");
171 }
172 {
173 // "NFKC_QC; N "
174 const list = sections.fetchSwapRemove("NFKC_QC; N ").?;
175 try writer.writeAll("\n");
176 try writer.writeAll("pub const nfkc_qc_n = struct {\n");
177 try writer.writeAll(" pub const data = [_]u21{\n");
178 for (list.value.items) |item| {
179 if (std.mem.indexOf(u8, item, "..") == null) {
180 try writer.writeAll(" 0x");
181 try writer.writeAll(item);
182 try writer.writeAll(",\n");
183 }
184 }
185 try writer.writeAll(" };\n");
186 try writer.writeAll(" pub const data_range = [_]Range{\n");
187 for (list.value.items) |item| {
188 if (std.mem.indexOf(u8, item, "..")) |idx| {
189 try writer.writeAll(" .{ .from = 0x");
190 try writer.writeAll(item[0..idx]);
191 try writer.writeAll(", .to = 0x");
192 try writer.writeAll(item[idx + 2 ..]);
193 try writer.writeAll(" },\n");
194 }
195 }
196 try writer.writeAll(" };\n");
197 try writer.writeAll("};\n");
198 }
199 {
200 // "NFKC_QC; M "
201 const list = sections.fetchSwapRemove("NFKC_QC; M ").?;
202 try writer.writeAll("\n");
203 try writer.writeAll("pub const nfkc_qc_m = struct {\n");
204 try writer.writeAll(" pub const data = [_]u21{\n");
205 for (list.value.items) |item| {
206 if (std.mem.indexOf(u8, item, "..") == null) {
207 try writer.writeAll(" 0x");
208 try writer.writeAll(item);
209 try writer.writeAll(",\n");
210 }
211 }
212 try writer.writeAll(" };\n");
213 try writer.writeAll(" pub const data_range = [_]Range{\n");
214 for (list.value.items) |item| {
215 if (std.mem.indexOf(u8, item, "..")) |idx| {
216 try writer.writeAll(" .{ .from = 0x");
217 try writer.writeAll(item[0..idx]);
218 try writer.writeAll(", .to = 0x");
219 try writer.writeAll(item[idx + 2 ..]);
220 try writer.writeAll(" },\n");
221 }
222 }
223 try writer.writeAll(" };\n");
224 try writer.writeAll("};\n");
225 }
226 {
227 // NFKC_CF
228 }
229 {
230 // NFKC_SCF
231 }
232 {
233 // "Changes_When_NFKC_Casefolded "
234 const list = sections.fetchSwapRemove("Changes_When_NFKC_Casefolded ").?;
235 try writer.writeAll("\n");
236 try writer.writeAll("pub const changes_when_nfc_casefolded = struct {\n");
237 try writer.writeAll(" pub const data = [_]u21{\n");
238 for (list.value.items) |item| {
239 if (std.mem.indexOf(u8, item, "..") == null) {
240 try writer.writeAll(" 0x");
241 try writer.writeAll(item);
242 try writer.writeAll(",\n");
243 }
244 }
245 try writer.writeAll(" };\n");
246 try writer.writeAll(" pub const data_range = [_]Range{\n");
247 for (list.value.items) |item| {
248 if (std.mem.indexOf(u8, item, "..")) |idx| {
249 try writer.writeAll(" .{ .from = 0x");
250 try writer.writeAll(item[0..idx]);
251 try writer.writeAll(", .to = 0x");
252 try writer.writeAll(item[idx + 2 ..]);
253 try writer.writeAll(" },\n");
254 }
255 }
256 try writer.writeAll(" };\n");
257 try writer.writeAll("};\n");
258 }
259 }
260});
scripts/_common.zig+1
......@@ -76,6 +76,7 @@ pub fn Main(comptime T: type) type {
7676 }
7777 std.debug.print("\n", .{});
7878 try w.writeAll(T.dest_footer);
79 if (@hasDecl(T, "after")) try T.after(arena.allocator(), w);
7980 try bufw.flush();
8081 }
8182 };
src/derived_normalization_props.zig created+2538
......@@ -0,0 +1,2538 @@
1// This file is part of the Unicode Character Database
2// For documentation, see http://www.unicode.org/reports/tr44/
3//
4// Based on the source file: https://unicode.org/Public/17.0.0/ucd/DerivedNormalizationProps.txt
5//
6// zig fmt: off
7
8const ucd = @import("./lib.zig");
9
10pub const Range = struct {
11 from: u21,
12 to: u21,
13};
14
15pub const full_composition_exclusion = struct {
16 pub const data = [_]u21{
17 0x0374,
18 0x037E,
19 0x0387,
20 0x09DF,
21 0x0A33,
22 0x0A36,
23 0x0A5E,
24 0x0F43,
25 0x0F4D,
26 0x0F52,
27 0x0F57,
28 0x0F5C,
29 0x0F69,
30 0x0F73,
31 0x0F78,
32 0x0F81,
33 0x0F93,
34 0x0F9D,
35 0x0FA2,
36 0x0FA7,
37 0x0FAC,
38 0x0FB9,
39 0x1F71,
40 0x1F73,
41 0x1F75,
42 0x1F77,
43 0x1F79,
44 0x1F7B,
45 0x1F7D,
46 0x1FBB,
47 0x1FBE,
48 0x1FC9,
49 0x1FCB,
50 0x1FD3,
51 0x1FDB,
52 0x1FE3,
53 0x1FEB,
54 0x1FF9,
55 0x1FFB,
56 0x1FFD,
57 0x2126,
58 0x2329,
59 0x232A,
60 0x2ADC,
61 0xFA10,
62 0xFA12,
63 0xFA20,
64 0xFA22,
65 0xFB1D,
66 0xFB1F,
67 0xFB3E,
68 };
69 pub const data_range = [_]Range{
70 .{ .from = 0x0340, .to = 0x0341 },
71 .{ .from = 0x0343, .to = 0x0344 },
72 .{ .from = 0x0958, .to = 0x095F },
73 .{ .from = 0x09DC, .to = 0x09DD },
74 .{ .from = 0x0A59, .to = 0x0A5B },
75 .{ .from = 0x0B5C, .to = 0x0B5D },
76 .{ .from = 0x0F75, .to = 0x0F76 },
77 .{ .from = 0x1FEE, .to = 0x1FEF },
78 .{ .from = 0x2000, .to = 0x2001 },
79 .{ .from = 0x212A, .to = 0x212B },
80 .{ .from = 0xF900, .to = 0xFA0D },
81 .{ .from = 0xFA15, .to = 0xFA1E },
82 .{ .from = 0xFA25, .to = 0xFA26 },
83 .{ .from = 0xFA2A, .to = 0xFA6D },
84 .{ .from = 0xFA70, .to = 0xFAD9 },
85 .{ .from = 0xFB2A, .to = 0xFB36 },
86 .{ .from = 0xFB38, .to = 0xFB3C },
87 .{ .from = 0xFB40, .to = 0xFB41 },
88 .{ .from = 0xFB43, .to = 0xFB44 },
89 .{ .from = 0xFB46, .to = 0xFB4E },
90 .{ .from = 0x1D15E, .to = 0x1D164 },
91 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
92 .{ .from = 0x2F800, .to = 0x2FA1D },
93 };
94};
95
96pub const nfd_qc_n = struct {
97 pub const data = [_]u21{
98 0x0374,
99 0x037E,
100 0x0385,
101 0x0386,
102 0x0387,
103 0x038C,
104 0x0403,
105 0x0407,
106 0x0419,
107 0x0439,
108 0x0453,
109 0x0457,
110 0x06C0,
111 0x06C2,
112 0x06D3,
113 0x0929,
114 0x0931,
115 0x0934,
116 0x09DF,
117 0x0A33,
118 0x0A36,
119 0x0A5E,
120 0x0B48,
121 0x0B94,
122 0x0C48,
123 0x0CC0,
124 0x0DDA,
125 0x0F43,
126 0x0F4D,
127 0x0F52,
128 0x0F57,
129 0x0F5C,
130 0x0F69,
131 0x0F73,
132 0x0F78,
133 0x0F81,
134 0x0F93,
135 0x0F9D,
136 0x0FA2,
137 0x0FA7,
138 0x0FAC,
139 0x0FB9,
140 0x1026,
141 0x1B06,
142 0x1B08,
143 0x1B0A,
144 0x1B0C,
145 0x1B0E,
146 0x1B12,
147 0x1B3B,
148 0x1B3D,
149 0x1B43,
150 0x1E9B,
151 0x1F59,
152 0x1F5B,
153 0x1F5D,
154 0x1FBE,
155 0x1FC1,
156 0x1FFD,
157 0x2126,
158 0x21AE,
159 0x21CD,
160 0x2204,
161 0x2209,
162 0x220C,
163 0x2224,
164 0x2226,
165 0x2241,
166 0x2244,
167 0x2247,
168 0x2249,
169 0x2260,
170 0x2262,
171 0x2329,
172 0x232A,
173 0x2ADC,
174 0x304C,
175 0x304E,
176 0x3050,
177 0x3052,
178 0x3054,
179 0x3056,
180 0x3058,
181 0x305A,
182 0x305C,
183 0x305E,
184 0x3060,
185 0x3062,
186 0x3065,
187 0x3067,
188 0x3069,
189 0x3094,
190 0x309E,
191 0x30AC,
192 0x30AE,
193 0x30B0,
194 0x30B2,
195 0x30B4,
196 0x30B6,
197 0x30B8,
198 0x30BA,
199 0x30BC,
200 0x30BE,
201 0x30C0,
202 0x30C2,
203 0x30C5,
204 0x30C7,
205 0x30C9,
206 0x30F4,
207 0x30FE,
208 0xFA10,
209 0xFA12,
210 0xFA20,
211 0xFA22,
212 0xFB1D,
213 0xFB1F,
214 0xFB3E,
215 0x105C9,
216 0x105E4,
217 0x1109A,
218 0x1109C,
219 0x110AB,
220 0x11383,
221 0x11385,
222 0x1138E,
223 0x11391,
224 0x113C5,
225 0x114BE,
226 0x11938,
227 };
228 pub const data_range = [_]Range{
229 .{ .from = 0x00C0, .to = 0x00C5 },
230 .{ .from = 0x00C7, .to = 0x00CF },
231 .{ .from = 0x00D1, .to = 0x00D6 },
232 .{ .from = 0x00D9, .to = 0x00DD },
233 .{ .from = 0x00E0, .to = 0x00E5 },
234 .{ .from = 0x00E7, .to = 0x00EF },
235 .{ .from = 0x00F1, .to = 0x00F6 },
236 .{ .from = 0x00F9, .to = 0x00FD },
237 .{ .from = 0x00FF, .to = 0x010F },
238 .{ .from = 0x0112, .to = 0x0125 },
239 .{ .from = 0x0128, .to = 0x0130 },
240 .{ .from = 0x0134, .to = 0x0137 },
241 .{ .from = 0x0139, .to = 0x013E },
242 .{ .from = 0x0143, .to = 0x0148 },
243 .{ .from = 0x014C, .to = 0x0151 },
244 .{ .from = 0x0154, .to = 0x0165 },
245 .{ .from = 0x0168, .to = 0x017E },
246 .{ .from = 0x01A0, .to = 0x01A1 },
247 .{ .from = 0x01AF, .to = 0x01B0 },
248 .{ .from = 0x01CD, .to = 0x01DC },
249 .{ .from = 0x01DE, .to = 0x01E3 },
250 .{ .from = 0x01E6, .to = 0x01F0 },
251 .{ .from = 0x01F4, .to = 0x01F5 },
252 .{ .from = 0x01F8, .to = 0x021B },
253 .{ .from = 0x021E, .to = 0x021F },
254 .{ .from = 0x0226, .to = 0x0233 },
255 .{ .from = 0x0340, .to = 0x0341 },
256 .{ .from = 0x0343, .to = 0x0344 },
257 .{ .from = 0x0388, .to = 0x038A },
258 .{ .from = 0x038E, .to = 0x0390 },
259 .{ .from = 0x03AA, .to = 0x03B0 },
260 .{ .from = 0x03CA, .to = 0x03CE },
261 .{ .from = 0x03D3, .to = 0x03D4 },
262 .{ .from = 0x0400, .to = 0x0401 },
263 .{ .from = 0x040C, .to = 0x040E },
264 .{ .from = 0x0450, .to = 0x0451 },
265 .{ .from = 0x045C, .to = 0x045E },
266 .{ .from = 0x0476, .to = 0x0477 },
267 .{ .from = 0x04C1, .to = 0x04C2 },
268 .{ .from = 0x04D0, .to = 0x04D3 },
269 .{ .from = 0x04D6, .to = 0x04D7 },
270 .{ .from = 0x04DA, .to = 0x04DF },
271 .{ .from = 0x04E2, .to = 0x04E7 },
272 .{ .from = 0x04EA, .to = 0x04F5 },
273 .{ .from = 0x04F8, .to = 0x04F9 },
274 .{ .from = 0x0622, .to = 0x0626 },
275 .{ .from = 0x0958, .to = 0x095F },
276 .{ .from = 0x09CB, .to = 0x09CC },
277 .{ .from = 0x09DC, .to = 0x09DD },
278 .{ .from = 0x0A59, .to = 0x0A5B },
279 .{ .from = 0x0B4B, .to = 0x0B4C },
280 .{ .from = 0x0B5C, .to = 0x0B5D },
281 .{ .from = 0x0BCA, .to = 0x0BCC },
282 .{ .from = 0x0CC7, .to = 0x0CC8 },
283 .{ .from = 0x0CCA, .to = 0x0CCB },
284 .{ .from = 0x0D4A, .to = 0x0D4C },
285 .{ .from = 0x0DDC, .to = 0x0DDE },
286 .{ .from = 0x0F75, .to = 0x0F76 },
287 .{ .from = 0x1B40, .to = 0x1B41 },
288 .{ .from = 0x1E00, .to = 0x1E99 },
289 .{ .from = 0x1EA0, .to = 0x1EF9 },
290 .{ .from = 0x1F00, .to = 0x1F15 },
291 .{ .from = 0x1F18, .to = 0x1F1D },
292 .{ .from = 0x1F20, .to = 0x1F45 },
293 .{ .from = 0x1F48, .to = 0x1F4D },
294 .{ .from = 0x1F50, .to = 0x1F57 },
295 .{ .from = 0x1F5F, .to = 0x1F7D },
296 .{ .from = 0x1F80, .to = 0x1FB4 },
297 .{ .from = 0x1FB6, .to = 0x1FBC },
298 .{ .from = 0x1FC2, .to = 0x1FC4 },
299 .{ .from = 0x1FC6, .to = 0x1FCC },
300 .{ .from = 0x1FCD, .to = 0x1FCF },
301 .{ .from = 0x1FD0, .to = 0x1FD3 },
302 .{ .from = 0x1FD6, .to = 0x1FDB },
303 .{ .from = 0x1FDD, .to = 0x1FDF },
304 .{ .from = 0x1FE0, .to = 0x1FEC },
305 .{ .from = 0x1FED, .to = 0x1FEF },
306 .{ .from = 0x1FF2, .to = 0x1FF4 },
307 .{ .from = 0x1FF6, .to = 0x1FFC },
308 .{ .from = 0x2000, .to = 0x2001 },
309 .{ .from = 0x212A, .to = 0x212B },
310 .{ .from = 0x219A, .to = 0x219B },
311 .{ .from = 0x21CE, .to = 0x21CF },
312 .{ .from = 0x226D, .to = 0x2271 },
313 .{ .from = 0x2274, .to = 0x2275 },
314 .{ .from = 0x2278, .to = 0x2279 },
315 .{ .from = 0x2280, .to = 0x2281 },
316 .{ .from = 0x2284, .to = 0x2285 },
317 .{ .from = 0x2288, .to = 0x2289 },
318 .{ .from = 0x22AC, .to = 0x22AF },
319 .{ .from = 0x22E0, .to = 0x22E3 },
320 .{ .from = 0x22EA, .to = 0x22ED },
321 .{ .from = 0x3070, .to = 0x3071 },
322 .{ .from = 0x3073, .to = 0x3074 },
323 .{ .from = 0x3076, .to = 0x3077 },
324 .{ .from = 0x3079, .to = 0x307A },
325 .{ .from = 0x307C, .to = 0x307D },
326 .{ .from = 0x30D0, .to = 0x30D1 },
327 .{ .from = 0x30D3, .to = 0x30D4 },
328 .{ .from = 0x30D6, .to = 0x30D7 },
329 .{ .from = 0x30D9, .to = 0x30DA },
330 .{ .from = 0x30DC, .to = 0x30DD },
331 .{ .from = 0x30F7, .to = 0x30FA },
332 .{ .from = 0xAC00, .to = 0xD7A3 },
333 .{ .from = 0xF900, .to = 0xFA0D },
334 .{ .from = 0xFA15, .to = 0xFA1E },
335 .{ .from = 0xFA25, .to = 0xFA26 },
336 .{ .from = 0xFA2A, .to = 0xFA6D },
337 .{ .from = 0xFA70, .to = 0xFAD9 },
338 .{ .from = 0xFB2A, .to = 0xFB36 },
339 .{ .from = 0xFB38, .to = 0xFB3C },
340 .{ .from = 0xFB40, .to = 0xFB41 },
341 .{ .from = 0xFB43, .to = 0xFB44 },
342 .{ .from = 0xFB46, .to = 0xFB4E },
343 .{ .from = 0x1112E, .to = 0x1112F },
344 .{ .from = 0x1134B, .to = 0x1134C },
345 .{ .from = 0x113C7, .to = 0x113C8 },
346 .{ .from = 0x114BB, .to = 0x114BC },
347 .{ .from = 0x115BA, .to = 0x115BB },
348 .{ .from = 0x16121, .to = 0x16128 },
349 .{ .from = 0x16D68, .to = 0x16D6A },
350 .{ .from = 0x1D15E, .to = 0x1D164 },
351 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
352 .{ .from = 0x2F800, .to = 0x2FA1D },
353 };
354};
355
356pub const nfc_qc_n = struct {
357 pub const data = [_]u21{
358 0x0374,
359 0x037E,
360 0x0387,
361 0x09DF,
362 0x0A33,
363 0x0A36,
364 0x0A5E,
365 0x0F43,
366 0x0F4D,
367 0x0F52,
368 0x0F57,
369 0x0F5C,
370 0x0F69,
371 0x0F73,
372 0x0F78,
373 0x0F81,
374 0x0F93,
375 0x0F9D,
376 0x0FA2,
377 0x0FA7,
378 0x0FAC,
379 0x0FB9,
380 0x1F71,
381 0x1F73,
382 0x1F75,
383 0x1F77,
384 0x1F79,
385 0x1F7B,
386 0x1F7D,
387 0x1FBB,
388 0x1FBE,
389 0x1FC9,
390 0x1FCB,
391 0x1FD3,
392 0x1FDB,
393 0x1FE3,
394 0x1FEB,
395 0x1FF9,
396 0x1FFB,
397 0x1FFD,
398 0x2126,
399 0x2329,
400 0x232A,
401 0x2ADC,
402 0xFA10,
403 0xFA12,
404 0xFA20,
405 0xFA22,
406 0xFB1D,
407 0xFB1F,
408 0xFB3E,
409 };
410 pub const data_range = [_]Range{
411 .{ .from = 0x0340, .to = 0x0341 },
412 .{ .from = 0x0343, .to = 0x0344 },
413 .{ .from = 0x0958, .to = 0x095F },
414 .{ .from = 0x09DC, .to = 0x09DD },
415 .{ .from = 0x0A59, .to = 0x0A5B },
416 .{ .from = 0x0B5C, .to = 0x0B5D },
417 .{ .from = 0x0F75, .to = 0x0F76 },
418 .{ .from = 0x1FEE, .to = 0x1FEF },
419 .{ .from = 0x2000, .to = 0x2001 },
420 .{ .from = 0x212A, .to = 0x212B },
421 .{ .from = 0xF900, .to = 0xFA0D },
422 .{ .from = 0xFA15, .to = 0xFA1E },
423 .{ .from = 0xFA25, .to = 0xFA26 },
424 .{ .from = 0xFA2A, .to = 0xFA6D },
425 .{ .from = 0xFA70, .to = 0xFAD9 },
426 .{ .from = 0xFB2A, .to = 0xFB36 },
427 .{ .from = 0xFB38, .to = 0xFB3C },
428 .{ .from = 0xFB40, .to = 0xFB41 },
429 .{ .from = 0xFB43, .to = 0xFB44 },
430 .{ .from = 0xFB46, .to = 0xFB4E },
431 .{ .from = 0x1D15E, .to = 0x1D164 },
432 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
433 .{ .from = 0x2F800, .to = 0x2FA1D },
434 };
435};
436
437pub const nfc_qc_m = struct {
438 pub const data = [_]u21{
439 0x030F,
440 0x0311,
441 0x031B,
442 0x0338,
443 0x0342,
444 0x0345,
445 0x093C,
446 0x09BE,
447 0x09D7,
448 0x0B3E,
449 0x0B56,
450 0x0B57,
451 0x0BBE,
452 0x0BD7,
453 0x0C56,
454 0x0CC2,
455 0x0D3E,
456 0x0D57,
457 0x0DCA,
458 0x0DCF,
459 0x0DDF,
460 0x102E,
461 0x1B35,
462 0x110BA,
463 0x11127,
464 0x1133E,
465 0x11357,
466 0x113B8,
467 0x113BB,
468 0x113C2,
469 0x113C5,
470 0x114B0,
471 0x114BA,
472 0x114BD,
473 0x115AF,
474 0x11930,
475 };
476 pub const data_range = [_]Range{
477 .{ .from = 0x0300, .to = 0x0304 },
478 .{ .from = 0x0306, .to = 0x030C },
479 .{ .from = 0x0313, .to = 0x0314 },
480 .{ .from = 0x0323, .to = 0x0328 },
481 .{ .from = 0x032D, .to = 0x032E },
482 .{ .from = 0x0330, .to = 0x0331 },
483 .{ .from = 0x0653, .to = 0x0655 },
484 .{ .from = 0x0CD5, .to = 0x0CD6 },
485 .{ .from = 0x1161, .to = 0x1175 },
486 .{ .from = 0x11A8, .to = 0x11C2 },
487 .{ .from = 0x3099, .to = 0x309A },
488 .{ .from = 0x113C7, .to = 0x113C9 },
489 .{ .from = 0x1611E, .to = 0x16129 },
490 .{ .from = 0x16D67, .to = 0x16D68 },
491 };
492};
493
494pub const nfkd_qc_n = struct {
495 pub const data = [_]u21{
496 0x00A0,
497 0x00A8,
498 0x00AA,
499 0x00AF,
500 0x00B4,
501 0x00B5,
502 0x00B8,
503 0x00B9,
504 0x00BA,
505 0x0374,
506 0x037A,
507 0x037E,
508 0x0386,
509 0x0387,
510 0x038C,
511 0x03F9,
512 0x0403,
513 0x0407,
514 0x0419,
515 0x0439,
516 0x0453,
517 0x0457,
518 0x0587,
519 0x06C0,
520 0x06C2,
521 0x06D3,
522 0x0929,
523 0x0931,
524 0x0934,
525 0x09DF,
526 0x0A33,
527 0x0A36,
528 0x0A5E,
529 0x0B48,
530 0x0B94,
531 0x0C48,
532 0x0CC0,
533 0x0DDA,
534 0x0E33,
535 0x0EB3,
536 0x0F0C,
537 0x0F43,
538 0x0F4D,
539 0x0F52,
540 0x0F57,
541 0x0F5C,
542 0x0F69,
543 0x0F73,
544 0x0F81,
545 0x0F93,
546 0x0F9D,
547 0x0FA2,
548 0x0FA7,
549 0x0FAC,
550 0x0FB9,
551 0x1026,
552 0x10FC,
553 0x1B06,
554 0x1B08,
555 0x1B0A,
556 0x1B0C,
557 0x1B0E,
558 0x1B12,
559 0x1B3B,
560 0x1B3D,
561 0x1B43,
562 0x1D78,
563 0x1F59,
564 0x1F5B,
565 0x1F5D,
566 0x1FBD,
567 0x1FBE,
568 0x2011,
569 0x2017,
570 0x202F,
571 0x203C,
572 0x203E,
573 0x2057,
574 0x205F,
575 0x2070,
576 0x2071,
577 0x207D,
578 0x207E,
579 0x207F,
580 0x208D,
581 0x208E,
582 0x20A8,
583 0x2102,
584 0x2103,
585 0x2107,
586 0x2109,
587 0x2115,
588 0x2116,
589 0x2124,
590 0x2126,
591 0x2128,
592 0x2139,
593 0x213B,
594 0x2140,
595 0x2189,
596 0x21AE,
597 0x21CD,
598 0x2204,
599 0x2209,
600 0x220C,
601 0x2224,
602 0x2226,
603 0x2241,
604 0x2244,
605 0x2247,
606 0x2249,
607 0x2260,
608 0x2262,
609 0x2329,
610 0x232A,
611 0x24EA,
612 0x2A0C,
613 0x2ADC,
614 0x2D6F,
615 0x2E9F,
616 0x2EF3,
617 0x3000,
618 0x3036,
619 0x304C,
620 0x304E,
621 0x3050,
622 0x3052,
623 0x3054,
624 0x3056,
625 0x3058,
626 0x305A,
627 0x305C,
628 0x305E,
629 0x3060,
630 0x3062,
631 0x3065,
632 0x3067,
633 0x3069,
634 0x3094,
635 0x309E,
636 0x309F,
637 0x30AC,
638 0x30AE,
639 0x30B0,
640 0x30B2,
641 0x30B4,
642 0x30B6,
643 0x30B8,
644 0x30BA,
645 0x30BC,
646 0x30BE,
647 0x30C0,
648 0x30C2,
649 0x30C5,
650 0x30C7,
651 0x30C9,
652 0x30F4,
653 0x30FE,
654 0x30FF,
655 0x3250,
656 0xA770,
657 0xAB69,
658 0xFA10,
659 0xFA12,
660 0xFA20,
661 0xFA22,
662 0xFB1D,
663 0xFB29,
664 0xFB3E,
665 0xFDFC,
666 0xFE17,
667 0xFE18,
668 0xFE19,
669 0xFE30,
670 0xFE35,
671 0xFE36,
672 0xFE37,
673 0xFE38,
674 0xFE39,
675 0xFE3A,
676 0xFE3B,
677 0xFE3C,
678 0xFE3D,
679 0xFE3E,
680 0xFE3F,
681 0xFE40,
682 0xFE41,
683 0xFE42,
684 0xFE43,
685 0xFE44,
686 0xFE47,
687 0xFE48,
688 0xFE58,
689 0xFE59,
690 0xFE5A,
691 0xFE5B,
692 0xFE5C,
693 0xFE5D,
694 0xFE5E,
695 0xFE62,
696 0xFE63,
697 0xFE68,
698 0xFE69,
699 0xFE74,
700 0xFF04,
701 0xFF08,
702 0xFF09,
703 0xFF0A,
704 0xFF0B,
705 0xFF0C,
706 0xFF0D,
707 0xFF3B,
708 0xFF3C,
709 0xFF3D,
710 0xFF3E,
711 0xFF3F,
712 0xFF40,
713 0xFF5B,
714 0xFF5C,
715 0xFF5D,
716 0xFF5E,
717 0xFF5F,
718 0xFF60,
719 0xFF61,
720 0xFF62,
721 0xFF63,
722 0xFF70,
723 0xFFE2,
724 0xFFE3,
725 0xFFE4,
726 0xFFE8,
727 0x105C9,
728 0x105E4,
729 0x1109A,
730 0x1109C,
731 0x110AB,
732 0x11383,
733 0x11385,
734 0x1138E,
735 0x11391,
736 0x113C5,
737 0x114BE,
738 0x11938,
739 0x1D4A2,
740 0x1D4BB,
741 0x1D546,
742 0x1D6C1,
743 0x1D6DB,
744 0x1D6FB,
745 0x1D715,
746 0x1D735,
747 0x1D74F,
748 0x1D76F,
749 0x1D789,
750 0x1D7A9,
751 0x1D7C3,
752 0x1EE24,
753 0x1EE27,
754 0x1EE39,
755 0x1EE3B,
756 0x1EE42,
757 0x1EE47,
758 0x1EE49,
759 0x1EE4B,
760 0x1EE54,
761 0x1EE57,
762 0x1EE59,
763 0x1EE5B,
764 0x1EE5D,
765 0x1EE5F,
766 0x1EE64,
767 0x1EE7E,
768 0x1F190,
769 };
770 pub const data_range = [_]Range{
771 .{ .from = 0x00B2, .to = 0x00B3 },
772 .{ .from = 0x00BC, .to = 0x00BE },
773 .{ .from = 0x00C0, .to = 0x00C5 },
774 .{ .from = 0x00C7, .to = 0x00CF },
775 .{ .from = 0x00D1, .to = 0x00D6 },
776 .{ .from = 0x00D9, .to = 0x00DD },
777 .{ .from = 0x00E0, .to = 0x00E5 },
778 .{ .from = 0x00E7, .to = 0x00EF },
779 .{ .from = 0x00F1, .to = 0x00F6 },
780 .{ .from = 0x00F9, .to = 0x00FD },
781 .{ .from = 0x00FF, .to = 0x010F },
782 .{ .from = 0x0112, .to = 0x0125 },
783 .{ .from = 0x0128, .to = 0x0130 },
784 .{ .from = 0x0132, .to = 0x0137 },
785 .{ .from = 0x0139, .to = 0x0140 },
786 .{ .from = 0x0143, .to = 0x0149 },
787 .{ .from = 0x014C, .to = 0x0151 },
788 .{ .from = 0x0154, .to = 0x0165 },
789 .{ .from = 0x0168, .to = 0x017F },
790 .{ .from = 0x01A0, .to = 0x01A1 },
791 .{ .from = 0x01AF, .to = 0x01B0 },
792 .{ .from = 0x01C4, .to = 0x01DC },
793 .{ .from = 0x01DE, .to = 0x01E3 },
794 .{ .from = 0x01E6, .to = 0x01F5 },
795 .{ .from = 0x01F8, .to = 0x021B },
796 .{ .from = 0x021E, .to = 0x021F },
797 .{ .from = 0x0226, .to = 0x0233 },
798 .{ .from = 0x02B0, .to = 0x02B8 },
799 .{ .from = 0x02D8, .to = 0x02DD },
800 .{ .from = 0x02E0, .to = 0x02E4 },
801 .{ .from = 0x0340, .to = 0x0341 },
802 .{ .from = 0x0343, .to = 0x0344 },
803 .{ .from = 0x0384, .to = 0x0385 },
804 .{ .from = 0x0388, .to = 0x038A },
805 .{ .from = 0x038E, .to = 0x0390 },
806 .{ .from = 0x03AA, .to = 0x03B0 },
807 .{ .from = 0x03CA, .to = 0x03CE },
808 .{ .from = 0x03D0, .to = 0x03D6 },
809 .{ .from = 0x03F0, .to = 0x03F2 },
810 .{ .from = 0x03F4, .to = 0x03F5 },
811 .{ .from = 0x0400, .to = 0x0401 },
812 .{ .from = 0x040C, .to = 0x040E },
813 .{ .from = 0x0450, .to = 0x0451 },
814 .{ .from = 0x045C, .to = 0x045E },
815 .{ .from = 0x0476, .to = 0x0477 },
816 .{ .from = 0x04C1, .to = 0x04C2 },
817 .{ .from = 0x04D0, .to = 0x04D3 },
818 .{ .from = 0x04D6, .to = 0x04D7 },
819 .{ .from = 0x04DA, .to = 0x04DF },
820 .{ .from = 0x04E2, .to = 0x04E7 },
821 .{ .from = 0x04EA, .to = 0x04F5 },
822 .{ .from = 0x04F8, .to = 0x04F9 },
823 .{ .from = 0x0622, .to = 0x0626 },
824 .{ .from = 0x0675, .to = 0x0678 },
825 .{ .from = 0x0958, .to = 0x095F },
826 .{ .from = 0x09CB, .to = 0x09CC },
827 .{ .from = 0x09DC, .to = 0x09DD },
828 .{ .from = 0x0A59, .to = 0x0A5B },
829 .{ .from = 0x0B4B, .to = 0x0B4C },
830 .{ .from = 0x0B5C, .to = 0x0B5D },
831 .{ .from = 0x0BCA, .to = 0x0BCC },
832 .{ .from = 0x0CC7, .to = 0x0CC8 },
833 .{ .from = 0x0CCA, .to = 0x0CCB },
834 .{ .from = 0x0D4A, .to = 0x0D4C },
835 .{ .from = 0x0DDC, .to = 0x0DDE },
836 .{ .from = 0x0EDC, .to = 0x0EDD },
837 .{ .from = 0x0F75, .to = 0x0F79 },
838 .{ .from = 0x1B40, .to = 0x1B41 },
839 .{ .from = 0x1D2C, .to = 0x1D2E },
840 .{ .from = 0x1D30, .to = 0x1D3A },
841 .{ .from = 0x1D3C, .to = 0x1D4D },
842 .{ .from = 0x1D4F, .to = 0x1D6A },
843 .{ .from = 0x1D9B, .to = 0x1DBF },
844 .{ .from = 0x1E00, .to = 0x1E9B },
845 .{ .from = 0x1EA0, .to = 0x1EF9 },
846 .{ .from = 0x1F00, .to = 0x1F15 },
847 .{ .from = 0x1F18, .to = 0x1F1D },
848 .{ .from = 0x1F20, .to = 0x1F45 },
849 .{ .from = 0x1F48, .to = 0x1F4D },
850 .{ .from = 0x1F50, .to = 0x1F57 },
851 .{ .from = 0x1F5F, .to = 0x1F7D },
852 .{ .from = 0x1F80, .to = 0x1FB4 },
853 .{ .from = 0x1FB6, .to = 0x1FBC },
854 .{ .from = 0x1FBF, .to = 0x1FC1 },
855 .{ .from = 0x1FC2, .to = 0x1FC4 },
856 .{ .from = 0x1FC6, .to = 0x1FCC },
857 .{ .from = 0x1FCD, .to = 0x1FCF },
858 .{ .from = 0x1FD0, .to = 0x1FD3 },
859 .{ .from = 0x1FD6, .to = 0x1FDB },
860 .{ .from = 0x1FDD, .to = 0x1FDF },
861 .{ .from = 0x1FE0, .to = 0x1FEC },
862 .{ .from = 0x1FED, .to = 0x1FEF },
863 .{ .from = 0x1FF2, .to = 0x1FF4 },
864 .{ .from = 0x1FF6, .to = 0x1FFC },
865 .{ .from = 0x1FFD, .to = 0x1FFE },
866 .{ .from = 0x2000, .to = 0x200A },
867 .{ .from = 0x2024, .to = 0x2026 },
868 .{ .from = 0x2033, .to = 0x2034 },
869 .{ .from = 0x2036, .to = 0x2037 },
870 .{ .from = 0x2047, .to = 0x2049 },
871 .{ .from = 0x2074, .to = 0x2079 },
872 .{ .from = 0x207A, .to = 0x207C },
873 .{ .from = 0x2080, .to = 0x2089 },
874 .{ .from = 0x208A, .to = 0x208C },
875 .{ .from = 0x2090, .to = 0x209C },
876 .{ .from = 0x2100, .to = 0x2101 },
877 .{ .from = 0x2105, .to = 0x2106 },
878 .{ .from = 0x210A, .to = 0x2113 },
879 .{ .from = 0x2119, .to = 0x211D },
880 .{ .from = 0x2120, .to = 0x2122 },
881 .{ .from = 0x212A, .to = 0x212D },
882 .{ .from = 0x212F, .to = 0x2131 },
883 .{ .from = 0x2133, .to = 0x2134 },
884 .{ .from = 0x2135, .to = 0x2138 },
885 .{ .from = 0x213C, .to = 0x213F },
886 .{ .from = 0x2145, .to = 0x2149 },
887 .{ .from = 0x2150, .to = 0x215F },
888 .{ .from = 0x2160, .to = 0x217F },
889 .{ .from = 0x219A, .to = 0x219B },
890 .{ .from = 0x21CE, .to = 0x21CF },
891 .{ .from = 0x222C, .to = 0x222D },
892 .{ .from = 0x222F, .to = 0x2230 },
893 .{ .from = 0x226D, .to = 0x2271 },
894 .{ .from = 0x2274, .to = 0x2275 },
895 .{ .from = 0x2278, .to = 0x2279 },
896 .{ .from = 0x2280, .to = 0x2281 },
897 .{ .from = 0x2284, .to = 0x2285 },
898 .{ .from = 0x2288, .to = 0x2289 },
899 .{ .from = 0x22AC, .to = 0x22AF },
900 .{ .from = 0x22E0, .to = 0x22E3 },
901 .{ .from = 0x22EA, .to = 0x22ED },
902 .{ .from = 0x2460, .to = 0x249B },
903 .{ .from = 0x249C, .to = 0x24E9 },
904 .{ .from = 0x2A74, .to = 0x2A76 },
905 .{ .from = 0x2C7C, .to = 0x2C7D },
906 .{ .from = 0x2F00, .to = 0x2FD5 },
907 .{ .from = 0x3038, .to = 0x303A },
908 .{ .from = 0x3070, .to = 0x3071 },
909 .{ .from = 0x3073, .to = 0x3074 },
910 .{ .from = 0x3076, .to = 0x3077 },
911 .{ .from = 0x3079, .to = 0x307A },
912 .{ .from = 0x307C, .to = 0x307D },
913 .{ .from = 0x309B, .to = 0x309C },
914 .{ .from = 0x30D0, .to = 0x30D1 },
915 .{ .from = 0x30D3, .to = 0x30D4 },
916 .{ .from = 0x30D6, .to = 0x30D7 },
917 .{ .from = 0x30D9, .to = 0x30DA },
918 .{ .from = 0x30DC, .to = 0x30DD },
919 .{ .from = 0x30F7, .to = 0x30FA },
920 .{ .from = 0x3131, .to = 0x318E },
921 .{ .from = 0x3192, .to = 0x3195 },
922 .{ .from = 0x3196, .to = 0x319F },
923 .{ .from = 0x3200, .to = 0x321E },
924 .{ .from = 0x3220, .to = 0x3229 },
925 .{ .from = 0x322A, .to = 0x3247 },
926 .{ .from = 0x3251, .to = 0x325F },
927 .{ .from = 0x3260, .to = 0x327E },
928 .{ .from = 0x3280, .to = 0x3289 },
929 .{ .from = 0x328A, .to = 0x32B0 },
930 .{ .from = 0x32B1, .to = 0x32BF },
931 .{ .from = 0x32C0, .to = 0x33FF },
932 .{ .from = 0xA69C, .to = 0xA69D },
933 .{ .from = 0xA7F1, .to = 0xA7F4 },
934 .{ .from = 0xA7F8, .to = 0xA7F9 },
935 .{ .from = 0xAB5C, .to = 0xAB5F },
936 .{ .from = 0xAC00, .to = 0xD7A3 },
937 .{ .from = 0xF900, .to = 0xFA0D },
938 .{ .from = 0xFA15, .to = 0xFA1E },
939 .{ .from = 0xFA25, .to = 0xFA26 },
940 .{ .from = 0xFA2A, .to = 0xFA6D },
941 .{ .from = 0xFA70, .to = 0xFAD9 },
942 .{ .from = 0xFB00, .to = 0xFB06 },
943 .{ .from = 0xFB13, .to = 0xFB17 },
944 .{ .from = 0xFB1F, .to = 0xFB28 },
945 .{ .from = 0xFB2A, .to = 0xFB36 },
946 .{ .from = 0xFB38, .to = 0xFB3C },
947 .{ .from = 0xFB40, .to = 0xFB41 },
948 .{ .from = 0xFB43, .to = 0xFB44 },
949 .{ .from = 0xFB46, .to = 0xFBB1 },
950 .{ .from = 0xFBD3, .to = 0xFD3D },
951 .{ .from = 0xFD50, .to = 0xFD8F },
952 .{ .from = 0xFD92, .to = 0xFDC7 },
953 .{ .from = 0xFDF0, .to = 0xFDFB },
954 .{ .from = 0xFE10, .to = 0xFE16 },
955 .{ .from = 0xFE31, .to = 0xFE32 },
956 .{ .from = 0xFE33, .to = 0xFE34 },
957 .{ .from = 0xFE49, .to = 0xFE4C },
958 .{ .from = 0xFE4D, .to = 0xFE4F },
959 .{ .from = 0xFE50, .to = 0xFE52 },
960 .{ .from = 0xFE54, .to = 0xFE57 },
961 .{ .from = 0xFE5F, .to = 0xFE61 },
962 .{ .from = 0xFE64, .to = 0xFE66 },
963 .{ .from = 0xFE6A, .to = 0xFE6B },
964 .{ .from = 0xFE70, .to = 0xFE72 },
965 .{ .from = 0xFE76, .to = 0xFEFC },
966 .{ .from = 0xFF01, .to = 0xFF03 },
967 .{ .from = 0xFF05, .to = 0xFF07 },
968 .{ .from = 0xFF0E, .to = 0xFF0F },
969 .{ .from = 0xFF10, .to = 0xFF19 },
970 .{ .from = 0xFF1A, .to = 0xFF1B },
971 .{ .from = 0xFF1C, .to = 0xFF1E },
972 .{ .from = 0xFF1F, .to = 0xFF20 },
973 .{ .from = 0xFF21, .to = 0xFF3A },
974 .{ .from = 0xFF41, .to = 0xFF5A },
975 .{ .from = 0xFF64, .to = 0xFF65 },
976 .{ .from = 0xFF66, .to = 0xFF6F },
977 .{ .from = 0xFF71, .to = 0xFF9D },
978 .{ .from = 0xFF9E, .to = 0xFF9F },
979 .{ .from = 0xFFA0, .to = 0xFFBE },
980 .{ .from = 0xFFC2, .to = 0xFFC7 },
981 .{ .from = 0xFFCA, .to = 0xFFCF },
982 .{ .from = 0xFFD2, .to = 0xFFD7 },
983 .{ .from = 0xFFDA, .to = 0xFFDC },
984 .{ .from = 0xFFE0, .to = 0xFFE1 },
985 .{ .from = 0xFFE5, .to = 0xFFE6 },
986 .{ .from = 0xFFE9, .to = 0xFFEC },
987 .{ .from = 0xFFED, .to = 0xFFEE },
988 .{ .from = 0x10781, .to = 0x10785 },
989 .{ .from = 0x10787, .to = 0x107B0 },
990 .{ .from = 0x107B2, .to = 0x107BA },
991 .{ .from = 0x1112E, .to = 0x1112F },
992 .{ .from = 0x1134B, .to = 0x1134C },
993 .{ .from = 0x113C7, .to = 0x113C8 },
994 .{ .from = 0x114BB, .to = 0x114BC },
995 .{ .from = 0x115BA, .to = 0x115BB },
996 .{ .from = 0x16121, .to = 0x16128 },
997 .{ .from = 0x16D68, .to = 0x16D6A },
998 .{ .from = 0x1CCD6, .to = 0x1CCEF },
999 .{ .from = 0x1CCF0, .to = 0x1CCF9 },
1000 .{ .from = 0x1D15E, .to = 0x1D164 },
1001 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
1002 .{ .from = 0x1D400, .to = 0x1D454 },
1003 .{ .from = 0x1D456, .to = 0x1D49C },
1004 .{ .from = 0x1D49E, .to = 0x1D49F },
1005 .{ .from = 0x1D4A5, .to = 0x1D4A6 },
1006 .{ .from = 0x1D4A9, .to = 0x1D4AC },
1007 .{ .from = 0x1D4AE, .to = 0x1D4B9 },
1008 .{ .from = 0x1D4BD, .to = 0x1D4C3 },
1009 .{ .from = 0x1D4C5, .to = 0x1D505 },
1010 .{ .from = 0x1D507, .to = 0x1D50A },
1011 .{ .from = 0x1D50D, .to = 0x1D514 },
1012 .{ .from = 0x1D516, .to = 0x1D51C },
1013 .{ .from = 0x1D51E, .to = 0x1D539 },
1014 .{ .from = 0x1D53B, .to = 0x1D53E },
1015 .{ .from = 0x1D540, .to = 0x1D544 },
1016 .{ .from = 0x1D54A, .to = 0x1D550 },
1017 .{ .from = 0x1D552, .to = 0x1D6A5 },
1018 .{ .from = 0x1D6A8, .to = 0x1D6C0 },
1019 .{ .from = 0x1D6C2, .to = 0x1D6DA },
1020 .{ .from = 0x1D6DC, .to = 0x1D6FA },
1021 .{ .from = 0x1D6FC, .to = 0x1D714 },
1022 .{ .from = 0x1D716, .to = 0x1D734 },
1023 .{ .from = 0x1D736, .to = 0x1D74E },
1024 .{ .from = 0x1D750, .to = 0x1D76E },
1025 .{ .from = 0x1D770, .to = 0x1D788 },
1026 .{ .from = 0x1D78A, .to = 0x1D7A8 },
1027 .{ .from = 0x1D7AA, .to = 0x1D7C2 },
1028 .{ .from = 0x1D7C4, .to = 0x1D7CB },
1029 .{ .from = 0x1D7CE, .to = 0x1D7FF },
1030 .{ .from = 0x1E030, .to = 0x1E06D },
1031 .{ .from = 0x1EE00, .to = 0x1EE03 },
1032 .{ .from = 0x1EE05, .to = 0x1EE1F },
1033 .{ .from = 0x1EE21, .to = 0x1EE22 },
1034 .{ .from = 0x1EE29, .to = 0x1EE32 },
1035 .{ .from = 0x1EE34, .to = 0x1EE37 },
1036 .{ .from = 0x1EE4D, .to = 0x1EE4F },
1037 .{ .from = 0x1EE51, .to = 0x1EE52 },
1038 .{ .from = 0x1EE61, .to = 0x1EE62 },
1039 .{ .from = 0x1EE67, .to = 0x1EE6A },
1040 .{ .from = 0x1EE6C, .to = 0x1EE72 },
1041 .{ .from = 0x1EE74, .to = 0x1EE77 },
1042 .{ .from = 0x1EE79, .to = 0x1EE7C },
1043 .{ .from = 0x1EE80, .to = 0x1EE89 },
1044 .{ .from = 0x1EE8B, .to = 0x1EE9B },
1045 .{ .from = 0x1EEA1, .to = 0x1EEA3 },
1046 .{ .from = 0x1EEA5, .to = 0x1EEA9 },
1047 .{ .from = 0x1EEAB, .to = 0x1EEBB },
1048 .{ .from = 0x1F100, .to = 0x1F10A },
1049 .{ .from = 0x1F110, .to = 0x1F12E },
1050 .{ .from = 0x1F130, .to = 0x1F14F },
1051 .{ .from = 0x1F16A, .to = 0x1F16C },
1052 .{ .from = 0x1F200, .to = 0x1F202 },
1053 .{ .from = 0x1F210, .to = 0x1F23B },
1054 .{ .from = 0x1F240, .to = 0x1F248 },
1055 .{ .from = 0x1F250, .to = 0x1F251 },
1056 .{ .from = 0x1FBF0, .to = 0x1FBF9 },
1057 .{ .from = 0x2F800, .to = 0x2FA1D },
1058 };
1059};
1060
1061pub const nfkc_qc_n = struct {
1062 pub const data = [_]u21{
1063 0x00A0,
1064 0x00A8,
1065 0x00AA,
1066 0x00AF,
1067 0x00B4,
1068 0x00B5,
1069 0x00B8,
1070 0x00B9,
1071 0x00BA,
1072 0x0149,
1073 0x017F,
1074 0x0374,
1075 0x037A,
1076 0x037E,
1077 0x0387,
1078 0x03F9,
1079 0x0587,
1080 0x09DF,
1081 0x0A33,
1082 0x0A36,
1083 0x0A5E,
1084 0x0E33,
1085 0x0EB3,
1086 0x0F0C,
1087 0x0F43,
1088 0x0F4D,
1089 0x0F52,
1090 0x0F57,
1091 0x0F5C,
1092 0x0F69,
1093 0x0F73,
1094 0x0F81,
1095 0x0F93,
1096 0x0F9D,
1097 0x0FA2,
1098 0x0FA7,
1099 0x0FAC,
1100 0x0FB9,
1101 0x10FC,
1102 0x1D78,
1103 0x1F71,
1104 0x1F73,
1105 0x1F75,
1106 0x1F77,
1107 0x1F79,
1108 0x1F7B,
1109 0x1F7D,
1110 0x1FBB,
1111 0x1FBD,
1112 0x1FBE,
1113 0x1FC9,
1114 0x1FCB,
1115 0x1FD3,
1116 0x1FDB,
1117 0x1FE3,
1118 0x1FEB,
1119 0x1FF9,
1120 0x1FFB,
1121 0x2011,
1122 0x2017,
1123 0x202F,
1124 0x203C,
1125 0x203E,
1126 0x2057,
1127 0x205F,
1128 0x2070,
1129 0x2071,
1130 0x207D,
1131 0x207E,
1132 0x207F,
1133 0x208D,
1134 0x208E,
1135 0x20A8,
1136 0x2102,
1137 0x2103,
1138 0x2107,
1139 0x2109,
1140 0x2115,
1141 0x2116,
1142 0x2124,
1143 0x2126,
1144 0x2128,
1145 0x2139,
1146 0x213B,
1147 0x2140,
1148 0x2189,
1149 0x2329,
1150 0x232A,
1151 0x24EA,
1152 0x2A0C,
1153 0x2ADC,
1154 0x2D6F,
1155 0x2E9F,
1156 0x2EF3,
1157 0x3000,
1158 0x3036,
1159 0x309F,
1160 0x30FF,
1161 0x3250,
1162 0xA770,
1163 0xAB69,
1164 0xFA10,
1165 0xFA12,
1166 0xFA20,
1167 0xFA22,
1168 0xFB1D,
1169 0xFB29,
1170 0xFB3E,
1171 0xFDFC,
1172 0xFE17,
1173 0xFE18,
1174 0xFE19,
1175 0xFE30,
1176 0xFE35,
1177 0xFE36,
1178 0xFE37,
1179 0xFE38,
1180 0xFE39,
1181 0xFE3A,
1182 0xFE3B,
1183 0xFE3C,
1184 0xFE3D,
1185 0xFE3E,
1186 0xFE3F,
1187 0xFE40,
1188 0xFE41,
1189 0xFE42,
1190 0xFE43,
1191 0xFE44,
1192 0xFE47,
1193 0xFE48,
1194 0xFE58,
1195 0xFE59,
1196 0xFE5A,
1197 0xFE5B,
1198 0xFE5C,
1199 0xFE5D,
1200 0xFE5E,
1201 0xFE62,
1202 0xFE63,
1203 0xFE68,
1204 0xFE69,
1205 0xFE74,
1206 0xFF04,
1207 0xFF08,
1208 0xFF09,
1209 0xFF0A,
1210 0xFF0B,
1211 0xFF0C,
1212 0xFF0D,
1213 0xFF3B,
1214 0xFF3C,
1215 0xFF3D,
1216 0xFF3E,
1217 0xFF3F,
1218 0xFF40,
1219 0xFF5B,
1220 0xFF5C,
1221 0xFF5D,
1222 0xFF5E,
1223 0xFF5F,
1224 0xFF60,
1225 0xFF61,
1226 0xFF62,
1227 0xFF63,
1228 0xFF70,
1229 0xFFE2,
1230 0xFFE3,
1231 0xFFE4,
1232 0xFFE8,
1233 0x1D4A2,
1234 0x1D4BB,
1235 0x1D546,
1236 0x1D6C1,
1237 0x1D6DB,
1238 0x1D6FB,
1239 0x1D715,
1240 0x1D735,
1241 0x1D74F,
1242 0x1D76F,
1243 0x1D789,
1244 0x1D7A9,
1245 0x1D7C3,
1246 0x1EE24,
1247 0x1EE27,
1248 0x1EE39,
1249 0x1EE3B,
1250 0x1EE42,
1251 0x1EE47,
1252 0x1EE49,
1253 0x1EE4B,
1254 0x1EE54,
1255 0x1EE57,
1256 0x1EE59,
1257 0x1EE5B,
1258 0x1EE5D,
1259 0x1EE5F,
1260 0x1EE64,
1261 0x1EE7E,
1262 0x1F190,
1263 };
1264 pub const data_range = [_]Range{
1265 .{ .from = 0x00B2, .to = 0x00B3 },
1266 .{ .from = 0x00BC, .to = 0x00BE },
1267 .{ .from = 0x0132, .to = 0x0133 },
1268 .{ .from = 0x013F, .to = 0x0140 },
1269 .{ .from = 0x01C4, .to = 0x01CC },
1270 .{ .from = 0x01F1, .to = 0x01F3 },
1271 .{ .from = 0x02B0, .to = 0x02B8 },
1272 .{ .from = 0x02D8, .to = 0x02DD },
1273 .{ .from = 0x02E0, .to = 0x02E4 },
1274 .{ .from = 0x0340, .to = 0x0341 },
1275 .{ .from = 0x0343, .to = 0x0344 },
1276 .{ .from = 0x0384, .to = 0x0385 },
1277 .{ .from = 0x03D0, .to = 0x03D6 },
1278 .{ .from = 0x03F0, .to = 0x03F2 },
1279 .{ .from = 0x03F4, .to = 0x03F5 },
1280 .{ .from = 0x0675, .to = 0x0678 },
1281 .{ .from = 0x0958, .to = 0x095F },
1282 .{ .from = 0x09DC, .to = 0x09DD },
1283 .{ .from = 0x0A59, .to = 0x0A5B },
1284 .{ .from = 0x0B5C, .to = 0x0B5D },
1285 .{ .from = 0x0EDC, .to = 0x0EDD },
1286 .{ .from = 0x0F75, .to = 0x0F79 },
1287 .{ .from = 0x1D2C, .to = 0x1D2E },
1288 .{ .from = 0x1D30, .to = 0x1D3A },
1289 .{ .from = 0x1D3C, .to = 0x1D4D },
1290 .{ .from = 0x1D4F, .to = 0x1D6A },
1291 .{ .from = 0x1D9B, .to = 0x1DBF },
1292 .{ .from = 0x1E9A, .to = 0x1E9B },
1293 .{ .from = 0x1FBF, .to = 0x1FC1 },
1294 .{ .from = 0x1FCD, .to = 0x1FCF },
1295 .{ .from = 0x1FDD, .to = 0x1FDF },
1296 .{ .from = 0x1FED, .to = 0x1FEF },
1297 .{ .from = 0x1FFD, .to = 0x1FFE },
1298 .{ .from = 0x2000, .to = 0x200A },
1299 .{ .from = 0x2024, .to = 0x2026 },
1300 .{ .from = 0x2033, .to = 0x2034 },
1301 .{ .from = 0x2036, .to = 0x2037 },
1302 .{ .from = 0x2047, .to = 0x2049 },
1303 .{ .from = 0x2074, .to = 0x2079 },
1304 .{ .from = 0x207A, .to = 0x207C },
1305 .{ .from = 0x2080, .to = 0x2089 },
1306 .{ .from = 0x208A, .to = 0x208C },
1307 .{ .from = 0x2090, .to = 0x209C },
1308 .{ .from = 0x2100, .to = 0x2101 },
1309 .{ .from = 0x2105, .to = 0x2106 },
1310 .{ .from = 0x210A, .to = 0x2113 },
1311 .{ .from = 0x2119, .to = 0x211D },
1312 .{ .from = 0x2120, .to = 0x2122 },
1313 .{ .from = 0x212A, .to = 0x212D },
1314 .{ .from = 0x212F, .to = 0x2131 },
1315 .{ .from = 0x2133, .to = 0x2134 },
1316 .{ .from = 0x2135, .to = 0x2138 },
1317 .{ .from = 0x213C, .to = 0x213F },
1318 .{ .from = 0x2145, .to = 0x2149 },
1319 .{ .from = 0x2150, .to = 0x215F },
1320 .{ .from = 0x2160, .to = 0x217F },
1321 .{ .from = 0x222C, .to = 0x222D },
1322 .{ .from = 0x222F, .to = 0x2230 },
1323 .{ .from = 0x2460, .to = 0x249B },
1324 .{ .from = 0x249C, .to = 0x24E9 },
1325 .{ .from = 0x2A74, .to = 0x2A76 },
1326 .{ .from = 0x2C7C, .to = 0x2C7D },
1327 .{ .from = 0x2F00, .to = 0x2FD5 },
1328 .{ .from = 0x3038, .to = 0x303A },
1329 .{ .from = 0x309B, .to = 0x309C },
1330 .{ .from = 0x3131, .to = 0x318E },
1331 .{ .from = 0x3192, .to = 0x3195 },
1332 .{ .from = 0x3196, .to = 0x319F },
1333 .{ .from = 0x3200, .to = 0x321E },
1334 .{ .from = 0x3220, .to = 0x3229 },
1335 .{ .from = 0x322A, .to = 0x3247 },
1336 .{ .from = 0x3251, .to = 0x325F },
1337 .{ .from = 0x3260, .to = 0x327E },
1338 .{ .from = 0x3280, .to = 0x3289 },
1339 .{ .from = 0x328A, .to = 0x32B0 },
1340 .{ .from = 0x32B1, .to = 0x32BF },
1341 .{ .from = 0x32C0, .to = 0x33FF },
1342 .{ .from = 0xA69C, .to = 0xA69D },
1343 .{ .from = 0xA7F1, .to = 0xA7F4 },
1344 .{ .from = 0xA7F8, .to = 0xA7F9 },
1345 .{ .from = 0xAB5C, .to = 0xAB5F },
1346 .{ .from = 0xF900, .to = 0xFA0D },
1347 .{ .from = 0xFA15, .to = 0xFA1E },
1348 .{ .from = 0xFA25, .to = 0xFA26 },
1349 .{ .from = 0xFA2A, .to = 0xFA6D },
1350 .{ .from = 0xFA70, .to = 0xFAD9 },
1351 .{ .from = 0xFB00, .to = 0xFB06 },
1352 .{ .from = 0xFB13, .to = 0xFB17 },
1353 .{ .from = 0xFB1F, .to = 0xFB28 },
1354 .{ .from = 0xFB2A, .to = 0xFB36 },
1355 .{ .from = 0xFB38, .to = 0xFB3C },
1356 .{ .from = 0xFB40, .to = 0xFB41 },
1357 .{ .from = 0xFB43, .to = 0xFB44 },
1358 .{ .from = 0xFB46, .to = 0xFBB1 },
1359 .{ .from = 0xFBD3, .to = 0xFD3D },
1360 .{ .from = 0xFD50, .to = 0xFD8F },
1361 .{ .from = 0xFD92, .to = 0xFDC7 },
1362 .{ .from = 0xFDF0, .to = 0xFDFB },
1363 .{ .from = 0xFE10, .to = 0xFE16 },
1364 .{ .from = 0xFE31, .to = 0xFE32 },
1365 .{ .from = 0xFE33, .to = 0xFE34 },
1366 .{ .from = 0xFE49, .to = 0xFE4C },
1367 .{ .from = 0xFE4D, .to = 0xFE4F },
1368 .{ .from = 0xFE50, .to = 0xFE52 },
1369 .{ .from = 0xFE54, .to = 0xFE57 },
1370 .{ .from = 0xFE5F, .to = 0xFE61 },
1371 .{ .from = 0xFE64, .to = 0xFE66 },
1372 .{ .from = 0xFE6A, .to = 0xFE6B },
1373 .{ .from = 0xFE70, .to = 0xFE72 },
1374 .{ .from = 0xFE76, .to = 0xFEFC },
1375 .{ .from = 0xFF01, .to = 0xFF03 },
1376 .{ .from = 0xFF05, .to = 0xFF07 },
1377 .{ .from = 0xFF0E, .to = 0xFF0F },
1378 .{ .from = 0xFF10, .to = 0xFF19 },
1379 .{ .from = 0xFF1A, .to = 0xFF1B },
1380 .{ .from = 0xFF1C, .to = 0xFF1E },
1381 .{ .from = 0xFF1F, .to = 0xFF20 },
1382 .{ .from = 0xFF21, .to = 0xFF3A },
1383 .{ .from = 0xFF41, .to = 0xFF5A },
1384 .{ .from = 0xFF64, .to = 0xFF65 },
1385 .{ .from = 0xFF66, .to = 0xFF6F },
1386 .{ .from = 0xFF71, .to = 0xFF9D },
1387 .{ .from = 0xFF9E, .to = 0xFF9F },
1388 .{ .from = 0xFFA0, .to = 0xFFBE },
1389 .{ .from = 0xFFC2, .to = 0xFFC7 },
1390 .{ .from = 0xFFCA, .to = 0xFFCF },
1391 .{ .from = 0xFFD2, .to = 0xFFD7 },
1392 .{ .from = 0xFFDA, .to = 0xFFDC },
1393 .{ .from = 0xFFE0, .to = 0xFFE1 },
1394 .{ .from = 0xFFE5, .to = 0xFFE6 },
1395 .{ .from = 0xFFE9, .to = 0xFFEC },
1396 .{ .from = 0xFFED, .to = 0xFFEE },
1397 .{ .from = 0x10781, .to = 0x10785 },
1398 .{ .from = 0x10787, .to = 0x107B0 },
1399 .{ .from = 0x107B2, .to = 0x107BA },
1400 .{ .from = 0x1CCD6, .to = 0x1CCEF },
1401 .{ .from = 0x1CCF0, .to = 0x1CCF9 },
1402 .{ .from = 0x1D15E, .to = 0x1D164 },
1403 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
1404 .{ .from = 0x1D400, .to = 0x1D454 },
1405 .{ .from = 0x1D456, .to = 0x1D49C },
1406 .{ .from = 0x1D49E, .to = 0x1D49F },
1407 .{ .from = 0x1D4A5, .to = 0x1D4A6 },
1408 .{ .from = 0x1D4A9, .to = 0x1D4AC },
1409 .{ .from = 0x1D4AE, .to = 0x1D4B9 },
1410 .{ .from = 0x1D4BD, .to = 0x1D4C3 },
1411 .{ .from = 0x1D4C5, .to = 0x1D505 },
1412 .{ .from = 0x1D507, .to = 0x1D50A },
1413 .{ .from = 0x1D50D, .to = 0x1D514 },
1414 .{ .from = 0x1D516, .to = 0x1D51C },
1415 .{ .from = 0x1D51E, .to = 0x1D539 },
1416 .{ .from = 0x1D53B, .to = 0x1D53E },
1417 .{ .from = 0x1D540, .to = 0x1D544 },
1418 .{ .from = 0x1D54A, .to = 0x1D550 },
1419 .{ .from = 0x1D552, .to = 0x1D6A5 },
1420 .{ .from = 0x1D6A8, .to = 0x1D6C0 },
1421 .{ .from = 0x1D6C2, .to = 0x1D6DA },
1422 .{ .from = 0x1D6DC, .to = 0x1D6FA },
1423 .{ .from = 0x1D6FC, .to = 0x1D714 },
1424 .{ .from = 0x1D716, .to = 0x1D734 },
1425 .{ .from = 0x1D736, .to = 0x1D74E },
1426 .{ .from = 0x1D750, .to = 0x1D76E },
1427 .{ .from = 0x1D770, .to = 0x1D788 },
1428 .{ .from = 0x1D78A, .to = 0x1D7A8 },
1429 .{ .from = 0x1D7AA, .to = 0x1D7C2 },
1430 .{ .from = 0x1D7C4, .to = 0x1D7CB },
1431 .{ .from = 0x1D7CE, .to = 0x1D7FF },
1432 .{ .from = 0x1E030, .to = 0x1E06D },
1433 .{ .from = 0x1EE00, .to = 0x1EE03 },
1434 .{ .from = 0x1EE05, .to = 0x1EE1F },
1435 .{ .from = 0x1EE21, .to = 0x1EE22 },
1436 .{ .from = 0x1EE29, .to = 0x1EE32 },
1437 .{ .from = 0x1EE34, .to = 0x1EE37 },
1438 .{ .from = 0x1EE4D, .to = 0x1EE4F },
1439 .{ .from = 0x1EE51, .to = 0x1EE52 },
1440 .{ .from = 0x1EE61, .to = 0x1EE62 },
1441 .{ .from = 0x1EE67, .to = 0x1EE6A },
1442 .{ .from = 0x1EE6C, .to = 0x1EE72 },
1443 .{ .from = 0x1EE74, .to = 0x1EE77 },
1444 .{ .from = 0x1EE79, .to = 0x1EE7C },
1445 .{ .from = 0x1EE80, .to = 0x1EE89 },
1446 .{ .from = 0x1EE8B, .to = 0x1EE9B },
1447 .{ .from = 0x1EEA1, .to = 0x1EEA3 },
1448 .{ .from = 0x1EEA5, .to = 0x1EEA9 },
1449 .{ .from = 0x1EEAB, .to = 0x1EEBB },
1450 .{ .from = 0x1F100, .to = 0x1F10A },
1451 .{ .from = 0x1F110, .to = 0x1F12E },
1452 .{ .from = 0x1F130, .to = 0x1F14F },
1453 .{ .from = 0x1F16A, .to = 0x1F16C },
1454 .{ .from = 0x1F200, .to = 0x1F202 },
1455 .{ .from = 0x1F210, .to = 0x1F23B },
1456 .{ .from = 0x1F240, .to = 0x1F248 },
1457 .{ .from = 0x1F250, .to = 0x1F251 },
1458 .{ .from = 0x1FBF0, .to = 0x1FBF9 },
1459 .{ .from = 0x2F800, .to = 0x2FA1D },
1460 };
1461};
1462
1463pub const nfkc_qc_m = struct {
1464 pub const data = [_]u21{
1465 0x030F,
1466 0x0311,
1467 0x031B,
1468 0x0338,
1469 0x0342,
1470 0x0345,
1471 0x093C,
1472 0x09BE,
1473 0x09D7,
1474 0x0B3E,
1475 0x0B56,
1476 0x0B57,
1477 0x0BBE,
1478 0x0BD7,
1479 0x0C56,
1480 0x0CC2,
1481 0x0D3E,
1482 0x0D57,
1483 0x0DCA,
1484 0x0DCF,
1485 0x0DDF,
1486 0x102E,
1487 0x1B35,
1488 0x110BA,
1489 0x11127,
1490 0x1133E,
1491 0x11357,
1492 0x113B8,
1493 0x113BB,
1494 0x113C2,
1495 0x113C5,
1496 0x114B0,
1497 0x114BA,
1498 0x114BD,
1499 0x115AF,
1500 0x11930,
1501 };
1502 pub const data_range = [_]Range{
1503 .{ .from = 0x0300, .to = 0x0304 },
1504 .{ .from = 0x0306, .to = 0x030C },
1505 .{ .from = 0x0313, .to = 0x0314 },
1506 .{ .from = 0x0323, .to = 0x0328 },
1507 .{ .from = 0x032D, .to = 0x032E },
1508 .{ .from = 0x0330, .to = 0x0331 },
1509 .{ .from = 0x0653, .to = 0x0655 },
1510 .{ .from = 0x0CD5, .to = 0x0CD6 },
1511 .{ .from = 0x1161, .to = 0x1175 },
1512 .{ .from = 0x11A8, .to = 0x11C2 },
1513 .{ .from = 0x3099, .to = 0x309A },
1514 .{ .from = 0x113C7, .to = 0x113C9 },
1515 .{ .from = 0x1611E, .to = 0x16129 },
1516 .{ .from = 0x16D67, .to = 0x16D68 },
1517 };
1518};
1519
1520pub const changes_when_nfc_casefolded = struct {
1521 pub const data = [_]u21{
1522 0x00A0,
1523 0x00A8,
1524 0x00AA,
1525 0x00AD,
1526 0x00AF,
1527 0x00B4,
1528 0x00B5,
1529 0x00B8,
1530 0x00B9,
1531 0x00BA,
1532 0x0100,
1533 0x0102,
1534 0x0104,
1535 0x0106,
1536 0x0108,
1537 0x010A,
1538 0x010C,
1539 0x010E,
1540 0x0110,
1541 0x0112,
1542 0x0114,
1543 0x0116,
1544 0x0118,
1545 0x011A,
1546 0x011C,
1547 0x011E,
1548 0x0120,
1549 0x0122,
1550 0x0124,
1551 0x0126,
1552 0x0128,
1553 0x012A,
1554 0x012C,
1555 0x012E,
1556 0x0130,
1557 0x0136,
1558 0x0139,
1559 0x013B,
1560 0x013D,
1561 0x0143,
1562 0x0145,
1563 0x0147,
1564 0x014C,
1565 0x014E,
1566 0x0150,
1567 0x0152,
1568 0x0154,
1569 0x0156,
1570 0x0158,
1571 0x015A,
1572 0x015C,
1573 0x015E,
1574 0x0160,
1575 0x0162,
1576 0x0164,
1577 0x0166,
1578 0x0168,
1579 0x016A,
1580 0x016C,
1581 0x016E,
1582 0x0170,
1583 0x0172,
1584 0x0174,
1585 0x0176,
1586 0x017B,
1587 0x017D,
1588 0x017F,
1589 0x0184,
1590 0x01A2,
1591 0x01A4,
1592 0x01A9,
1593 0x01AC,
1594 0x01B5,
1595 0x01BC,
1596 0x01CF,
1597 0x01D1,
1598 0x01D3,
1599 0x01D5,
1600 0x01D7,
1601 0x01D9,
1602 0x01DB,
1603 0x01DE,
1604 0x01E0,
1605 0x01E2,
1606 0x01E4,
1607 0x01E6,
1608 0x01E8,
1609 0x01EA,
1610 0x01EC,
1611 0x01EE,
1612 0x01FA,
1613 0x01FC,
1614 0x01FE,
1615 0x0200,
1616 0x0202,
1617 0x0204,
1618 0x0206,
1619 0x0208,
1620 0x020A,
1621 0x020C,
1622 0x020E,
1623 0x0210,
1624 0x0212,
1625 0x0214,
1626 0x0216,
1627 0x0218,
1628 0x021A,
1629 0x021C,
1630 0x021E,
1631 0x0220,
1632 0x0222,
1633 0x0224,
1634 0x0226,
1635 0x0228,
1636 0x022A,
1637 0x022C,
1638 0x022E,
1639 0x0230,
1640 0x0232,
1641 0x0241,
1642 0x0248,
1643 0x024A,
1644 0x024C,
1645 0x024E,
1646 0x034F,
1647 0x0370,
1648 0x0372,
1649 0x0374,
1650 0x0376,
1651 0x037A,
1652 0x037E,
1653 0x037F,
1654 0x0386,
1655 0x0387,
1656 0x038C,
1657 0x03C2,
1658 0x03D8,
1659 0x03DA,
1660 0x03DC,
1661 0x03DE,
1662 0x03E0,
1663 0x03E2,
1664 0x03E4,
1665 0x03E6,
1666 0x03E8,
1667 0x03EA,
1668 0x03EC,
1669 0x03EE,
1670 0x03F7,
1671 0x0460,
1672 0x0462,
1673 0x0464,
1674 0x0466,
1675 0x0468,
1676 0x046A,
1677 0x046C,
1678 0x046E,
1679 0x0470,
1680 0x0472,
1681 0x0474,
1682 0x0476,
1683 0x0478,
1684 0x047A,
1685 0x047C,
1686 0x047E,
1687 0x0480,
1688 0x048A,
1689 0x048C,
1690 0x048E,
1691 0x0490,
1692 0x0492,
1693 0x0494,
1694 0x0496,
1695 0x0498,
1696 0x049A,
1697 0x049C,
1698 0x049E,
1699 0x04A0,
1700 0x04A2,
1701 0x04A4,
1702 0x04A6,
1703 0x04A8,
1704 0x04AA,
1705 0x04AC,
1706 0x04AE,
1707 0x04B0,
1708 0x04B2,
1709 0x04B4,
1710 0x04B6,
1711 0x04B8,
1712 0x04BA,
1713 0x04BC,
1714 0x04BE,
1715 0x04C3,
1716 0x04C5,
1717 0x04C7,
1718 0x04C9,
1719 0x04CB,
1720 0x04CD,
1721 0x04D0,
1722 0x04D2,
1723 0x04D4,
1724 0x04D6,
1725 0x04D8,
1726 0x04DA,
1727 0x04DC,
1728 0x04DE,
1729 0x04E0,
1730 0x04E2,
1731 0x04E4,
1732 0x04E6,
1733 0x04E8,
1734 0x04EA,
1735 0x04EC,
1736 0x04EE,
1737 0x04F0,
1738 0x04F2,
1739 0x04F4,
1740 0x04F6,
1741 0x04F8,
1742 0x04FA,
1743 0x04FC,
1744 0x04FE,
1745 0x0500,
1746 0x0502,
1747 0x0504,
1748 0x0506,
1749 0x0508,
1750 0x050A,
1751 0x050C,
1752 0x050E,
1753 0x0510,
1754 0x0512,
1755 0x0514,
1756 0x0516,
1757 0x0518,
1758 0x051A,
1759 0x051C,
1760 0x051E,
1761 0x0520,
1762 0x0522,
1763 0x0524,
1764 0x0526,
1765 0x0528,
1766 0x052A,
1767 0x052C,
1768 0x052E,
1769 0x0587,
1770 0x061C,
1771 0x09DF,
1772 0x0A33,
1773 0x0A36,
1774 0x0A5E,
1775 0x0E33,
1776 0x0EB3,
1777 0x0F0C,
1778 0x0F43,
1779 0x0F4D,
1780 0x0F52,
1781 0x0F57,
1782 0x0F5C,
1783 0x0F69,
1784 0x0F73,
1785 0x0F81,
1786 0x0F93,
1787 0x0F9D,
1788 0x0FA2,
1789 0x0FA7,
1790 0x0FAC,
1791 0x0FB9,
1792 0x10C7,
1793 0x10CD,
1794 0x10FC,
1795 0x180E,
1796 0x180F,
1797 0x1D78,
1798 0x1E00,
1799 0x1E02,
1800 0x1E04,
1801 0x1E06,
1802 0x1E08,
1803 0x1E0A,
1804 0x1E0C,
1805 0x1E0E,
1806 0x1E10,
1807 0x1E12,
1808 0x1E14,
1809 0x1E16,
1810 0x1E18,
1811 0x1E1A,
1812 0x1E1C,
1813 0x1E1E,
1814 0x1E20,
1815 0x1E22,
1816 0x1E24,
1817 0x1E26,
1818 0x1E28,
1819 0x1E2A,
1820 0x1E2C,
1821 0x1E2E,
1822 0x1E30,
1823 0x1E32,
1824 0x1E34,
1825 0x1E36,
1826 0x1E38,
1827 0x1E3A,
1828 0x1E3C,
1829 0x1E3E,
1830 0x1E40,
1831 0x1E42,
1832 0x1E44,
1833 0x1E46,
1834 0x1E48,
1835 0x1E4A,
1836 0x1E4C,
1837 0x1E4E,
1838 0x1E50,
1839 0x1E52,
1840 0x1E54,
1841 0x1E56,
1842 0x1E58,
1843 0x1E5A,
1844 0x1E5C,
1845 0x1E5E,
1846 0x1E60,
1847 0x1E62,
1848 0x1E64,
1849 0x1E66,
1850 0x1E68,
1851 0x1E6A,
1852 0x1E6C,
1853 0x1E6E,
1854 0x1E70,
1855 0x1E72,
1856 0x1E74,
1857 0x1E76,
1858 0x1E78,
1859 0x1E7A,
1860 0x1E7C,
1861 0x1E7E,
1862 0x1E80,
1863 0x1E82,
1864 0x1E84,
1865 0x1E86,
1866 0x1E88,
1867 0x1E8A,
1868 0x1E8C,
1869 0x1E8E,
1870 0x1E90,
1871 0x1E92,
1872 0x1E94,
1873 0x1E9E,
1874 0x1EA0,
1875 0x1EA2,
1876 0x1EA4,
1877 0x1EA6,
1878 0x1EA8,
1879 0x1EAA,
1880 0x1EAC,
1881 0x1EAE,
1882 0x1EB0,
1883 0x1EB2,
1884 0x1EB4,
1885 0x1EB6,
1886 0x1EB8,
1887 0x1EBA,
1888 0x1EBC,
1889 0x1EBE,
1890 0x1EC0,
1891 0x1EC2,
1892 0x1EC4,
1893 0x1EC6,
1894 0x1EC8,
1895 0x1ECA,
1896 0x1ECC,
1897 0x1ECE,
1898 0x1ED0,
1899 0x1ED2,
1900 0x1ED4,
1901 0x1ED6,
1902 0x1ED8,
1903 0x1EDA,
1904 0x1EDC,
1905 0x1EDE,
1906 0x1EE0,
1907 0x1EE2,
1908 0x1EE4,
1909 0x1EE6,
1910 0x1EE8,
1911 0x1EEA,
1912 0x1EEC,
1913 0x1EEE,
1914 0x1EF0,
1915 0x1EF2,
1916 0x1EF4,
1917 0x1EF6,
1918 0x1EF8,
1919 0x1EFA,
1920 0x1EFC,
1921 0x1EFE,
1922 0x1F59,
1923 0x1F5B,
1924 0x1F5D,
1925 0x1F5F,
1926 0x1F71,
1927 0x1F73,
1928 0x1F75,
1929 0x1F77,
1930 0x1F79,
1931 0x1F7B,
1932 0x1F7D,
1933 0x1FBD,
1934 0x1FBE,
1935 0x1FD3,
1936 0x1FE3,
1937 0x2011,
1938 0x2017,
1939 0x202F,
1940 0x203C,
1941 0x203E,
1942 0x2057,
1943 0x205F,
1944 0x2065,
1945 0x2070,
1946 0x2071,
1947 0x207D,
1948 0x207E,
1949 0x207F,
1950 0x208D,
1951 0x208E,
1952 0x20A8,
1953 0x2102,
1954 0x2103,
1955 0x2107,
1956 0x2109,
1957 0x2115,
1958 0x2116,
1959 0x2124,
1960 0x2126,
1961 0x2128,
1962 0x2139,
1963 0x213B,
1964 0x2140,
1965 0x2183,
1966 0x2189,
1967 0x2329,
1968 0x232A,
1969 0x24EA,
1970 0x2A0C,
1971 0x2ADC,
1972 0x2C60,
1973 0x2C67,
1974 0x2C69,
1975 0x2C6B,
1976 0x2C72,
1977 0x2C75,
1978 0x2C82,
1979 0x2C84,
1980 0x2C86,
1981 0x2C88,
1982 0x2C8A,
1983 0x2C8C,
1984 0x2C8E,
1985 0x2C90,
1986 0x2C92,
1987 0x2C94,
1988 0x2C96,
1989 0x2C98,
1990 0x2C9A,
1991 0x2C9C,
1992 0x2C9E,
1993 0x2CA0,
1994 0x2CA2,
1995 0x2CA4,
1996 0x2CA6,
1997 0x2CA8,
1998 0x2CAA,
1999 0x2CAC,
2000 0x2CAE,
2001 0x2CB0,
2002 0x2CB2,
2003 0x2CB4,
2004 0x2CB6,
2005 0x2CB8,
2006 0x2CBA,
2007 0x2CBC,
2008 0x2CBE,
2009 0x2CC0,
2010 0x2CC2,
2011 0x2CC4,
2012 0x2CC6,
2013 0x2CC8,
2014 0x2CCA,
2015 0x2CCC,
2016 0x2CCE,
2017 0x2CD0,
2018 0x2CD2,
2019 0x2CD4,
2020 0x2CD6,
2021 0x2CD8,
2022 0x2CDA,
2023 0x2CDC,
2024 0x2CDE,
2025 0x2CE0,
2026 0x2CE2,
2027 0x2CEB,
2028 0x2CED,
2029 0x2CF2,
2030 0x2D6F,
2031 0x2E9F,
2032 0x2EF3,
2033 0x3000,
2034 0x3036,
2035 0x309F,
2036 0x30FF,
2037 0x3250,
2038 0xA640,
2039 0xA642,
2040 0xA644,
2041 0xA646,
2042 0xA648,
2043 0xA64A,
2044 0xA64C,
2045 0xA64E,
2046 0xA650,
2047 0xA652,
2048 0xA654,
2049 0xA656,
2050 0xA658,
2051 0xA65A,
2052 0xA65C,
2053 0xA65E,
2054 0xA660,
2055 0xA662,
2056 0xA664,
2057 0xA666,
2058 0xA668,
2059 0xA66A,
2060 0xA66C,
2061 0xA680,
2062 0xA682,
2063 0xA684,
2064 0xA686,
2065 0xA688,
2066 0xA68A,
2067 0xA68C,
2068 0xA68E,
2069 0xA690,
2070 0xA692,
2071 0xA694,
2072 0xA696,
2073 0xA698,
2074 0xA69A,
2075 0xA722,
2076 0xA724,
2077 0xA726,
2078 0xA728,
2079 0xA72A,
2080 0xA72C,
2081 0xA72E,
2082 0xA732,
2083 0xA734,
2084 0xA736,
2085 0xA738,
2086 0xA73A,
2087 0xA73C,
2088 0xA73E,
2089 0xA740,
2090 0xA742,
2091 0xA744,
2092 0xA746,
2093 0xA748,
2094 0xA74A,
2095 0xA74C,
2096 0xA74E,
2097 0xA750,
2098 0xA752,
2099 0xA754,
2100 0xA756,
2101 0xA758,
2102 0xA75A,
2103 0xA75C,
2104 0xA75E,
2105 0xA760,
2106 0xA762,
2107 0xA764,
2108 0xA766,
2109 0xA768,
2110 0xA76A,
2111 0xA76C,
2112 0xA76E,
2113 0xA770,
2114 0xA779,
2115 0xA77B,
2116 0xA780,
2117 0xA782,
2118 0xA784,
2119 0xA786,
2120 0xA78B,
2121 0xA78D,
2122 0xA790,
2123 0xA792,
2124 0xA796,
2125 0xA798,
2126 0xA79A,
2127 0xA79C,
2128 0xA79E,
2129 0xA7A0,
2130 0xA7A2,
2131 0xA7A4,
2132 0xA7A6,
2133 0xA7A8,
2134 0xA7B6,
2135 0xA7B8,
2136 0xA7BA,
2137 0xA7BC,
2138 0xA7BE,
2139 0xA7C0,
2140 0xA7C2,
2141 0xA7C9,
2142 0xA7CE,
2143 0xA7D0,
2144 0xA7D2,
2145 0xA7D4,
2146 0xA7D6,
2147 0xA7D8,
2148 0xA7DA,
2149 0xA7DC,
2150 0xA7F5,
2151 0xAB69,
2152 0xFA10,
2153 0xFA12,
2154 0xFA20,
2155 0xFA22,
2156 0xFB1D,
2157 0xFB29,
2158 0xFB3E,
2159 0xFDFC,
2160 0xFE17,
2161 0xFE18,
2162 0xFE19,
2163 0xFE30,
2164 0xFE35,
2165 0xFE36,
2166 0xFE37,
2167 0xFE38,
2168 0xFE39,
2169 0xFE3A,
2170 0xFE3B,
2171 0xFE3C,
2172 0xFE3D,
2173 0xFE3E,
2174 0xFE3F,
2175 0xFE40,
2176 0xFE41,
2177 0xFE42,
2178 0xFE43,
2179 0xFE44,
2180 0xFE47,
2181 0xFE48,
2182 0xFE58,
2183 0xFE59,
2184 0xFE5A,
2185 0xFE5B,
2186 0xFE5C,
2187 0xFE5D,
2188 0xFE5E,
2189 0xFE62,
2190 0xFE63,
2191 0xFE68,
2192 0xFE69,
2193 0xFE74,
2194 0xFEFF,
2195 0xFF04,
2196 0xFF08,
2197 0xFF09,
2198 0xFF0A,
2199 0xFF0B,
2200 0xFF0C,
2201 0xFF0D,
2202 0xFF3B,
2203 0xFF3C,
2204 0xFF3D,
2205 0xFF3E,
2206 0xFF3F,
2207 0xFF40,
2208 0xFF5B,
2209 0xFF5C,
2210 0xFF5D,
2211 0xFF5E,
2212 0xFF5F,
2213 0xFF60,
2214 0xFF61,
2215 0xFF62,
2216 0xFF63,
2217 0xFF70,
2218 0xFFE2,
2219 0xFFE3,
2220 0xFFE4,
2221 0xFFE8,
2222 0x1D4A2,
2223 0x1D4BB,
2224 0x1D546,
2225 0x1D6C1,
2226 0x1D6DB,
2227 0x1D6FB,
2228 0x1D715,
2229 0x1D735,
2230 0x1D74F,
2231 0x1D76F,
2232 0x1D789,
2233 0x1D7A9,
2234 0x1D7C3,
2235 0x1EE24,
2236 0x1EE27,
2237 0x1EE39,
2238 0x1EE3B,
2239 0x1EE42,
2240 0x1EE47,
2241 0x1EE49,
2242 0x1EE4B,
2243 0x1EE54,
2244 0x1EE57,
2245 0x1EE59,
2246 0x1EE5B,
2247 0x1EE5D,
2248 0x1EE5F,
2249 0x1EE64,
2250 0x1EE7E,
2251 0x1F190,
2252 0xE0000,
2253 0xE0001,
2254 };
2255 pub const data_range = [_]Range{
2256 .{ .from = 0x0041, .to = 0x005A },
2257 .{ .from = 0x00B2, .to = 0x00B3 },
2258 .{ .from = 0x00BC, .to = 0x00BE },
2259 .{ .from = 0x00C0, .to = 0x00D6 },
2260 .{ .from = 0x00D8, .to = 0x00DF },
2261 .{ .from = 0x0132, .to = 0x0134 },
2262 .{ .from = 0x013F, .to = 0x0141 },
2263 .{ .from = 0x0149, .to = 0x014A },
2264 .{ .from = 0x0178, .to = 0x0179 },
2265 .{ .from = 0x0181, .to = 0x0182 },
2266 .{ .from = 0x0186, .to = 0x0187 },
2267 .{ .from = 0x0189, .to = 0x018B },
2268 .{ .from = 0x018E, .to = 0x0191 },
2269 .{ .from = 0x0193, .to = 0x0194 },
2270 .{ .from = 0x0196, .to = 0x0198 },
2271 .{ .from = 0x019C, .to = 0x019D },
2272 .{ .from = 0x019F, .to = 0x01A0 },
2273 .{ .from = 0x01A6, .to = 0x01A7 },
2274 .{ .from = 0x01AE, .to = 0x01AF },
2275 .{ .from = 0x01B1, .to = 0x01B3 },
2276 .{ .from = 0x01B7, .to = 0x01B8 },
2277 .{ .from = 0x01C4, .to = 0x01CD },
2278 .{ .from = 0x01F1, .to = 0x01F4 },
2279 .{ .from = 0x01F6, .to = 0x01F8 },
2280 .{ .from = 0x023A, .to = 0x023B },
2281 .{ .from = 0x023D, .to = 0x023E },
2282 .{ .from = 0x0243, .to = 0x0246 },
2283 .{ .from = 0x02B0, .to = 0x02B8 },
2284 .{ .from = 0x02D8, .to = 0x02DD },
2285 .{ .from = 0x02E0, .to = 0x02E4 },
2286 .{ .from = 0x0340, .to = 0x0341 },
2287 .{ .from = 0x0343, .to = 0x0345 },
2288 .{ .from = 0x0384, .to = 0x0385 },
2289 .{ .from = 0x0388, .to = 0x038A },
2290 .{ .from = 0x038E, .to = 0x038F },
2291 .{ .from = 0x0391, .to = 0x03A1 },
2292 .{ .from = 0x03A3, .to = 0x03AB },
2293 .{ .from = 0x03CF, .to = 0x03D6 },
2294 .{ .from = 0x03F0, .to = 0x03F2 },
2295 .{ .from = 0x03F4, .to = 0x03F5 },
2296 .{ .from = 0x03F9, .to = 0x03FA },
2297 .{ .from = 0x03FD, .to = 0x042F },
2298 .{ .from = 0x04C0, .to = 0x04C1 },
2299 .{ .from = 0x0531, .to = 0x0556 },
2300 .{ .from = 0x0675, .to = 0x0678 },
2301 .{ .from = 0x0958, .to = 0x095F },
2302 .{ .from = 0x09DC, .to = 0x09DD },
2303 .{ .from = 0x0A59, .to = 0x0A5B },
2304 .{ .from = 0x0B5C, .to = 0x0B5D },
2305 .{ .from = 0x0EDC, .to = 0x0EDD },
2306 .{ .from = 0x0F75, .to = 0x0F79 },
2307 .{ .from = 0x10A0, .to = 0x10C5 },
2308 .{ .from = 0x115F, .to = 0x1160 },
2309 .{ .from = 0x13F8, .to = 0x13FD },
2310 .{ .from = 0x17B4, .to = 0x17B5 },
2311 .{ .from = 0x180B, .to = 0x180D },
2312 .{ .from = 0x1C80, .to = 0x1C89 },
2313 .{ .from = 0x1C90, .to = 0x1CBA },
2314 .{ .from = 0x1CBD, .to = 0x1CBF },
2315 .{ .from = 0x1D2C, .to = 0x1D2E },
2316 .{ .from = 0x1D30, .to = 0x1D3A },
2317 .{ .from = 0x1D3C, .to = 0x1D4D },
2318 .{ .from = 0x1D4F, .to = 0x1D6A },
2319 .{ .from = 0x1D9B, .to = 0x1DBF },
2320 .{ .from = 0x1E9A, .to = 0x1E9B },
2321 .{ .from = 0x1F08, .to = 0x1F0F },
2322 .{ .from = 0x1F18, .to = 0x1F1D },
2323 .{ .from = 0x1F28, .to = 0x1F2F },
2324 .{ .from = 0x1F38, .to = 0x1F3F },
2325 .{ .from = 0x1F48, .to = 0x1F4D },
2326 .{ .from = 0x1F68, .to = 0x1F6F },
2327 .{ .from = 0x1F80, .to = 0x1FAF },
2328 .{ .from = 0x1FB2, .to = 0x1FB4 },
2329 .{ .from = 0x1FB7, .to = 0x1FBC },
2330 .{ .from = 0x1FBF, .to = 0x1FC1 },
2331 .{ .from = 0x1FC2, .to = 0x1FC4 },
2332 .{ .from = 0x1FC7, .to = 0x1FCC },
2333 .{ .from = 0x1FCD, .to = 0x1FCF },
2334 .{ .from = 0x1FD8, .to = 0x1FDB },
2335 .{ .from = 0x1FDD, .to = 0x1FDF },
2336 .{ .from = 0x1FE8, .to = 0x1FEC },
2337 .{ .from = 0x1FED, .to = 0x1FEF },
2338 .{ .from = 0x1FF2, .to = 0x1FF4 },
2339 .{ .from = 0x1FF7, .to = 0x1FFC },
2340 .{ .from = 0x1FFD, .to = 0x1FFE },
2341 .{ .from = 0x2000, .to = 0x200A },
2342 .{ .from = 0x200B, .to = 0x200F },
2343 .{ .from = 0x2024, .to = 0x2026 },
2344 .{ .from = 0x202A, .to = 0x202E },
2345 .{ .from = 0x2033, .to = 0x2034 },
2346 .{ .from = 0x2036, .to = 0x2037 },
2347 .{ .from = 0x2047, .to = 0x2049 },
2348 .{ .from = 0x2060, .to = 0x2064 },
2349 .{ .from = 0x2066, .to = 0x206F },
2350 .{ .from = 0x2074, .to = 0x2079 },
2351 .{ .from = 0x207A, .to = 0x207C },
2352 .{ .from = 0x2080, .to = 0x2089 },
2353 .{ .from = 0x208A, .to = 0x208C },
2354 .{ .from = 0x2090, .to = 0x209C },
2355 .{ .from = 0x2100, .to = 0x2101 },
2356 .{ .from = 0x2105, .to = 0x2106 },
2357 .{ .from = 0x210A, .to = 0x2113 },
2358 .{ .from = 0x2119, .to = 0x211D },
2359 .{ .from = 0x2120, .to = 0x2122 },
2360 .{ .from = 0x212A, .to = 0x212D },
2361 .{ .from = 0x212F, .to = 0x2134 },
2362 .{ .from = 0x2135, .to = 0x2138 },
2363 .{ .from = 0x213C, .to = 0x213F },
2364 .{ .from = 0x2145, .to = 0x2149 },
2365 .{ .from = 0x2150, .to = 0x215F },
2366 .{ .from = 0x2160, .to = 0x217F },
2367 .{ .from = 0x222C, .to = 0x222D },
2368 .{ .from = 0x222F, .to = 0x2230 },
2369 .{ .from = 0x2460, .to = 0x249B },
2370 .{ .from = 0x249C, .to = 0x24E9 },
2371 .{ .from = 0x2A74, .to = 0x2A76 },
2372 .{ .from = 0x2C00, .to = 0x2C2F },
2373 .{ .from = 0x2C62, .to = 0x2C64 },
2374 .{ .from = 0x2C6D, .to = 0x2C70 },
2375 .{ .from = 0x2C7C, .to = 0x2C7D },
2376 .{ .from = 0x2C7E, .to = 0x2C80 },
2377 .{ .from = 0x2F00, .to = 0x2FD5 },
2378 .{ .from = 0x3038, .to = 0x303A },
2379 .{ .from = 0x309B, .to = 0x309C },
2380 .{ .from = 0x3131, .to = 0x318E },
2381 .{ .from = 0x3192, .to = 0x3195 },
2382 .{ .from = 0x3196, .to = 0x319F },
2383 .{ .from = 0x3200, .to = 0x321E },
2384 .{ .from = 0x3220, .to = 0x3229 },
2385 .{ .from = 0x322A, .to = 0x3247 },
2386 .{ .from = 0x3251, .to = 0x325F },
2387 .{ .from = 0x3260, .to = 0x327E },
2388 .{ .from = 0x3280, .to = 0x3289 },
2389 .{ .from = 0x328A, .to = 0x32B0 },
2390 .{ .from = 0x32B1, .to = 0x32BF },
2391 .{ .from = 0x32C0, .to = 0x33FF },
2392 .{ .from = 0xA69C, .to = 0xA69D },
2393 .{ .from = 0xA77D, .to = 0xA77E },
2394 .{ .from = 0xA7AA, .to = 0xA7AE },
2395 .{ .from = 0xA7B0, .to = 0xA7B4 },
2396 .{ .from = 0xA7C4, .to = 0xA7C7 },
2397 .{ .from = 0xA7CB, .to = 0xA7CC },
2398 .{ .from = 0xA7F1, .to = 0xA7F4 },
2399 .{ .from = 0xA7F8, .to = 0xA7F9 },
2400 .{ .from = 0xAB5C, .to = 0xAB5F },
2401 .{ .from = 0xAB70, .to = 0xABBF },
2402 .{ .from = 0xF900, .to = 0xFA0D },
2403 .{ .from = 0xFA15, .to = 0xFA1E },
2404 .{ .from = 0xFA25, .to = 0xFA26 },
2405 .{ .from = 0xFA2A, .to = 0xFA6D },
2406 .{ .from = 0xFA70, .to = 0xFAD9 },
2407 .{ .from = 0xFB00, .to = 0xFB06 },
2408 .{ .from = 0xFB13, .to = 0xFB17 },
2409 .{ .from = 0xFB1F, .to = 0xFB28 },
2410 .{ .from = 0xFB2A, .to = 0xFB36 },
2411 .{ .from = 0xFB38, .to = 0xFB3C },
2412 .{ .from = 0xFB40, .to = 0xFB41 },
2413 .{ .from = 0xFB43, .to = 0xFB44 },
2414 .{ .from = 0xFB46, .to = 0xFBB1 },
2415 .{ .from = 0xFBD3, .to = 0xFD3D },
2416 .{ .from = 0xFD50, .to = 0xFD8F },
2417 .{ .from = 0xFD92, .to = 0xFDC7 },
2418 .{ .from = 0xFDF0, .to = 0xFDFB },
2419 .{ .from = 0xFE00, .to = 0xFE0F },
2420 .{ .from = 0xFE10, .to = 0xFE16 },
2421 .{ .from = 0xFE31, .to = 0xFE32 },
2422 .{ .from = 0xFE33, .to = 0xFE34 },
2423 .{ .from = 0xFE49, .to = 0xFE4C },
2424 .{ .from = 0xFE4D, .to = 0xFE4F },
2425 .{ .from = 0xFE50, .to = 0xFE52 },
2426 .{ .from = 0xFE54, .to = 0xFE57 },
2427 .{ .from = 0xFE5F, .to = 0xFE61 },
2428 .{ .from = 0xFE64, .to = 0xFE66 },
2429 .{ .from = 0xFE6A, .to = 0xFE6B },
2430 .{ .from = 0xFE70, .to = 0xFE72 },
2431 .{ .from = 0xFE76, .to = 0xFEFC },
2432 .{ .from = 0xFF01, .to = 0xFF03 },
2433 .{ .from = 0xFF05, .to = 0xFF07 },
2434 .{ .from = 0xFF0E, .to = 0xFF0F },
2435 .{ .from = 0xFF10, .to = 0xFF19 },
2436 .{ .from = 0xFF1A, .to = 0xFF1B },
2437 .{ .from = 0xFF1C, .to = 0xFF1E },
2438 .{ .from = 0xFF1F, .to = 0xFF20 },
2439 .{ .from = 0xFF21, .to = 0xFF3A },
2440 .{ .from = 0xFF41, .to = 0xFF5A },
2441 .{ .from = 0xFF64, .to = 0xFF65 },
2442 .{ .from = 0xFF66, .to = 0xFF6F },
2443 .{ .from = 0xFF71, .to = 0xFF9D },
2444 .{ .from = 0xFF9E, .to = 0xFF9F },
2445 .{ .from = 0xFFA0, .to = 0xFFBE },
2446 .{ .from = 0xFFC2, .to = 0xFFC7 },
2447 .{ .from = 0xFFCA, .to = 0xFFCF },
2448 .{ .from = 0xFFD2, .to = 0xFFD7 },
2449 .{ .from = 0xFFDA, .to = 0xFFDC },
2450 .{ .from = 0xFFE0, .to = 0xFFE1 },
2451 .{ .from = 0xFFE5, .to = 0xFFE6 },
2452 .{ .from = 0xFFE9, .to = 0xFFEC },
2453 .{ .from = 0xFFED, .to = 0xFFEE },
2454 .{ .from = 0xFFF0, .to = 0xFFF8 },
2455 .{ .from = 0x10400, .to = 0x10427 },
2456 .{ .from = 0x104B0, .to = 0x104D3 },
2457 .{ .from = 0x10570, .to = 0x1057A },
2458 .{ .from = 0x1057C, .to = 0x1058A },
2459 .{ .from = 0x1058C, .to = 0x10592 },
2460 .{ .from = 0x10594, .to = 0x10595 },
2461 .{ .from = 0x10781, .to = 0x10785 },
2462 .{ .from = 0x10787, .to = 0x107B0 },
2463 .{ .from = 0x107B2, .to = 0x107BA },
2464 .{ .from = 0x10C80, .to = 0x10CB2 },
2465 .{ .from = 0x10D50, .to = 0x10D65 },
2466 .{ .from = 0x118A0, .to = 0x118BF },
2467 .{ .from = 0x16E40, .to = 0x16E5F },
2468 .{ .from = 0x16EA0, .to = 0x16EB8 },
2469 .{ .from = 0x1BCA0, .to = 0x1BCA3 },
2470 .{ .from = 0x1CCD6, .to = 0x1CCEF },
2471 .{ .from = 0x1CCF0, .to = 0x1CCF9 },
2472 .{ .from = 0x1D15E, .to = 0x1D164 },
2473 .{ .from = 0x1D173, .to = 0x1D17A },
2474 .{ .from = 0x1D1BB, .to = 0x1D1C0 },
2475 .{ .from = 0x1D400, .to = 0x1D454 },
2476 .{ .from = 0x1D456, .to = 0x1D49C },
2477 .{ .from = 0x1D49E, .to = 0x1D49F },
2478 .{ .from = 0x1D4A5, .to = 0x1D4A6 },
2479 .{ .from = 0x1D4A9, .to = 0x1D4AC },
2480 .{ .from = 0x1D4AE, .to = 0x1D4B9 },
2481 .{ .from = 0x1D4BD, .to = 0x1D4C3 },
2482 .{ .from = 0x1D4C5, .to = 0x1D505 },
2483 .{ .from = 0x1D507, .to = 0x1D50A },
2484 .{ .from = 0x1D50D, .to = 0x1D514 },
2485 .{ .from = 0x1D516, .to = 0x1D51C },
2486 .{ .from = 0x1D51E, .to = 0x1D539 },
2487 .{ .from = 0x1D53B, .to = 0x1D53E },
2488 .{ .from = 0x1D540, .to = 0x1D544 },
2489 .{ .from = 0x1D54A, .to = 0x1D550 },
2490 .{ .from = 0x1D552, .to = 0x1D6A5 },
2491 .{ .from = 0x1D6A8, .to = 0x1D6C0 },
2492 .{ .from = 0x1D6C2, .to = 0x1D6DA },
2493 .{ .from = 0x1D6DC, .to = 0x1D6FA },
2494 .{ .from = 0x1D6FC, .to = 0x1D714 },
2495 .{ .from = 0x1D716, .to = 0x1D734 },
2496 .{ .from = 0x1D736, .to = 0x1D74E },
2497 .{ .from = 0x1D750, .to = 0x1D76E },
2498 .{ .from = 0x1D770, .to = 0x1D788 },
2499 .{ .from = 0x1D78A, .to = 0x1D7A8 },
2500 .{ .from = 0x1D7AA, .to = 0x1D7C2 },
2501 .{ .from = 0x1D7C4, .to = 0x1D7CB },
2502 .{ .from = 0x1D7CE, .to = 0x1D7FF },
2503 .{ .from = 0x1E030, .to = 0x1E06D },
2504 .{ .from = 0x1E900, .to = 0x1E921 },
2505 .{ .from = 0x1EE00, .to = 0x1EE03 },
2506 .{ .from = 0x1EE05, .to = 0x1EE1F },
2507 .{ .from = 0x1EE21, .to = 0x1EE22 },
2508 .{ .from = 0x1EE29, .to = 0x1EE32 },
2509 .{ .from = 0x1EE34, .to = 0x1EE37 },
2510 .{ .from = 0x1EE4D, .to = 0x1EE4F },
2511 .{ .from = 0x1EE51, .to = 0x1EE52 },
2512 .{ .from = 0x1EE61, .to = 0x1EE62 },
2513 .{ .from = 0x1EE67, .to = 0x1EE6A },
2514 .{ .from = 0x1EE6C, .to = 0x1EE72 },
2515 .{ .from = 0x1EE74, .to = 0x1EE77 },
2516 .{ .from = 0x1EE79, .to = 0x1EE7C },
2517 .{ .from = 0x1EE80, .to = 0x1EE89 },
2518 .{ .from = 0x1EE8B, .to = 0x1EE9B },
2519 .{ .from = 0x1EEA1, .to = 0x1EEA3 },
2520 .{ .from = 0x1EEA5, .to = 0x1EEA9 },
2521 .{ .from = 0x1EEAB, .to = 0x1EEBB },
2522 .{ .from = 0x1F100, .to = 0x1F10A },
2523 .{ .from = 0x1F110, .to = 0x1F12E },
2524 .{ .from = 0x1F130, .to = 0x1F14F },
2525 .{ .from = 0x1F16A, .to = 0x1F16C },
2526 .{ .from = 0x1F200, .to = 0x1F202 },
2527 .{ .from = 0x1F210, .to = 0x1F23B },
2528 .{ .from = 0x1F240, .to = 0x1F248 },
2529 .{ .from = 0x1F250, .to = 0x1F251 },
2530 .{ .from = 0x1FBF0, .to = 0x1FBF9 },
2531 .{ .from = 0x2F800, .to = 0x2FA1D },
2532 .{ .from = 0xE0002, .to = 0xE001F },
2533 .{ .from = 0xE0020, .to = 0xE007F },
2534 .{ .from = 0xE0080, .to = 0xE00FF },
2535 .{ .from = 0xE0100, .to = 0xE01EF },
2536 .{ .from = 0xE01F0, .to = 0xE0FFF },
2537 };
2538};
src/lib.zig+1-1
......@@ -9,7 +9,7 @@ pub const case_folding = @import("./case_folding.zig");
99pub const composition_exclusions = @import("./composition_exclusions.zig");
1010pub const derived_age = @import("./derived_age.zig");
1111pub const derived_core_properties = @import("./derived_core_properties.zig");
12// DerivedNormalizationProps.txt
12pub const derived_normalization_props = @import("./derived_normalization_props.zig");
1313pub const east_asian_width = @import("./east_asian_width.zig");
1414pub const emoji_sources = @import("./emoji_sources.zig");
1515pub const equivalent_unified_ideograph = @import("./equivalent_unified_ideograph.zig");
test.zig+1
......@@ -11,6 +11,7 @@ test {
1111 _ = &ucd.composition_exclusions.data;
1212 _ = &ucd.derived_age.data;
1313 _ = &ucd.derived_core_properties.data;
14 std.testing.refAllDeclsRecursive(ucd.derived_normalization_props);
1415 _ = &ucd.east_asian_width.data;
1516 _ = &ucd.emoji_sources.data;
1617 _ = &ucd.equivalent_unified_ideograph.data;