diff --git a/generate.zig b/generate.zig index ad7f76fefb406b0961e9251ca5ae42bd317f1969..54a23a07c88edfe22536daa9d44bb19c6fe126e9 100644 --- a/generate.zig +++ b/generate.zig @@ -12,6 +12,7 @@ const files = [_]type{ @import("./scripts/DerivedCoreProperties.zig"), @import("./scripts/EastAsianWidth.zig"), @import("./scripts/EmojiSources.zig"), + @import("./scripts/EquivalentUnifiedIdeograph.zig"), }; pub fn main() !void { diff --git a/scripts/EquivalentUnifiedIdeograph.zig b/scripts/EquivalentUnifiedIdeograph.zig new file mode 100644 index 0000000000000000000000000000000000000000..5171f355695570f3394b7c91114cc0ce35d2f7c5 --- /dev/null +++ b/scripts/EquivalentUnifiedIdeograph.zig @@ -0,0 +1,39 @@ +const std = @import("std"); +const common = @import("./_common.zig"); + +pub usingnamespace common.Main(struct { + pub const source_file = "EquivalentUnifiedIdeograph"; + + pub const dest_file = "src/equivalent_unified_ideograph.zig"; + + pub const dest_header = + \\pub const data = [_][2]u21{ + \\ + ; + + pub const dest_footer = + \\}; + \\ + ; + + pub fn exec(alloc: std.mem.Allocator, line: []const u8, writer: anytype) !bool { + _ = alloc; + var it = std.mem.tokenize(u8, line, "; "); + + const first = it.next().?; + const next = it.next().?; + + if (std.mem.indexOf(u8, first, "..")) |index| { + const start = try std.fmt.parseInt(u21, first[0..index], 16); + const end = try std.fmt.parseInt(u21, first[index + 2 ..], 16); + var i = start; + while (i <= end) : (i += 1) { + try writer.print(" .{{ 0x{X}, 0x{s} }},\n", .{ i, next }); + } + } else { + try writer.print(" .{{ 0x{s}, 0x{s} }},\n", .{ first, next }); + } + + return true; + } +}); diff --git a/src/equivalent_unified_ideograph.zig b/src/equivalent_unified_ideograph.zig new file mode 100644 index 0000000000000000000000000000000000000000..33e06c35295b90e5301bec485150820d9cc390e3 --- /dev/null +++ b/src/equivalent_unified_ideograph.zig @@ -0,0 +1,357 @@ +// 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/EquivalentUnifiedIdeograph.txt +// +// zig fmt: off + +pub const data = [_][2]u21{ + .{ 0x2E81, 0x5382 }, + .{ 0x2E82, 0x4E5B }, + .{ 0x2E83, 0x4E5A }, + .{ 0x2E84, 0x4E59 }, + .{ 0x2E85, 0x4EBB }, + .{ 0x2E86, 0x5182 }, + .{ 0x2E87, 0x20628 }, + .{ 0x2E88, 0x5200 }, + .{ 0x2E89, 0x5202 }, + .{ 0x2E8A, 0x535C }, + .{ 0x2E8B, 0x353E }, + .{ 0x2E8C, 0x5C0F }, + .{ 0x2E8D, 0x5C0F }, + .{ 0x2E8E, 0x5140 }, + .{ 0x2E8F, 0x5C23 }, + .{ 0x2E90, 0x5C22 }, + .{ 0x2E91, 0x21BC2 }, + .{ 0x2E92, 0x5DF3 }, + .{ 0x2E93, 0x5E7A }, + .{ 0x2E94, 0x5F51 }, + .{ 0x2E95, 0x5F50 }, + .{ 0x2E96, 0x5FC4 }, + .{ 0x2E97, 0x5FC3 }, + .{ 0x2E98, 0x624C }, + .{ 0x2E99, 0x6535 }, + .{ 0x2E9B, 0x65E1 }, + .{ 0x2E9C, 0x65E5 }, + .{ 0x2E9D, 0x6708 }, + .{ 0x2E9E, 0x6B7A }, + .{ 0x2E9F, 0x6BCD }, + .{ 0x2EA0, 0x6C11 }, + .{ 0x2EA1, 0x6C35 }, + .{ 0x2EA2, 0x6C3A }, + .{ 0x2EA3, 0x706C }, + .{ 0x2EA4, 0x722B }, + .{ 0x2EA5, 0x722B }, + .{ 0x2EA6, 0x4E2C }, + .{ 0x2EA7, 0x725B }, + .{ 0x2EA8, 0x72AD }, + .{ 0x2EA9, 0x738B }, + .{ 0x2EAA, 0x24D14 }, + .{ 0x2EAB, 0x76EE }, + .{ 0x2EAC, 0x793A }, + .{ 0x2EAD, 0x793B }, + .{ 0x2EAE, 0x25AD7 }, + .{ 0x2EAF, 0x7CF9 }, + .{ 0x2EB0, 0x7E9F }, + .{ 0x2EB1, 0x7F53 }, + .{ 0x2EB2, 0x7F52 }, + .{ 0x2EB3, 0x34C1 }, + .{ 0x2EB4, 0x5197 }, + .{ 0x2EB5, 0x2626B }, + .{ 0x2EB6, 0x7F8A }, + .{ 0x2EB7, 0x2634C }, + .{ 0x2EB8, 0x2634B }, + .{ 0x2EB9, 0x8002 }, + .{ 0x2EBA, 0x8080 }, + .{ 0x2EBB, 0x807F }, + .{ 0x2EBC, 0x8089 }, + .{ 0x2EBD, 0x26951 }, + .{ 0x2EBE, 0x8279 }, + .{ 0x2EBF, 0x8279 }, + .{ 0x2EC0, 0x8279 }, + .{ 0x2EC1, 0x864E }, + .{ 0x2EC2, 0x8864 }, + .{ 0x2EC3, 0x8980 }, + .{ 0x2EC4, 0x897F }, + .{ 0x2EC5, 0x89C1 }, + .{ 0x2EC6, 0x89D2 }, + .{ 0x2EC7, 0x278B2 }, + .{ 0x2EC8, 0x8BA0 }, + .{ 0x2EC9, 0x8D1D }, + .{ 0x2ECA, 0x27FB7 }, + .{ 0x2ECB, 0x8F66 }, + .{ 0x2ECC, 0x8FB6 }, + .{ 0x2ECD, 0x8FB6 }, + .{ 0x2ECE, 0x8FB6 }, + .{ 0x2ECF, 0x9091 }, + .{ 0x2ED0, 0x9485 }, + .{ 0x2ED1, 0x9577 }, + .{ 0x2ED2, 0x9578 }, + .{ 0x2ED3, 0x957F }, + .{ 0x2ED4, 0x95E8 }, + .{ 0x2ED5, 0x28E0F }, + .{ 0x2ED6, 0x961D }, + .{ 0x2ED7, 0x96E8 }, + .{ 0x2ED8, 0x9752 }, + .{ 0x2ED9, 0x97E6 }, + .{ 0x2EDA, 0x9875 }, + .{ 0x2EDB, 0x98CE }, + .{ 0x2EDC, 0x98DE }, + .{ 0x2EDD, 0x98DF }, + .{ 0x2EDE, 0x2967F }, + .{ 0x2EDF, 0x98E0 }, + .{ 0x2EE0, 0x9963 }, + .{ 0x2EE1, 0x29810 }, + .{ 0x2EE2, 0x9A6C }, + .{ 0x2EE3, 0x9AA8 }, + .{ 0x2EE4, 0x9B3C }, + .{ 0x2EE5, 0x9C7C }, + .{ 0x2EE6, 0x9E1F }, + .{ 0x2EE7, 0x5364 }, + .{ 0x2EE8, 0x9EA6 }, + .{ 0x2EE9, 0x9EC4 }, + .{ 0x2EEA, 0x9EFE }, + .{ 0x2EEB, 0x6589 }, + .{ 0x2EEC, 0x9F50 }, + .{ 0x2EED, 0x6B6F }, + .{ 0x2EEE, 0x9F7F }, + .{ 0x2EEF, 0x7ADC }, + .{ 0x2EF0, 0x9F99 }, + .{ 0x2EF1, 0x9F9C }, + .{ 0x2EF2, 0x4E80 }, + .{ 0x2EF3, 0x9F9F }, + .{ 0x2F00, 0x4E00 }, + .{ 0x2F01, 0x4E28 }, + .{ 0x2F02, 0x4E36 }, + .{ 0x2F03, 0x4E3F }, + .{ 0x2F04, 0x4E59 }, + .{ 0x2F05, 0x4E85 }, + .{ 0x2F06, 0x4E8C }, + .{ 0x2F07, 0x4EA0 }, + .{ 0x2F08, 0x4EBA }, + .{ 0x2F09, 0x513F }, + .{ 0x2F0A, 0x5165 }, + .{ 0x2F0B, 0x516B }, + .{ 0x2F0C, 0x5182 }, + .{ 0x2F0D, 0x5196 }, + .{ 0x2F0E, 0x51AB }, + .{ 0x2F0F, 0x51E0 }, + .{ 0x2F10, 0x51F5 }, + .{ 0x2F11, 0x5200 }, + .{ 0x2F12, 0x529B }, + .{ 0x2F13, 0x52F9 }, + .{ 0x2F14, 0x5315 }, + .{ 0x2F15, 0x531A }, + .{ 0x2F16, 0x5338 }, + .{ 0x2F17, 0x5341 }, + .{ 0x2F18, 0x535C }, + .{ 0x2F19, 0x5369 }, + .{ 0x2F1A, 0x5382 }, + .{ 0x2F1B, 0x53B6 }, + .{ 0x2F1C, 0x53C8 }, + .{ 0x2F1D, 0x53E3 }, + .{ 0x2F1E, 0x56D7 }, + .{ 0x2F1F, 0x571F }, + .{ 0x2F20, 0x58EB }, + .{ 0x2F21, 0x5902 }, + .{ 0x2F22, 0x590A }, + .{ 0x2F23, 0x5915 }, + .{ 0x2F24, 0x5927 }, + .{ 0x2F25, 0x5973 }, + .{ 0x2F26, 0x5B50 }, + .{ 0x2F27, 0x5B80 }, + .{ 0x2F28, 0x5BF8 }, + .{ 0x2F29, 0x5C0F }, + .{ 0x2F2A, 0x5C22 }, + .{ 0x2F2B, 0x5C38 }, + .{ 0x2F2C, 0x5C6E }, + .{ 0x2F2D, 0x5C71 }, + .{ 0x2F2E, 0x5DDB }, + .{ 0x2F2F, 0x5DE5 }, + .{ 0x2F30, 0x5DF1 }, + .{ 0x2F31, 0x5DFE }, + .{ 0x2F32, 0x5E72 }, + .{ 0x2F33, 0x5E7A }, + .{ 0x2F34, 0x5E7F }, + .{ 0x2F35, 0x5EF4 }, + .{ 0x2F36, 0x5EFE }, + .{ 0x2F37, 0x5F0B }, + .{ 0x2F38, 0x5F13 }, + .{ 0x2F39, 0x5F50 }, + .{ 0x2F3A, 0x5F61 }, + .{ 0x2F3B, 0x5F73 }, + .{ 0x2F3C, 0x5FC3 }, + .{ 0x2F3D, 0x6208 }, + .{ 0x2F3E, 0x6236 }, + .{ 0x2F3F, 0x624B }, + .{ 0x2F40, 0x652F }, + .{ 0x2F41, 0x6534 }, + .{ 0x2F42, 0x6587 }, + .{ 0x2F43, 0x6597 }, + .{ 0x2F44, 0x65A4 }, + .{ 0x2F45, 0x65B9 }, + .{ 0x2F46, 0x65E0 }, + .{ 0x2F47, 0x65E5 }, + .{ 0x2F48, 0x66F0 }, + .{ 0x2F49, 0x6708 }, + .{ 0x2F4A, 0x6728 }, + .{ 0x2F4B, 0x6B20 }, + .{ 0x2F4C, 0x6B62 }, + .{ 0x2F4D, 0x6B79 }, + .{ 0x2F4E, 0x6BB3 }, + .{ 0x2F4F, 0x6BCB }, + .{ 0x2F50, 0x6BD4 }, + .{ 0x2F51, 0x6BDB }, + .{ 0x2F52, 0x6C0F }, + .{ 0x2F53, 0x6C14 }, + .{ 0x2F54, 0x6C34 }, + .{ 0x2F55, 0x706B }, + .{ 0x2F56, 0x722A }, + .{ 0x2F57, 0x7236 }, + .{ 0x2F58, 0x723B }, + .{ 0x2F59, 0x723F }, + .{ 0x2F5A, 0x7247 }, + .{ 0x2F5B, 0x7259 }, + .{ 0x2F5C, 0x725B }, + .{ 0x2F5D, 0x72AC }, + .{ 0x2F5E, 0x7384 }, + .{ 0x2F5F, 0x7389 }, + .{ 0x2F60, 0x74DC }, + .{ 0x2F61, 0x74E6 }, + .{ 0x2F62, 0x7518 }, + .{ 0x2F63, 0x751F }, + .{ 0x2F64, 0x7528 }, + .{ 0x2F65, 0x7530 }, + .{ 0x2F66, 0x758B }, + .{ 0x2F67, 0x7592 }, + .{ 0x2F68, 0x7676 }, + .{ 0x2F69, 0x767D }, + .{ 0x2F6A, 0x76AE }, + .{ 0x2F6B, 0x76BF }, + .{ 0x2F6C, 0x76EE }, + .{ 0x2F6D, 0x77DB }, + .{ 0x2F6E, 0x77E2 }, + .{ 0x2F6F, 0x77F3 }, + .{ 0x2F70, 0x793A }, + .{ 0x2F71, 0x79B8 }, + .{ 0x2F72, 0x79BE }, + .{ 0x2F73, 0x7A74 }, + .{ 0x2F74, 0x7ACB }, + .{ 0x2F75, 0x7AF9 }, + .{ 0x2F76, 0x7C73 }, + .{ 0x2F77, 0x7CF8 }, + .{ 0x2F78, 0x7F36 }, + .{ 0x2F79, 0x7F51 }, + .{ 0x2F7A, 0x7F8A }, + .{ 0x2F7B, 0x7FBD }, + .{ 0x2F7C, 0x8001 }, + .{ 0x2F7D, 0x800C }, + .{ 0x2F7E, 0x8012 }, + .{ 0x2F7F, 0x8033 }, + .{ 0x2F80, 0x807F }, + .{ 0x2F81, 0x8089 }, + .{ 0x2F82, 0x81E3 }, + .{ 0x2F83, 0x81EA }, + .{ 0x2F84, 0x81F3 }, + .{ 0x2F85, 0x81FC }, + .{ 0x2F86, 0x820C }, + .{ 0x2F87, 0x821B }, + .{ 0x2F88, 0x821F }, + .{ 0x2F89, 0x826E }, + .{ 0x2F8A, 0x8272 }, + .{ 0x2F8B, 0x8278 }, + .{ 0x2F8C, 0x864D }, + .{ 0x2F8D, 0x866B }, + .{ 0x2F8E, 0x8840 }, + .{ 0x2F8F, 0x884C }, + .{ 0x2F90, 0x8863 }, + .{ 0x2F91, 0x897E }, + .{ 0x2F92, 0x898B }, + .{ 0x2F93, 0x89D2 }, + .{ 0x2F94, 0x8A00 }, + .{ 0x2F95, 0x8C37 }, + .{ 0x2F96, 0x8C46 }, + .{ 0x2F97, 0x8C55 }, + .{ 0x2F98, 0x8C78 }, + .{ 0x2F99, 0x8C9D }, + .{ 0x2F9A, 0x8D64 }, + .{ 0x2F9B, 0x8D70 }, + .{ 0x2F9C, 0x8DB3 }, + .{ 0x2F9D, 0x8EAB }, + .{ 0x2F9E, 0x8ECA }, + .{ 0x2F9F, 0x8F9B }, + .{ 0x2FA0, 0x8FB0 }, + .{ 0x2FA1, 0x8FB5 }, + .{ 0x2FA2, 0x9091 }, + .{ 0x2FA3, 0x9149 }, + .{ 0x2FA4, 0x91C6 }, + .{ 0x2FA5, 0x91CC }, + .{ 0x2FA6, 0x91D1 }, + .{ 0x2FA7, 0x9577 }, + .{ 0x2FA8, 0x9580 }, + .{ 0x2FA9, 0x961C }, + .{ 0x2FAA, 0x96B6 }, + .{ 0x2FAB, 0x96B9 }, + .{ 0x2FAC, 0x96E8 }, + .{ 0x2FAD, 0x9751 }, + .{ 0x2FAE, 0x975E }, + .{ 0x2FAF, 0x9762 }, + .{ 0x2FB0, 0x9769 }, + .{ 0x2FB1, 0x97CB }, + .{ 0x2FB2, 0x97ED }, + .{ 0x2FB3, 0x97F3 }, + .{ 0x2FB4, 0x9801 }, + .{ 0x2FB5, 0x98A8 }, + .{ 0x2FB6, 0x98DB }, + .{ 0x2FB7, 0x98DF }, + .{ 0x2FB8, 0x9996 }, + .{ 0x2FB9, 0x9999 }, + .{ 0x2FBA, 0x99AC }, + .{ 0x2FBB, 0x9AA8 }, + .{ 0x2FBC, 0x9AD8 }, + .{ 0x2FBD, 0x9ADF }, + .{ 0x2FBE, 0x9B25 }, + .{ 0x2FBF, 0x9B2F }, + .{ 0x2FC0, 0x9B32 }, + .{ 0x2FC1, 0x9B3C }, + .{ 0x2FC2, 0x9B5A }, + .{ 0x2FC3, 0x9CE5 }, + .{ 0x2FC4, 0x9E75 }, + .{ 0x2FC5, 0x9E7F }, + .{ 0x2FC6, 0x9EA5 }, + .{ 0x2FC7, 0x9EBB }, + .{ 0x2FC8, 0x9EC3 }, + .{ 0x2FC9, 0x9ECD }, + .{ 0x2FCA, 0x9ED1 }, + .{ 0x2FCB, 0x9EF9 }, + .{ 0x2FCC, 0x9EFD }, + .{ 0x2FCD, 0x9F0E }, + .{ 0x2FCE, 0x9F13 }, + .{ 0x2FCF, 0x9F20 }, + .{ 0x2FD0, 0x9F3B }, + .{ 0x2FD1, 0x9F4A }, + .{ 0x2FD2, 0x9F52 }, + .{ 0x2FD3, 0x9F8D }, + .{ 0x2FD4, 0x9F9C }, + .{ 0x2FD5, 0x9FA0 }, + .{ 0x31C6, 0x200CC }, + .{ 0x31CF, 0x4E40 }, + .{ 0x31D0, 0x4E00 }, + .{ 0x31D1, 0x4E28 }, + .{ 0x31D2, 0x4E3F }, + .{ 0x31D3, 0x4E3F }, + .{ 0x31D4, 0x4E36 }, + .{ 0x31D5, 0x200CD }, + .{ 0x31D6, 0x4E5B }, + .{ 0x31D7, 0x200CA }, + .{ 0x31D8, 0x200CE }, + .{ 0x31D9, 0x2010C }, + .{ 0x31DA, 0x4E85 }, + .{ 0x31DB, 0x21FE8 }, + .{ 0x31DC, 0x200CB }, + .{ 0x31DD, 0x4E40 }, + .{ 0x31DE, 0x200D1 }, + .{ 0x31DF, 0x4E5A }, + .{ 0x31E0, 0x4E59 }, + .{ 0x31E1, 0x2010E }, +}; diff --git a/src/lib.zig b/src/lib.zig index 1e8d6460e9cd8aedd0bc79e89cfd7b9fe3f801f5..f184337d90f55888ddd201c55cfbd006bd7feb24 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -10,3 +10,4 @@ pub const derived_core_properties = @import("./derived_core_properties.zig"); pub const east_asian_width = @import("./east_asian_width.zig"); pub const emoji_sources = @import("./emoji_sources.zig"); +pub const equivalent_unified_ideograph = @import("./equivalent_unified_ideograph.zig"); diff --git a/src/main.zig b/src/main.zig index 12dbb8a51f2e4c5a47c4641b224904424ced2e48..43dfab4f2106c9feebe9876487756b93628fa544 100644 --- a/src/main.zig +++ b/src/main.zig @@ -17,6 +17,7 @@ pub fn main() !void { ucd.derived_core_properties, ucd.east_asian_width, ucd.emoji_sources, + ucd.equivalent_unified_ideograph, }; inline for (data) |b| {