diff --git a/generate.zig b/generate.zig index 898b7bb2bfea3094bef104c40694a1d47b2d7b37..6b683f9d8e0221d8165c6388a900ea3dde7abef3 100644 --- a/generate.zig +++ b/generate.zig @@ -26,6 +26,7 @@ const files = [_]type{ @import("./scripts/PropList.zig"), @import("./scripts/ScriptExtensions.zig"), @import("./scripts/Scripts.zig"), + @import("./scripts/SpecialCasing.zig"), @import("./scripts/UnicodeData.zig"), @import("./scripts/VerticalOrientation.zig"), @import("./scripts/emoji.zig"), diff --git a/scripts/SpecialCasing.zig b/scripts/SpecialCasing.zig new file mode 100644 index 0000000000000000000000000000000000000000..6de212ca4cf5baa6b2954e67f1e260f399810a70 --- /dev/null +++ b/scripts/SpecialCasing.zig @@ -0,0 +1,45 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "SpecialCasing"; + + pub const dest_file = "src/special_casing.zig"; + + pub const dest_header = + \\ + \\pub const SpecialCasing = struct { + \\ code: u21, + \\ lower: []const u21, + \\ title: []const u21, + \\ upper: []const u21, + \\ condition: []const u8, + \\}; + \\ + \\pub const data = [_]SpecialCasing{ + \\ + ; + + pub const dest_footer = + \\}; + \\ + ; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !void { + _ = alloc; + const end = std.mem.indexOfScalar(u8, line, '#') orelse line.len; + var it = std.mem.splitSequence(u8, line[0..end], "; "); + + try writer.writeAll(" .{"); + try writer.writeAll(" .code ="); + try common.printCodepoint(writer, it.next().?); + try writer.writeAll(" .lower ="); + try common.printSeq(writer, it.next().?); + try writer.writeAll(" .title ="); + try common.printSeq(writer, it.next().?); + try writer.writeAll(" .upper ="); + try common.printSeq(writer, it.next().?); + try writer.print(" .condition = \"{}\"", .{std.zig.fmtEscapes(it.next().?)}); + try writer.writeAll(" },\n"); + } +}); diff --git a/scripts/_common.zig b/scripts/_common.zig index 69244f9f55d15516f3215dfe3cba626c31901689..ad2ef5c1daf6c2360d55b2aee19f5414565a4c70 100644 --- a/scripts/_common.zig +++ b/scripts/_common.zig @@ -106,3 +106,16 @@ pub fn RangeEnum(comptime prop: []const u8) type { } }; } + +pub fn printCodepoint(writer: anytype, input: []const u8) !void { + try writer.print(" 0x{s},", .{input}); +} + +pub fn printSeq(writer: anytype, input: []const u8) !void { + var jt = std.mem.tokenize(u8, input, " "); + try writer.writeAll(" &.{"); + while (jt.next()) |jtem| { + try printCodepoint(writer, jtem); + } + try writer.writeAll(" },"); +} diff --git a/src/lib.zig b/src/lib.zig index 0ea6926c36ee0f84734942961d752749eeee61e8..08731a7f70571269aa5e3950780982418ad72791 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -27,7 +27,7 @@ pub const property_aliases = @import("./property_aliases.zig"); pub const property_value_aliases = @import("./property_value_aliases.zig"); pub const script_extensions = @import("./script_extensions.zig"); pub const scripts = @import("./scripts.zig"); -// SpecialCasing.txt +pub const special_casing = @import("./special_casing.zig"); // StandardizedVariants.txt // USourceData.txt pub const unicode_data = @import("./unicode_data.zig"); diff --git a/src/main.zig b/src/main.zig index b56a022892074f819fa13e1f11dcf598e4284018..d4f2863bcbcdbc7a294a878d397d48a0668d1584 100644 --- a/src/main.zig +++ b/src/main.zig @@ -34,6 +34,7 @@ pub fn main() !void { ucd.property_aliases, ucd.property_value_aliases, ucd.unicode_data, + ucd.special_casing, }; inline for (data) |b| { diff --git a/src/special_casing.zig b/src/special_casing.zig new file mode 100644 index 0000000000000000000000000000000000000000..c2d58451d20d912f40073b538f593ac0a7e3b381 --- /dev/null +++ b/src/special_casing.zig @@ -0,0 +1,137 @@ +// This file is part of the Unicode Character Database +// For documentation, see http://www.unicode.org/reports/tr44/ +// +// Based on the source file: https://unicode.org/Public/13.0.0/ucd/SpecialCasing.txt +// +// zig fmt: off + + +pub const SpecialCasing = struct { + code: u21, + lower: []const u21, + title: []const u21, + upper: []const u21, + condition: []const u8, +}; + +pub const data = [_]SpecialCasing{ + .{ .code = 0x00DF, .lower = &.{ 0x00DF, }, .title = &.{ 0x0053, 0x0073, }, .upper = &.{ 0x0053, 0x0053, }, .condition = "" }, + .{ .code = 0x0130, .lower = &.{ 0x0069, 0x0307, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "" }, + .{ .code = 0xFB00, .lower = &.{ 0xFB00, }, .title = &.{ 0x0046, 0x0066, }, .upper = &.{ 0x0046, 0x0046, }, .condition = "" }, + .{ .code = 0xFB01, .lower = &.{ 0xFB01, }, .title = &.{ 0x0046, 0x0069, }, .upper = &.{ 0x0046, 0x0049, }, .condition = "" }, + .{ .code = 0xFB02, .lower = &.{ 0xFB02, }, .title = &.{ 0x0046, 0x006C, }, .upper = &.{ 0x0046, 0x004C, }, .condition = "" }, + .{ .code = 0xFB03, .lower = &.{ 0xFB03, }, .title = &.{ 0x0046, 0x0066, 0x0069, }, .upper = &.{ 0x0046, 0x0046, 0x0049, }, .condition = "" }, + .{ .code = 0xFB04, .lower = &.{ 0xFB04, }, .title = &.{ 0x0046, 0x0066, 0x006C, }, .upper = &.{ 0x0046, 0x0046, 0x004C, }, .condition = "" }, + .{ .code = 0xFB05, .lower = &.{ 0xFB05, }, .title = &.{ 0x0053, 0x0074, }, .upper = &.{ 0x0053, 0x0054, }, .condition = "" }, + .{ .code = 0xFB06, .lower = &.{ 0xFB06, }, .title = &.{ 0x0053, 0x0074, }, .upper = &.{ 0x0053, 0x0054, }, .condition = "" }, + .{ .code = 0x0587, .lower = &.{ 0x0587, }, .title = &.{ 0x0535, 0x0582, }, .upper = &.{ 0x0535, 0x0552, }, .condition = "" }, + .{ .code = 0xFB13, .lower = &.{ 0xFB13, }, .title = &.{ 0x0544, 0x0576, }, .upper = &.{ 0x0544, 0x0546, }, .condition = "" }, + .{ .code = 0xFB14, .lower = &.{ 0xFB14, }, .title = &.{ 0x0544, 0x0565, }, .upper = &.{ 0x0544, 0x0535, }, .condition = "" }, + .{ .code = 0xFB15, .lower = &.{ 0xFB15, }, .title = &.{ 0x0544, 0x056B, }, .upper = &.{ 0x0544, 0x053B, }, .condition = "" }, + .{ .code = 0xFB16, .lower = &.{ 0xFB16, }, .title = &.{ 0x054E, 0x0576, }, .upper = &.{ 0x054E, 0x0546, }, .condition = "" }, + .{ .code = 0xFB17, .lower = &.{ 0xFB17, }, .title = &.{ 0x0544, 0x056D, }, .upper = &.{ 0x0544, 0x053D, }, .condition = "" }, + .{ .code = 0x0149, .lower = &.{ 0x0149, }, .title = &.{ 0x02BC, 0x004E, }, .upper = &.{ 0x02BC, 0x004E, }, .condition = "" }, + .{ .code = 0x0390, .lower = &.{ 0x0390, }, .title = &.{ 0x0399, 0x0308, 0x0301, }, .upper = &.{ 0x0399, 0x0308, 0x0301, }, .condition = "" }, + .{ .code = 0x03B0, .lower = &.{ 0x03B0, }, .title = &.{ 0x03A5, 0x0308, 0x0301, }, .upper = &.{ 0x03A5, 0x0308, 0x0301, }, .condition = "" }, + .{ .code = 0x01F0, .lower = &.{ 0x01F0, }, .title = &.{ 0x004A, 0x030C, }, .upper = &.{ 0x004A, 0x030C, }, .condition = "" }, + .{ .code = 0x1E96, .lower = &.{ 0x1E96, }, .title = &.{ 0x0048, 0x0331, }, .upper = &.{ 0x0048, 0x0331, }, .condition = "" }, + .{ .code = 0x1E97, .lower = &.{ 0x1E97, }, .title = &.{ 0x0054, 0x0308, }, .upper = &.{ 0x0054, 0x0308, }, .condition = "" }, + .{ .code = 0x1E98, .lower = &.{ 0x1E98, }, .title = &.{ 0x0057, 0x030A, }, .upper = &.{ 0x0057, 0x030A, }, .condition = "" }, + .{ .code = 0x1E99, .lower = &.{ 0x1E99, }, .title = &.{ 0x0059, 0x030A, }, .upper = &.{ 0x0059, 0x030A, }, .condition = "" }, + .{ .code = 0x1E9A, .lower = &.{ 0x1E9A, }, .title = &.{ 0x0041, 0x02BE, }, .upper = &.{ 0x0041, 0x02BE, }, .condition = "" }, + .{ .code = 0x1F50, .lower = &.{ 0x1F50, }, .title = &.{ 0x03A5, 0x0313, }, .upper = &.{ 0x03A5, 0x0313, }, .condition = "" }, + .{ .code = 0x1F52, .lower = &.{ 0x1F52, }, .title = &.{ 0x03A5, 0x0313, 0x0300, }, .upper = &.{ 0x03A5, 0x0313, 0x0300, }, .condition = "" }, + .{ .code = 0x1F54, .lower = &.{ 0x1F54, }, .title = &.{ 0x03A5, 0x0313, 0x0301, }, .upper = &.{ 0x03A5, 0x0313, 0x0301, }, .condition = "" }, + .{ .code = 0x1F56, .lower = &.{ 0x1F56, }, .title = &.{ 0x03A5, 0x0313, 0x0342, }, .upper = &.{ 0x03A5, 0x0313, 0x0342, }, .condition = "" }, + .{ .code = 0x1FB6, .lower = &.{ 0x1FB6, }, .title = &.{ 0x0391, 0x0342, }, .upper = &.{ 0x0391, 0x0342, }, .condition = "" }, + .{ .code = 0x1FC6, .lower = &.{ 0x1FC6, }, .title = &.{ 0x0397, 0x0342, }, .upper = &.{ 0x0397, 0x0342, }, .condition = "" }, + .{ .code = 0x1FD2, .lower = &.{ 0x1FD2, }, .title = &.{ 0x0399, 0x0308, 0x0300, }, .upper = &.{ 0x0399, 0x0308, 0x0300, }, .condition = "" }, + .{ .code = 0x1FD3, .lower = &.{ 0x1FD3, }, .title = &.{ 0x0399, 0x0308, 0x0301, }, .upper = &.{ 0x0399, 0x0308, 0x0301, }, .condition = "" }, + .{ .code = 0x1FD6, .lower = &.{ 0x1FD6, }, .title = &.{ 0x0399, 0x0342, }, .upper = &.{ 0x0399, 0x0342, }, .condition = "" }, + .{ .code = 0x1FD7, .lower = &.{ 0x1FD7, }, .title = &.{ 0x0399, 0x0308, 0x0342, }, .upper = &.{ 0x0399, 0x0308, 0x0342, }, .condition = "" }, + .{ .code = 0x1FE2, .lower = &.{ 0x1FE2, }, .title = &.{ 0x03A5, 0x0308, 0x0300, }, .upper = &.{ 0x03A5, 0x0308, 0x0300, }, .condition = "" }, + .{ .code = 0x1FE3, .lower = &.{ 0x1FE3, }, .title = &.{ 0x03A5, 0x0308, 0x0301, }, .upper = &.{ 0x03A5, 0x0308, 0x0301, }, .condition = "" }, + .{ .code = 0x1FE4, .lower = &.{ 0x1FE4, }, .title = &.{ 0x03A1, 0x0313, }, .upper = &.{ 0x03A1, 0x0313, }, .condition = "" }, + .{ .code = 0x1FE6, .lower = &.{ 0x1FE6, }, .title = &.{ 0x03A5, 0x0342, }, .upper = &.{ 0x03A5, 0x0342, }, .condition = "" }, + .{ .code = 0x1FE7, .lower = &.{ 0x1FE7, }, .title = &.{ 0x03A5, 0x0308, 0x0342, }, .upper = &.{ 0x03A5, 0x0308, 0x0342, }, .condition = "" }, + .{ .code = 0x1FF6, .lower = &.{ 0x1FF6, }, .title = &.{ 0x03A9, 0x0342, }, .upper = &.{ 0x03A9, 0x0342, }, .condition = "" }, + .{ .code = 0x1F80, .lower = &.{ 0x1F80, }, .title = &.{ 0x1F88, }, .upper = &.{ 0x1F08, 0x0399, }, .condition = "" }, + .{ .code = 0x1F81, .lower = &.{ 0x1F81, }, .title = &.{ 0x1F89, }, .upper = &.{ 0x1F09, 0x0399, }, .condition = "" }, + .{ .code = 0x1F82, .lower = &.{ 0x1F82, }, .title = &.{ 0x1F8A, }, .upper = &.{ 0x1F0A, 0x0399, }, .condition = "" }, + .{ .code = 0x1F83, .lower = &.{ 0x1F83, }, .title = &.{ 0x1F8B, }, .upper = &.{ 0x1F0B, 0x0399, }, .condition = "" }, + .{ .code = 0x1F84, .lower = &.{ 0x1F84, }, .title = &.{ 0x1F8C, }, .upper = &.{ 0x1F0C, 0x0399, }, .condition = "" }, + .{ .code = 0x1F85, .lower = &.{ 0x1F85, }, .title = &.{ 0x1F8D, }, .upper = &.{ 0x1F0D, 0x0399, }, .condition = "" }, + .{ .code = 0x1F86, .lower = &.{ 0x1F86, }, .title = &.{ 0x1F8E, }, .upper = &.{ 0x1F0E, 0x0399, }, .condition = "" }, + .{ .code = 0x1F87, .lower = &.{ 0x1F87, }, .title = &.{ 0x1F8F, }, .upper = &.{ 0x1F0F, 0x0399, }, .condition = "" }, + .{ .code = 0x1F88, .lower = &.{ 0x1F80, }, .title = &.{ 0x1F88, }, .upper = &.{ 0x1F08, 0x0399, }, .condition = "" }, + .{ .code = 0x1F89, .lower = &.{ 0x1F81, }, .title = &.{ 0x1F89, }, .upper = &.{ 0x1F09, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8A, .lower = &.{ 0x1F82, }, .title = &.{ 0x1F8A, }, .upper = &.{ 0x1F0A, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8B, .lower = &.{ 0x1F83, }, .title = &.{ 0x1F8B, }, .upper = &.{ 0x1F0B, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8C, .lower = &.{ 0x1F84, }, .title = &.{ 0x1F8C, }, .upper = &.{ 0x1F0C, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8D, .lower = &.{ 0x1F85, }, .title = &.{ 0x1F8D, }, .upper = &.{ 0x1F0D, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8E, .lower = &.{ 0x1F86, }, .title = &.{ 0x1F8E, }, .upper = &.{ 0x1F0E, 0x0399, }, .condition = "" }, + .{ .code = 0x1F8F, .lower = &.{ 0x1F87, }, .title = &.{ 0x1F8F, }, .upper = &.{ 0x1F0F, 0x0399, }, .condition = "" }, + .{ .code = 0x1F90, .lower = &.{ 0x1F90, }, .title = &.{ 0x1F98, }, .upper = &.{ 0x1F28, 0x0399, }, .condition = "" }, + .{ .code = 0x1F91, .lower = &.{ 0x1F91, }, .title = &.{ 0x1F99, }, .upper = &.{ 0x1F29, 0x0399, }, .condition = "" }, + .{ .code = 0x1F92, .lower = &.{ 0x1F92, }, .title = &.{ 0x1F9A, }, .upper = &.{ 0x1F2A, 0x0399, }, .condition = "" }, + .{ .code = 0x1F93, .lower = &.{ 0x1F93, }, .title = &.{ 0x1F9B, }, .upper = &.{ 0x1F2B, 0x0399, }, .condition = "" }, + .{ .code = 0x1F94, .lower = &.{ 0x1F94, }, .title = &.{ 0x1F9C, }, .upper = &.{ 0x1F2C, 0x0399, }, .condition = "" }, + .{ .code = 0x1F95, .lower = &.{ 0x1F95, }, .title = &.{ 0x1F9D, }, .upper = &.{ 0x1F2D, 0x0399, }, .condition = "" }, + .{ .code = 0x1F96, .lower = &.{ 0x1F96, }, .title = &.{ 0x1F9E, }, .upper = &.{ 0x1F2E, 0x0399, }, .condition = "" }, + .{ .code = 0x1F97, .lower = &.{ 0x1F97, }, .title = &.{ 0x1F9F, }, .upper = &.{ 0x1F2F, 0x0399, }, .condition = "" }, + .{ .code = 0x1F98, .lower = &.{ 0x1F90, }, .title = &.{ 0x1F98, }, .upper = &.{ 0x1F28, 0x0399, }, .condition = "" }, + .{ .code = 0x1F99, .lower = &.{ 0x1F91, }, .title = &.{ 0x1F99, }, .upper = &.{ 0x1F29, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9A, .lower = &.{ 0x1F92, }, .title = &.{ 0x1F9A, }, .upper = &.{ 0x1F2A, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9B, .lower = &.{ 0x1F93, }, .title = &.{ 0x1F9B, }, .upper = &.{ 0x1F2B, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9C, .lower = &.{ 0x1F94, }, .title = &.{ 0x1F9C, }, .upper = &.{ 0x1F2C, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9D, .lower = &.{ 0x1F95, }, .title = &.{ 0x1F9D, }, .upper = &.{ 0x1F2D, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9E, .lower = &.{ 0x1F96, }, .title = &.{ 0x1F9E, }, .upper = &.{ 0x1F2E, 0x0399, }, .condition = "" }, + .{ .code = 0x1F9F, .lower = &.{ 0x1F97, }, .title = &.{ 0x1F9F, }, .upper = &.{ 0x1F2F, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA0, .lower = &.{ 0x1FA0, }, .title = &.{ 0x1FA8, }, .upper = &.{ 0x1F68, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA1, .lower = &.{ 0x1FA1, }, .title = &.{ 0x1FA9, }, .upper = &.{ 0x1F69, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA2, .lower = &.{ 0x1FA2, }, .title = &.{ 0x1FAA, }, .upper = &.{ 0x1F6A, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA3, .lower = &.{ 0x1FA3, }, .title = &.{ 0x1FAB, }, .upper = &.{ 0x1F6B, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA4, .lower = &.{ 0x1FA4, }, .title = &.{ 0x1FAC, }, .upper = &.{ 0x1F6C, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA5, .lower = &.{ 0x1FA5, }, .title = &.{ 0x1FAD, }, .upper = &.{ 0x1F6D, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA6, .lower = &.{ 0x1FA6, }, .title = &.{ 0x1FAE, }, .upper = &.{ 0x1F6E, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA7, .lower = &.{ 0x1FA7, }, .title = &.{ 0x1FAF, }, .upper = &.{ 0x1F6F, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA8, .lower = &.{ 0x1FA0, }, .title = &.{ 0x1FA8, }, .upper = &.{ 0x1F68, 0x0399, }, .condition = "" }, + .{ .code = 0x1FA9, .lower = &.{ 0x1FA1, }, .title = &.{ 0x1FA9, }, .upper = &.{ 0x1F69, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAA, .lower = &.{ 0x1FA2, }, .title = &.{ 0x1FAA, }, .upper = &.{ 0x1F6A, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAB, .lower = &.{ 0x1FA3, }, .title = &.{ 0x1FAB, }, .upper = &.{ 0x1F6B, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAC, .lower = &.{ 0x1FA4, }, .title = &.{ 0x1FAC, }, .upper = &.{ 0x1F6C, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAD, .lower = &.{ 0x1FA5, }, .title = &.{ 0x1FAD, }, .upper = &.{ 0x1F6D, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAE, .lower = &.{ 0x1FA6, }, .title = &.{ 0x1FAE, }, .upper = &.{ 0x1F6E, 0x0399, }, .condition = "" }, + .{ .code = 0x1FAF, .lower = &.{ 0x1FA7, }, .title = &.{ 0x1FAF, }, .upper = &.{ 0x1F6F, 0x0399, }, .condition = "" }, + .{ .code = 0x1FB3, .lower = &.{ 0x1FB3, }, .title = &.{ 0x1FBC, }, .upper = &.{ 0x0391, 0x0399, }, .condition = "" }, + .{ .code = 0x1FBC, .lower = &.{ 0x1FB3, }, .title = &.{ 0x1FBC, }, .upper = &.{ 0x0391, 0x0399, }, .condition = "" }, + .{ .code = 0x1FC3, .lower = &.{ 0x1FC3, }, .title = &.{ 0x1FCC, }, .upper = &.{ 0x0397, 0x0399, }, .condition = "" }, + .{ .code = 0x1FCC, .lower = &.{ 0x1FC3, }, .title = &.{ 0x1FCC, }, .upper = &.{ 0x0397, 0x0399, }, .condition = "" }, + .{ .code = 0x1FF3, .lower = &.{ 0x1FF3, }, .title = &.{ 0x1FFC, }, .upper = &.{ 0x03A9, 0x0399, }, .condition = "" }, + .{ .code = 0x1FFC, .lower = &.{ 0x1FF3, }, .title = &.{ 0x1FFC, }, .upper = &.{ 0x03A9, 0x0399, }, .condition = "" }, + .{ .code = 0x1FB2, .lower = &.{ 0x1FB2, }, .title = &.{ 0x1FBA, 0x0345, }, .upper = &.{ 0x1FBA, 0x0399, }, .condition = "" }, + .{ .code = 0x1FB4, .lower = &.{ 0x1FB4, }, .title = &.{ 0x0386, 0x0345, }, .upper = &.{ 0x0386, 0x0399, }, .condition = "" }, + .{ .code = 0x1FC2, .lower = &.{ 0x1FC2, }, .title = &.{ 0x1FCA, 0x0345, }, .upper = &.{ 0x1FCA, 0x0399, }, .condition = "" }, + .{ .code = 0x1FC4, .lower = &.{ 0x1FC4, }, .title = &.{ 0x0389, 0x0345, }, .upper = &.{ 0x0389, 0x0399, }, .condition = "" }, + .{ .code = 0x1FF2, .lower = &.{ 0x1FF2, }, .title = &.{ 0x1FFA, 0x0345, }, .upper = &.{ 0x1FFA, 0x0399, }, .condition = "" }, + .{ .code = 0x1FF4, .lower = &.{ 0x1FF4, }, .title = &.{ 0x038F, 0x0345, }, .upper = &.{ 0x038F, 0x0399, }, .condition = "" }, + .{ .code = 0x1FB7, .lower = &.{ 0x1FB7, }, .title = &.{ 0x0391, 0x0342, 0x0345, }, .upper = &.{ 0x0391, 0x0342, 0x0399, }, .condition = "" }, + .{ .code = 0x1FC7, .lower = &.{ 0x1FC7, }, .title = &.{ 0x0397, 0x0342, 0x0345, }, .upper = &.{ 0x0397, 0x0342, 0x0399, }, .condition = "" }, + .{ .code = 0x1FF7, .lower = &.{ 0x1FF7, }, .title = &.{ 0x03A9, 0x0342, 0x0345, }, .upper = &.{ 0x03A9, 0x0342, 0x0399, }, .condition = "" }, + .{ .code = 0x03A3, .lower = &.{ 0x03C2, }, .title = &.{ 0x03A3, }, .upper = &.{ 0x03A3, }, .condition = "Final_Sigma" }, + .{ .code = 0x0307, .lower = &.{ 0x0307, }, .title = &.{ }, .upper = &.{ }, .condition = "lt After_Soft_Dotted" }, + .{ .code = 0x0049, .lower = &.{ 0x0069, 0x0307, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "lt More_Above" }, + .{ .code = 0x004A, .lower = &.{ 0x006A, 0x0307, }, .title = &.{ 0x004A, }, .upper = &.{ 0x004A, }, .condition = "lt More_Above" }, + .{ .code = 0x012E, .lower = &.{ 0x012F, 0x0307, }, .title = &.{ 0x012E, }, .upper = &.{ 0x012E, }, .condition = "lt More_Above" }, + .{ .code = 0x00CC, .lower = &.{ 0x0069, 0x0307, 0x0300, }, .title = &.{ 0x00CC, }, .upper = &.{ 0x00CC, }, .condition = "lt" }, + .{ .code = 0x00CD, .lower = &.{ 0x0069, 0x0307, 0x0301, }, .title = &.{ 0x00CD, }, .upper = &.{ 0x00CD, }, .condition = "lt" }, + .{ .code = 0x0128, .lower = &.{ 0x0069, 0x0307, 0x0303, }, .title = &.{ 0x0128, }, .upper = &.{ 0x0128, }, .condition = "lt" }, + .{ .code = 0x0130, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "tr" }, + .{ .code = 0x0130, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "az" }, + .{ .code = 0x0307, .lower = &.{ }, .title = &.{ 0x0307, }, .upper = &.{ 0x0307, }, .condition = "tr After_I" }, + .{ .code = 0x0307, .lower = &.{ }, .title = &.{ 0x0307, }, .upper = &.{ 0x0307, }, .condition = "az After_I" }, + .{ .code = 0x0049, .lower = &.{ 0x0131, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "tr Not_Before_Dot" }, + .{ .code = 0x0049, .lower = &.{ 0x0131, }, .title = &.{ 0x0049, }, .upper = &.{ 0x0049, }, .condition = "az Not_Before_Dot" }, + .{ .code = 0x0069, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "tr" }, + .{ .code = 0x0069, .lower = &.{ 0x0069, }, .title = &.{ 0x0130, }, .upper = &.{ 0x0130, }, .condition = "az" }, +};