authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-10-04 18:07:17 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-10-04 18:07:17 -07:00
log6fba7b06484faafd06f1aa19663cc079fa299c25
treebb456456e674e9f0b3da0f2b23807556fb34b0e2
parent3e78c04989f399bea229645ee7734b2a5d8be102

add SpecialCasing, closes #34


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

generate.zig+1
...@@ -26,6 +26,7 @@ const files = [_]type{...@@ -26,6 +26,7 @@ const files = [_]type{
26 @import("./scripts/PropList.zig"),26 @import("./scripts/PropList.zig"),
27 @import("./scripts/ScriptExtensions.zig"),27 @import("./scripts/ScriptExtensions.zig"),
28 @import("./scripts/Scripts.zig"),28 @import("./scripts/Scripts.zig"),
29 @import("./scripts/SpecialCasing.zig"),
29 @import("./scripts/UnicodeData.zig"),30 @import("./scripts/UnicodeData.zig"),
30 @import("./scripts/VerticalOrientation.zig"),31 @import("./scripts/VerticalOrientation.zig"),
31 @import("./scripts/emoji.zig"),32 @import("./scripts/emoji.zig"),
scripts/SpecialCasing.zig created+45
...@@ -0,0 +1,45 @@
1const std = @import("std");
2const common = @import("./_common.zig");
3
4pub usingnamespace common.Main(struct {
5 pub const source_file = "SpecialCasing";
6
7 pub const dest_file = "src/special_casing.zig";
8
9 pub const dest_header =
10 \\
11 \\pub const SpecialCasing = struct {
12 \\ code: u21,
13 \\ lower: []const u21,
14 \\ title: []const u21,
15 \\ upper: []const u21,
16 \\ condition: []const u8,
17 \\};
18 \\
19 \\pub const data = [_]SpecialCasing{
20 \\
21 ;
22
23 pub const dest_footer =
24 \\};
25 \\
26 ;
27
28 pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !void {
29 _ = alloc;
30 const end = std.mem.indexOfScalar(u8, line, '#') orelse line.len;
31 var it = std.mem.splitSequence(u8, line[0..end], "; ");
32
33 try writer.writeAll(" .{");
34 try writer.writeAll(" .code =");
35 try common.printCodepoint(writer, it.next().?);
36 try writer.writeAll(" .lower =");
37 try common.printSeq(writer, it.next().?);
38 try writer.writeAll(" .title =");
39 try common.printSeq(writer, it.next().?);
40 try writer.writeAll(" .upper =");
41 try common.printSeq(writer, it.next().?);
42 try writer.print(" .condition = \"{}\"", .{std.zig.fmtEscapes(it.next().?)});
43 try writer.writeAll(" },\n");
44 }
45});
scripts/_common.zig+13
...@@ -106,3 +106,16 @@ pub fn RangeEnum(comptime prop: []const u8) type {...@@ -106,3 +106,16 @@ pub fn RangeEnum(comptime prop: []const u8) type {
106 }106 }
107 };107 };
108}108}
109
110pub fn printCodepoint(writer: anytype, input: []const u8) !void {
111 try writer.print(" 0x{s},", .{input});
112}
113
114pub fn printSeq(writer: anytype, input: []const u8) !void {
115 var jt = std.mem.tokenize(u8, input, " ");
116 try writer.writeAll(" &.{");
117 while (jt.next()) |jtem| {
118 try printCodepoint(writer, jtem);
119 }
120 try writer.writeAll(" },");
121}
src/lib.zig+1-1
...@@ -27,7 +27,7 @@ pub const property_aliases = @import("./property_aliases.zig");...@@ -27,7 +27,7 @@ pub const property_aliases = @import("./property_aliases.zig");
27pub const property_value_aliases = @import("./property_value_aliases.zig");27pub const property_value_aliases = @import("./property_value_aliases.zig");
28pub const script_extensions = @import("./script_extensions.zig");28pub const script_extensions = @import("./script_extensions.zig");
29pub const scripts = @import("./scripts.zig");29pub const scripts = @import("./scripts.zig");
30// SpecialCasing.txt30pub const special_casing = @import("./special_casing.zig");
31// StandardizedVariants.txt31// StandardizedVariants.txt
32// USourceData.txt32// USourceData.txt
33pub const unicode_data = @import("./unicode_data.zig");33pub const unicode_data = @import("./unicode_data.zig");
src/main.zig+1
...@@ -34,6 +34,7 @@ pub fn main() !void {...@@ -34,6 +34,7 @@ pub fn main() !void {
34 ucd.property_aliases,34 ucd.property_aliases,
35 ucd.property_value_aliases,35 ucd.property_value_aliases,
36 ucd.unicode_data,36 ucd.unicode_data,
37 ucd.special_casing,
37 };38 };
3839
39 inline for (data) |b| {40 inline for (data) |b| {
src/special_casing.zig created+137
...@@ -0,0 +1,137 @@
1// This file is part of the Unicode Character Database
2// For documentation, see http://www.unicode.org/reports/tr44/
3//
4// Based on the source file: https://unicode.org/Public/13.0.0/ucd/SpecialCasing.txt
5//
6// zig fmt: off
7
8
9pub const SpecialCasing = struct {
10 code: u21,
11 lower: []const u21,
12 title: []const u21,
13 upper: []const u21,
14 condition: []const u8,
15};
16
17pub const data = [_]SpecialCasing{
18 .{ .code = 0x00DF, .lower = &.{ 0x00DF, }, .title = &.{ 0x0053, 0x0073, }, .upper = &.{ 0x0053, 0x0053, }, .condition = "" },
19 .{ .code = 0x0130, .lower = &.{ 0x0069, 0x0307, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "" },
20 .{ .code = 0xFB00, .lower = &.{ 0xFB00, }, .title = &.{ 0x0046, 0x0066, }, .upper = &.{ 0x0046, 0x0046, }, .condition = "" },
21 .{ .code = 0xFB01, .lower = &.{ 0xFB01, }, .title = &.{ 0x0046, 0x0069, }, .upper = &.{ 0x0046, 0x0049, }, .condition = "" },
22 .{ .code = 0xFB02, .lower = &.{ 0xFB02, }, .title = &.{ 0x0046, 0x006C, }, .upper = &.{ 0x0046, 0x004C, }, .condition = "" },
23 .{ .code = 0xFB03, .lower = &.{ 0xFB03, }, .title = &.{ 0x0046, 0x0066, 0x0069, }, .upper = &.{ 0x0046, 0x0046, 0x0049, }, .condition = "" },
24 .{ .code = 0xFB04, .lower = &.{ 0xFB04, }, .title = &.{ 0x0046, 0x0066, 0x006C, }, .upper = &.{ 0x0046, 0x0046, 0x004C, }, .condition = "" },
25 .{ .code = 0xFB05, .lower = &.{ 0xFB05, }, .title = &.{ 0x0053, 0x0074, }, .upper = &.{ 0x0053, 0x0054, }, .condition = "" },
26 .{ .code = 0xFB06, .lower = &.{ 0xFB06, }, .title = &.{ 0x0053, 0x0074, }, .upper = &.{ 0x0053, 0x0054, }, .condition = "" },
27 .{ .code = 0x0587, .lower = &.{ 0x0587, }, .title = &.{ 0x0535, 0x0582, }, .upper = &.{ 0x0535, 0x0552, }, .condition = "" },
28 .{ .code = 0xFB13, .lower = &.{ 0xFB13, }, .title = &.{ 0x0544, 0x0576, }, .upper = &.{ 0x0544, 0x0546, }, .condition = "" },
29 .{ .code = 0xFB14, .lower = &.{ 0xFB14, }, .title = &.{ 0x0544, 0x0565, }, .upper = &.{ 0x0544, 0x0535, }, .condition = "" },
30 .{ .code = 0xFB15, .lower = &.{ 0xFB15, }, .title = &.{ 0x0544, 0x056B, }, .upper = &.{ 0x0544, 0x053B, }, .condition = "" },
31 .{ .code = 0xFB16, .lower = &.{ 0xFB16, }, .title = &.{ 0x054E, 0x0576, }, .upper = &.{ 0x054E, 0x0546, }, .condition = "" },
32 .{ .code = 0xFB17, .lower = &.{ 0xFB17, }, .title = &.{ 0x0544, 0x056D, }, .upper = &.{ 0x0544, 0x053D, }, .condition = "" },
33 .{ .code = 0x0149, .lower = &.{ 0x0149, }, .title = &.{ 0x02BC, 0x004E, }, .upper = &.{ 0x02BC, 0x004E, }, .condition = "" },
34 .{ .code = 0x0390, .lower = &.{ 0x0390, }, .title = &.{ 0x0399, 0x0308, 0x0301, }, .upper = &.{ 0x0399, 0x0308, 0x0301, }, .condition = "" },
35 .{ .code = 0x03B0, .lower = &.{ 0x03B0, }, .title = &.{ 0x03A5, 0x0308, 0x0301, }, .upper = &.{ 0x03A5, 0x0308, 0x0301, }, .condition = "" },
36 .{ .code = 0x01F0, .lower = &.{ 0x01F0, }, .title = &.{ 0x004A, 0x030C, }, .upper = &.{ 0x004A, 0x030C, }, .condition = "" },
37 .{ .code = 0x1E96, .lower = &.{ 0x1E96, }, .title = &.{ 0x0048, 0x0331, }, .upper = &.{ 0x0048, 0x0331, }, .condition = "" },
38 .{ .code = 0x1E97, .lower = &.{ 0x1E97, }, .title = &.{ 0x0054, 0x0308, }, .upper = &.{ 0x0054, 0x0308, }, .condition = "" },
39 .{ .code = 0x1E98, .lower = &.{ 0x1E98, }, .title = &.{ 0x0057, 0x030A, }, .upper = &.{ 0x0057, 0x030A, }, .condition = "" },
40 .{ .code = 0x1E99, .lower = &.{ 0x1E99, }, .title = &.{ 0x0059, 0x030A, }, .upper = &.{ 0x0059, 0x030A, }, .condition = "" },
41 .{ .code = 0x1E9A, .lower = &.{ 0x1E9A, }, .title = &.{ 0x0041, 0x02BE, }, .upper = &.{ 0x0041, 0x02BE, }, .condition = "" },
42 .{ .code = 0x1F50, .lower = &.{ 0x1F50, }, .title = &.{ 0x03A5, 0x0313, }, .upper = &.{ 0x03A5, 0x0313, }, .condition = "" },
43 .{ .code = 0x1F52, .lower = &.{ 0x1F52, }, .title = &.{ 0x03A5, 0x0313, 0x0300, }, .upper = &.{ 0x03A5, 0x0313, 0x0300, }, .condition = "" },
44 .{ .code = 0x1F54, .lower = &.{ 0x1F54, }, .title = &.{ 0x03A5, 0x0313, 0x0301, }, .upper = &.{ 0x03A5, 0x0313, 0x0301, }, .condition = "" },
45 .{ .code = 0x1F56, .lower = &.{ 0x1F56, }, .title = &.{ 0x03A5, 0x0313, 0x0342, }, .upper = &.{ 0x03A5, 0x0313, 0x0342, }, .condition = "" },
46 .{ .code = 0x1FB6, .lower = &.{ 0x1FB6, }, .title = &.{ 0x0391, 0x0342, }, .upper = &.{ 0x0391, 0x0342, }, .condition = "" },
47 .{ .code = 0x1FC6, .lower = &.{ 0x1FC6, }, .title = &.{ 0x0397, 0x0342, }, .upper = &.{ 0x0397, 0x0342, }, .condition = "" },
48 .{ .code = 0x1FD2, .lower = &.{ 0x1FD2, }, .title = &.{ 0x0399, 0x0308, 0x0300, }, .upper = &.{ 0x0399, 0x0308, 0x0300, }, .condition = "" },
49 .{ .code = 0x1FD3, .lower = &.{ 0x1FD3, }, .title = &.{ 0x0399, 0x0308, 0x0301, }, .upper = &.{ 0x0399, 0x0308, 0x0301, }, .condition = "" },
50 .{ .code = 0x1FD6, .lower = &.{ 0x1FD6, }, .title = &.{ 0x0399, 0x0342, }, .upper = &.{ 0x0399, 0x0342, }, .condition = "" },
51 .{ .code = 0x1FD7, .lower = &.{ 0x1FD7, }, .title = &.{ 0x0399, 0x0308, 0x0342, }, .upper = &.{ 0x0399, 0x0308, 0x0342, }, .condition = "" },
52 .{ .code = 0x1FE2, .lower = &.{ 0x1FE2, }, .title = &.{ 0x03A5, 0x0308, 0x0300, }, .upper = &.{ 0x03A5, 0x0308, 0x0300, }, .condition = "" },
53 .{ .code = 0x1FE3, .lower = &.{ 0x1FE3, }, .title = &.{ 0x03A5, 0x0308, 0x0301, }, .upper = &.{ 0x03A5, 0x0308, 0x0301, }, .condition = "" },
54 .{ .code = 0x1FE4, .lower = &.{ 0x1FE4, }, .title = &.{ 0x03A1, 0x0313, }, .upper = &.{ 0x03A1, 0x0313, }, .condition = "" },
55 .{ .code = 0x1FE6, .lower = &.{ 0x1FE6, }, .title = &.{ 0x03A5, 0x0342, }, .upper = &.{ 0x03A5, 0x0342, }, .condition = "" },
56 .{ .code = 0x1FE7, .lower = &.{ 0x1FE7, }, .title = &.{ 0x03A5, 0x0308, 0x0342, }, .upper = &.{ 0x03A5, 0x0308, 0x0342, }, .condition = "" },
57 .{ .code = 0x1FF6, .lower = &.{ 0x1FF6, }, .title = &.{ 0x03A9, 0x0342, }, .upper = &.{ 0x03A9, 0x0342, }, .condition = "" },
58 .{ .code = 0x1F80, .lower = &.{ 0x1F80, }, .title = &.{ 0x1F88, }, .upper = &.{ 0x1F08, 0x0399, }, .condition = "" },
59 .{ .code = 0x1F81, .lower = &.{ 0x1F81, }, .title = &.{ 0x1F89, }, .upper = &.{ 0x1F09, 0x0399, }, .condition = "" },
60 .{ .code = 0x1F82, .lower = &.{ 0x1F82, }, .title = &.{ 0x1F8A, }, .upper = &.{ 0x1F0A, 0x0399, }, .condition = "" },
61 .{ .code = 0x1F83, .lower = &.{ 0x1F83, }, .title = &.{ 0x1F8B, }, .upper = &.{ 0x1F0B, 0x0399, }, .condition = "" },
62 .{ .code = 0x1F84, .lower = &.{ 0x1F84, }, .title = &.{ 0x1F8C, }, .upper = &.{ 0x1F0C, 0x0399, }, .condition = "" },
63 .{ .code = 0x1F85, .lower = &.{ 0x1F85, }, .title = &.{ 0x1F8D, }, .upper = &.{ 0x1F0D, 0x0399, }, .condition = "" },
64 .{ .code = 0x1F86, .lower = &.{ 0x1F86, }, .title = &.{ 0x1F8E, }, .upper = &.{ 0x1F0E, 0x0399, }, .condition = "" },
65 .{ .code = 0x1F87, .lower = &.{ 0x1F87, }, .title = &.{ 0x1F8F, }, .upper = &.{ 0x1F0F, 0x0399, }, .condition = "" },
66 .{ .code = 0x1F88, .lower = &.{ 0x1F80, }, .title = &.{ 0x1F88, }, .upper = &.{ 0x1F08, 0x0399, }, .condition = "" },
67 .{ .code = 0x1F89, .lower = &.{ 0x1F81, }, .title = &.{ 0x1F89, }, .upper = &.{ 0x1F09, 0x0399, }, .condition = "" },
68 .{ .code = 0x1F8A, .lower = &.{ 0x1F82, }, .title = &.{ 0x1F8A, }, .upper = &.{ 0x1F0A, 0x0399, }, .condition = "" },
69 .{ .code = 0x1F8B, .lower = &.{ 0x1F83, }, .title = &.{ 0x1F8B, }, .upper = &.{ 0x1F0B, 0x0399, }, .condition = "" },
70 .{ .code = 0x1F8C, .lower = &.{ 0x1F84, }, .title = &.{ 0x1F8C, }, .upper = &.{ 0x1F0C, 0x0399, }, .condition = "" },
71 .{ .code = 0x1F8D, .lower = &.{ 0x1F85, }, .title = &.{ 0x1F8D, }, .upper = &.{ 0x1F0D, 0x0399, }, .condition = "" },
72 .{ .code = 0x1F8E, .lower = &.{ 0x1F86, }, .title = &.{ 0x1F8E, }, .upper = &.{ 0x1F0E, 0x0399, }, .condition = "" },
73 .{ .code = 0x1F8F, .lower = &.{ 0x1F87, }, .title = &.{ 0x1F8F, }, .upper = &.{ 0x1F0F, 0x0399, }, .condition = "" },
74 .{ .code = 0x1F90, .lower = &.{ 0x1F90, }, .title = &.{ 0x1F98, }, .upper = &.{ 0x1F28, 0x0399, }, .condition = "" },
75 .{ .code = 0x1F91, .lower = &.{ 0x1F91, }, .title = &.{ 0x1F99, }, .upper = &.{ 0x1F29, 0x0399, }, .condition = "" },
76 .{ .code = 0x1F92, .lower = &.{ 0x1F92, }, .title = &.{ 0x1F9A, }, .upper = &.{ 0x1F2A, 0x0399, }, .condition = "" },
77 .{ .code = 0x1F93, .lower = &.{ 0x1F93, }, .title = &.{ 0x1F9B, }, .upper = &.{ 0x1F2B, 0x0399, }, .condition = "" },
78 .{ .code = 0x1F94, .lower = &.{ 0x1F94, }, .title = &.{ 0x1F9C, }, .upper = &.{ 0x1F2C, 0x0399, }, .condition = "" },
79 .{ .code = 0x1F95, .lower = &.{ 0x1F95, }, .title = &.{ 0x1F9D, }, .upper = &.{ 0x1F2D, 0x0399, }, .condition = "" },
80 .{ .code = 0x1F96, .lower = &.{ 0x1F96, }, .title = &.{ 0x1F9E, }, .upper = &.{ 0x1F2E, 0x0399, }, .condition = "" },
81 .{ .code = 0x1F97, .lower = &.{ 0x1F97, }, .title = &.{ 0x1F9F, }, .upper = &.{ 0x1F2F, 0x0399, }, .condition = "" },
82 .{ .code = 0x1F98, .lower = &.{ 0x1F90, }, .title = &.{ 0x1F98, }, .upper = &.{ 0x1F28, 0x0399, }, .condition = "" },
83 .{ .code = 0x1F99, .lower = &.{ 0x1F91, }, .title = &.{ 0x1F99, }, .upper = &.{ 0x1F29, 0x0399, }, .condition = "" },
84 .{ .code = 0x1F9A, .lower = &.{ 0x1F92, }, .title = &.{ 0x1F9A, }, .upper = &.{ 0x1F2A, 0x0399, }, .condition = "" },
85 .{ .code = 0x1F9B, .lower = &.{ 0x1F93, }, .title = &.{ 0x1F9B, }, .upper = &.{ 0x1F2B, 0x0399, }, .condition = "" },
86 .{ .code = 0x1F9C, .lower = &.{ 0x1F94, }, .title = &.{ 0x1F9C, }, .upper = &.{ 0x1F2C, 0x0399, }, .condition = "" },
87 .{ .code = 0x1F9D, .lower = &.{ 0x1F95, }, .title = &.{ 0x1F9D, }, .upper = &.{ 0x1F2D, 0x0399, }, .condition = "" },
88 .{ .code = 0x1F9E, .lower = &.{ 0x1F96, }, .title = &.{ 0x1F9E, }, .upper = &.{ 0x1F2E, 0x0399, }, .condition = "" },
89 .{ .code = 0x1F9F, .lower = &.{ 0x1F97, }, .title = &.{ 0x1F9F, }, .upper = &.{ 0x1F2F, 0x0399, }, .condition = "" },
90 .{ .code = 0x1FA0, .lower = &.{ 0x1FA0, }, .title = &.{ 0x1FA8, }, .upper = &.{ 0x1F68, 0x0399, }, .condition = "" },
91 .{ .code = 0x1FA1, .lower = &.{ 0x1FA1, }, .title = &.{ 0x1FA9, }, .upper = &.{ 0x1F69, 0x0399, }, .condition = "" },
92 .{ .code = 0x1FA2, .lower = &.{ 0x1FA2, }, .title = &.{ 0x1FAA, }, .upper = &.{ 0x1F6A, 0x0399, }, .condition = "" },
93 .{ .code = 0x1FA3, .lower = &.{ 0x1FA3, }, .title = &.{ 0x1FAB, }, .upper = &.{ 0x1F6B, 0x0399, }, .condition = "" },
94 .{ .code = 0x1FA4, .lower = &.{ 0x1FA4, }, .title = &.{ 0x1FAC, }, .upper = &.{ 0x1F6C, 0x0399, }, .condition = "" },
95 .{ .code = 0x1FA5, .lower = &.{ 0x1FA5, }, .title = &.{ 0x1FAD, }, .upper = &.{ 0x1F6D, 0x0399, }, .condition = "" },
96 .{ .code = 0x1FA6, .lower = &.{ 0x1FA6, }, .title = &.{ 0x1FAE, }, .upper = &.{ 0x1F6E, 0x0399, }, .condition = "" },
97 .{ .code = 0x1FA7, .lower = &.{ 0x1FA7, }, .title = &.{ 0x1FAF, }, .upper = &.{ 0x1F6F, 0x0399, }, .condition = "" },
98 .{ .code = 0x1FA8, .lower = &.{ 0x1FA0, }, .title = &.{ 0x1FA8, }, .upper = &.{ 0x1F68, 0x0399, }, .condition = "" },
99 .{ .code = 0x1FA9, .lower = &.{ 0x1FA1, }, .title = &.{ 0x1FA9, }, .upper = &.{ 0x1F69, 0x0399, }, .condition = "" },
100 .{ .code = 0x1FAA, .lower = &.{ 0x1FA2, }, .title = &.{ 0x1FAA, }, .upper = &.{ 0x1F6A, 0x0399, }, .condition = "" },
101 .{ .code = 0x1FAB, .lower = &.{ 0x1FA3, }, .title = &.{ 0x1FAB, }, .upper = &.{ 0x1F6B, 0x0399, }, .condition = "" },
102 .{ .code = 0x1FAC, .lower = &.{ 0x1FA4, }, .title = &.{ 0x1FAC, }, .upper = &.{ 0x1F6C, 0x0399, }, .condition = "" },
103 .{ .code = 0x1FAD, .lower = &.{ 0x1FA5, }, .title = &.{ 0x1FAD, }, .upper = &.{ 0x1F6D, 0x0399, }, .condition = "" },
104 .{ .code = 0x1FAE, .lower = &.{ 0x1FA6, }, .title = &.{ 0x1FAE, }, .upper = &.{ 0x1F6E, 0x0399, }, .condition = "" },
105 .{ .code = 0x1FAF, .lower = &.{ 0x1FA7, }, .title = &.{ 0x1FAF, }, .upper = &.{ 0x1F6F, 0x0399, }, .condition = "" },
106 .{ .code = 0x1FB3, .lower = &.{ 0x1FB3, }, .title = &.{ 0x1FBC, }, .upper = &.{ 0x0391, 0x0399, }, .condition = "" },
107 .{ .code = 0x1FBC, .lower = &.{ 0x1FB3, }, .title = &.{ 0x1FBC, }, .upper = &.{ 0x0391, 0x0399, }, .condition = "" },
108 .{ .code = 0x1FC3, .lower = &.{ 0x1FC3, }, .title = &.{ 0x1FCC, }, .upper = &.{ 0x0397, 0x0399, }, .condition = "" },
109 .{ .code = 0x1FCC, .lower = &.{ 0x1FC3, }, .title = &.{ 0x1FCC, }, .upper = &.{ 0x0397, 0x0399, }, .condition = "" },
110 .{ .code = 0x1FF3, .lower = &.{ 0x1FF3, }, .title = &.{ 0x1FFC, }, .upper = &.{ 0x03A9, 0x0399, }, .condition = "" },
111 .{ .code = 0x1FFC, .lower = &.{ 0x1FF3, }, .title = &.{ 0x1FFC, }, .upper = &.{ 0x03A9, 0x0399, }, .condition = "" },
112 .{ .code = 0x1FB2, .lower = &.{ 0x1FB2, }, .title = &.{ 0x1FBA, 0x0345, }, .upper = &.{ 0x1FBA, 0x0399, }, .condition = "" },
113 .{ .code = 0x1FB4, .lower = &.{ 0x1FB4, }, .title = &.{ 0x0386, 0x0345, }, .upper = &.{ 0x0386, 0x0399, }, .condition = "" },
114 .{ .code = 0x1FC2, .lower = &.{ 0x1FC2, }, .title = &.{ 0x1FCA, 0x0345, }, .upper = &.{ 0x1FCA, 0x0399, }, .condition = "" },
115 .{ .code = 0x1FC4, .lower = &.{ 0x1FC4, }, .title = &.{ 0x0389, 0x0345, }, .upper = &.{ 0x0389, 0x0399, }, .condition = "" },
116 .{ .code = 0x1FF2, .lower = &.{ 0x1FF2, }, .title = &.{ 0x1FFA, 0x0345, }, .upper = &.{ 0x1FFA, 0x0399, }, .condition = "" },
117 .{ .code = 0x1FF4, .lower = &.{ 0x1FF4, }, .title = &.{ 0x038F, 0x0345, }, .upper = &.{ 0x038F, 0x0399, }, .condition = "" },
118 .{ .code = 0x1FB7, .lower = &.{ 0x1FB7, }, .title = &.{ 0x0391, 0x0342, 0x0345, }, .upper = &.{ 0x0391, 0x0342, 0x0399, }, .condition = "" },
119 .{ .code = 0x1FC7, .lower = &.{ 0x1FC7, }, .title = &.{ 0x0397, 0x0342, 0x0345, }, .upper = &.{ 0x0397, 0x0342, 0x0399, }, .condition = "" },
120 .{ .code = 0x1FF7, .lower = &.{ 0x1FF7, }, .title = &.{ 0x03A9, 0x0342, 0x0345, }, .upper = &.{ 0x03A9, 0x0342, 0x0399, }, .condition = "" },
121 .{ .code = 0x03A3, .lower = &.{ 0x03C2, }, .title = &.{ 0x03A3, }, .upper = &.{ 0x03A3, }, .condition = "Final_Sigma" },
122 .{ .code = 0x0307, .lower = &.{ 0x0307, }, .title = &.{ }, .upper = &.{ }, .condition = "lt After_Soft_Dotted" },
123 .{ .code = 0x0049, .lower = &.{ 0x0069, 0x0307, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "lt More_Above" },
124 .{ .code = 0x004A, .lower = &.{ 0x006A, 0x0307, }, .title = &.{ 0x004A, }, .upper = &.{ 0x004A, }, .condition = "lt More_Above" },
125 .{ .code = 0x012E, .lower = &.{ 0x012F, 0x0307, }, .title = &.{ 0x012E, }, .upper = &.{ 0x012E, }, .condition = "lt More_Above" },
126 .{ .code = 0x00CC, .lower = &.{ 0x0069, 0x0307, 0x0300, }, .title = &.{ 0x00CC, }, .upper = &.{ 0x00CC, }, .condition = "lt" },
127 .{ .code = 0x00CD, .lower = &.{ 0x0069, 0x0307, 0x0301, }, .title = &.{ 0x00CD, }, .upper = &.{ 0x00CD, }, .condition = "lt" },
128 .{ .code = 0x0128, .lower = &.{ 0x0069, 0x0307, 0x0303, }, .title = &.{ 0x0128, }, .upper = &.{ 0x0128, }, .condition = "lt" },
129 .{ .code = 0x0130, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "tr" },
130 .{ .code = 0x0130, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "az" },
131 .{ .code = 0x0307, .lower = &.{ }, .title = &.{ 0x0307, }, .upper = &.{ 0x0307, }, .condition = "tr After_I" },
132 .{ .code = 0x0307, .lower = &.{ }, .title = &.{ 0x0307, }, .upper = &.{ 0x0307, }, .condition = "az After_I" },
133 .{ .code = 0x0049, .lower = &.{ 0x0131, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "tr Not_Before_Dot" },
134 .{ .code = 0x0049, .lower = &.{ 0x0131, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "az Not_Before_Dot" },
135 .{ .code = 0x0069, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "tr" },
136 .{ .code = 0x0069, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "az" },
137};