From df0d74efbe7ee84aef3880e5fb6b8d5a74281d7a Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 9 Mar 2026 18:38:49 +0100 Subject: [PATCH] Simplify table writer --- core/unicode/generated.odin | 380 ++++++++++--------- core/unicode/tools/ucd/generate_unicode.odin | 111 +++--- core/unicode/tools/ucd/ucd.odin | 20 +- 3 files changed, 268 insertions(+), 243 deletions(-) diff --git a/core/unicode/generated.odin b/core/unicode/generated.odin index 7a29e56ce..bfea47a87 100644 --- a/core/unicode/generated.odin +++ b/core/unicode/generated.odin @@ -65,61 +65,75 @@ Range :: struct { @(rodata) ll_singles16 := [?]u16{ - 0x00B5, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109, 0x010B, 0x010D, 0x010F, 0x0111, - 0x0113, 0x0115, 0x0117, 0x0119, 0x011B, 0x011D, 0x011F, 0x0121, 0x0123, 0x0125, - 0x0127, 0x0129, 0x012B, 0x012D, 0x012F, 0x0131, 0x0133, 0x0135, 0x013A, 0x013C, - 0x013E, 0x0140, 0x0142, 0x0144, 0x0146, 0x014B, 0x014D, 0x014F, 0x0151, 0x0153, - 0x0155, 0x0157, 0x0159, 0x015B, 0x015D, 0x015F, 0x0161, 0x0163, 0x0165, 0x0167, - 0x0169, 0x016B, 0x016D, 0x016F, 0x0171, 0x0173, 0x0175, 0x0177, 0x017A, 0x017C, - 0x0183, 0x0185, 0x0188, 0x0192, 0x0195, 0x019E, 0x01A1, 0x01A3, 0x01A5, 0x01A8, - 0x01AD, 0x01B0, 0x01B4, 0x01B6, 0x01C6, 0x01C9, 0x01CC, 0x01CE, 0x01D0, 0x01D2, - 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DF, 0x01E1, 0x01E3, 0x01E5, 0x01E7, 0x01E9, - 0x01EB, 0x01ED, 0x01F3, 0x01F5, 0x01F9, 0x01FB, 0x01FD, 0x01FF, 0x0201, 0x0203, - 0x0205, 0x0207, 0x0209, 0x020B, 0x020D, 0x020F, 0x0211, 0x0213, 0x0215, 0x0217, - 0x0219, 0x021B, 0x021D, 0x021F, 0x0221, 0x0223, 0x0225, 0x0227, 0x0229, 0x022B, - 0x022D, 0x022F, 0x0231, 0x023C, 0x0242, 0x0247, 0x0249, 0x024B, 0x024D, 0x0371, - 0x0373, 0x0377, 0x0390, 0x03D9, 0x03DB, 0x03DD, 0x03DF, 0x03E1, 0x03E3, 0x03E5, - 0x03E7, 0x03E9, 0x03EB, 0x03ED, 0x03F5, 0x03F8, 0x0461, 0x0463, 0x0465, 0x0467, - 0x0469, 0x046B, 0x046D, 0x046F, 0x0471, 0x0473, 0x0475, 0x0477, 0x0479, 0x047B, - 0x047D, 0x047F, 0x0481, 0x048B, 0x048D, 0x048F, 0x0491, 0x0493, 0x0495, 0x0497, - 0x0499, 0x049B, 0x049D, 0x049F, 0x04A1, 0x04A3, 0x04A5, 0x04A7, 0x04A9, 0x04AB, - 0x04AD, 0x04AF, 0x04B1, 0x04B3, 0x04B5, 0x04B7, 0x04B9, 0x04BB, 0x04BD, 0x04BF, - 0x04C2, 0x04C4, 0x04C6, 0x04C8, 0x04CA, 0x04CC, 0x04D1, 0x04D3, 0x04D5, 0x04D7, - 0x04D9, 0x04DB, 0x04DD, 0x04DF, 0x04E1, 0x04E3, 0x04E5, 0x04E7, 0x04E9, 0x04EB, - 0x04ED, 0x04EF, 0x04F1, 0x04F3, 0x04F5, 0x04F7, 0x04F9, 0x04FB, 0x04FD, 0x04FF, - 0x0501, 0x0503, 0x0505, 0x0507, 0x0509, 0x050B, 0x050D, 0x050F, 0x0511, 0x0513, - 0x0515, 0x0517, 0x0519, 0x051B, 0x051D, 0x051F, 0x0521, 0x0523, 0x0525, 0x0527, - 0x0529, 0x052B, 0x052D, 0x052F, 0x1C8A, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, - 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, - 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, - 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, - 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, - 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, - 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, - 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, - 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, - 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, - 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, - 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, - 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x210A, 0x2113, - 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, - 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, - 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, - 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, - 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, - 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, - 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, - 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, - 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, - 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, - 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, - 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, - 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, - 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, - 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, - 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, - 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7CD, - 0xA7CF, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7DB, 0xA7F6, 0xA7FA, + 0x00B5, 0x0101, 0x0103, 0x0105, 0x0107, 0x0109, 0x010B, 0x010D, + 0x010F, 0x0111, 0x0113, 0x0115, 0x0117, 0x0119, 0x011B, 0x011D, + 0x011F, 0x0121, 0x0123, 0x0125, 0x0127, 0x0129, 0x012B, 0x012D, + 0x012F, 0x0131, 0x0133, 0x0135, 0x013A, 0x013C, 0x013E, 0x0140, + 0x0142, 0x0144, 0x0146, 0x014B, 0x014D, 0x014F, 0x0151, 0x0153, + 0x0155, 0x0157, 0x0159, 0x015B, 0x015D, 0x015F, 0x0161, 0x0163, + 0x0165, 0x0167, 0x0169, 0x016B, 0x016D, 0x016F, 0x0171, 0x0173, + 0x0175, 0x0177, 0x017A, 0x017C, 0x0183, 0x0185, 0x0188, 0x0192, + 0x0195, 0x019E, 0x01A1, 0x01A3, 0x01A5, 0x01A8, 0x01AD, 0x01B0, + 0x01B4, 0x01B6, 0x01C6, 0x01C9, 0x01CC, 0x01CE, 0x01D0, 0x01D2, + 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DF, 0x01E1, 0x01E3, 0x01E5, + 0x01E7, 0x01E9, 0x01EB, 0x01ED, 0x01F3, 0x01F5, 0x01F9, 0x01FB, + 0x01FD, 0x01FF, 0x0201, 0x0203, 0x0205, 0x0207, 0x0209, 0x020B, + 0x020D, 0x020F, 0x0211, 0x0213, 0x0215, 0x0217, 0x0219, 0x021B, + 0x021D, 0x021F, 0x0221, 0x0223, 0x0225, 0x0227, 0x0229, 0x022B, + 0x022D, 0x022F, 0x0231, 0x023C, 0x0242, 0x0247, 0x0249, 0x024B, + 0x024D, 0x0371, 0x0373, 0x0377, 0x0390, 0x03D9, 0x03DB, 0x03DD, + 0x03DF, 0x03E1, 0x03E3, 0x03E5, 0x03E7, 0x03E9, 0x03EB, 0x03ED, + 0x03F5, 0x03F8, 0x0461, 0x0463, 0x0465, 0x0467, 0x0469, 0x046B, + 0x046D, 0x046F, 0x0471, 0x0473, 0x0475, 0x0477, 0x0479, 0x047B, + 0x047D, 0x047F, 0x0481, 0x048B, 0x048D, 0x048F, 0x0491, 0x0493, + 0x0495, 0x0497, 0x0499, 0x049B, 0x049D, 0x049F, 0x04A1, 0x04A3, + 0x04A5, 0x04A7, 0x04A9, 0x04AB, 0x04AD, 0x04AF, 0x04B1, 0x04B3, + 0x04B5, 0x04B7, 0x04B9, 0x04BB, 0x04BD, 0x04BF, 0x04C2, 0x04C4, + 0x04C6, 0x04C8, 0x04CA, 0x04CC, 0x04D1, 0x04D3, 0x04D5, 0x04D7, + 0x04D9, 0x04DB, 0x04DD, 0x04DF, 0x04E1, 0x04E3, 0x04E5, 0x04E7, + 0x04E9, 0x04EB, 0x04ED, 0x04EF, 0x04F1, 0x04F3, 0x04F5, 0x04F7, + 0x04F9, 0x04FB, 0x04FD, 0x04FF, 0x0501, 0x0503, 0x0505, 0x0507, + 0x0509, 0x050B, 0x050D, 0x050F, 0x0511, 0x0513, 0x0515, 0x0517, + 0x0519, 0x051B, 0x051D, 0x051F, 0x0521, 0x0523, 0x0525, 0x0527, + 0x0529, 0x052B, 0x052D, 0x052F, 0x1C8A, 0x1E01, 0x1E03, 0x1E05, + 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, + 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, + 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, + 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, + 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, + 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, + 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, + 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, + 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, + 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, + 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, + 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, + 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, + 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, + 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, + 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, + 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, + 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, + 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, + 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, + 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, + 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, + 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, + 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, + 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, + 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, + 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, + 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, + 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, + 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, + 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, + 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, + 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, + 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, + 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, + 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, + 0xA7C3, 0xA7C8, 0xA7CA, 0xA7CD, 0xA7CF, 0xA7D1, 0xA7D3, 0xA7D5, + 0xA7D7, 0xA7D9, 0xA7DB, 0xA7F6, 0xA7FA, } @(rodata) @@ -257,10 +271,11 @@ ll_ranges := Range{ @(rodata) lm_singles16 := [?]u16{ - 0x02EC, 0x02EE, 0x0374, 0x037A, 0x0559, 0x0640, 0x07FA, 0x081A, 0x0824, 0x0828, - 0x08C9, 0x0971, 0x0E46, 0x0EC6, 0x10FC, 0x17D7, 0x1843, 0x1AA7, 0x1D78, 0x2071, - 0x207F, 0x2D6F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA788, - 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xAB69, 0xFF70, + 0x02EC, 0x02EE, 0x0374, 0x037A, 0x0559, 0x0640, 0x07FA, 0x081A, + 0x0824, 0x0828, 0x08C9, 0x0971, 0x0E46, 0x0EC6, 0x10FC, 0x17D7, + 0x1843, 0x1AA7, 0x1D78, 0x2071, 0x207F, 0x2D6F, 0x2E2F, 0x3005, + 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA788, 0xA9CF, 0xA9E6, + 0xAA70, 0xAADD, 0xAB69, 0xFF70, } @(rodata) @@ -320,12 +335,13 @@ lm_ranges := Range{ @(rodata) lo_singles16 := [?]u16{ - 0x00AA, 0x00BA, 0x01BB, 0x06D5, 0x06FF, 0x0710, 0x07B1, 0x093D, 0x0950, 0x09B2, - 0x09BD, 0x09CE, 0x09FC, 0x0A5E, 0x0ABD, 0x0AD0, 0x0AF9, 0x0B3D, 0x0B71, 0x0B83, - 0x0B9C, 0x0BD0, 0x0C3D, 0x0C80, 0x0CBD, 0x0D3D, 0x0D4E, 0x0DBD, 0x0E84, 0x0EA5, - 0x0EBD, 0x0F00, 0x103F, 0x1061, 0x108E, 0x1258, 0x12C0, 0x17DC, 0x18AA, 0x1CFA, - 0x3006, 0x303C, 0x309F, 0x30FF, 0xA66E, 0xA78F, 0xA7F7, 0xA8FB, 0xAA7A, 0xAAB1, - 0xAAC0, 0xAAC2, 0xAAF2, 0xFB1D, 0xFB3E, + 0x00AA, 0x00BA, 0x01BB, 0x06D5, 0x06FF, 0x0710, 0x07B1, 0x093D, + 0x0950, 0x09B2, 0x09BD, 0x09CE, 0x09FC, 0x0A5E, 0x0ABD, 0x0AD0, + 0x0AF9, 0x0B3D, 0x0B71, 0x0B83, 0x0B9C, 0x0BD0, 0x0C3D, 0x0C80, + 0x0CBD, 0x0D3D, 0x0D4E, 0x0DBD, 0x0E84, 0x0EA5, 0x0EBD, 0x0F00, + 0x103F, 0x1061, 0x108E, 0x1258, 0x12C0, 0x17DC, 0x18AA, 0x1CFA, + 0x3006, 0x303C, 0x309F, 0x30FF, 0xA66E, 0xA78F, 0xA7F7, 0xA8FB, + 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xAAF2, 0xFB1D, 0xFB3E, } @(rodata) @@ -801,62 +817,75 @@ lt_ranges := Range{ @(rodata) lu_singles16 := [?]u16{ - 0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010A, 0x010C, 0x010E, 0x0110, 0x0112, - 0x0114, 0x0116, 0x0118, 0x011A, 0x011C, 0x011E, 0x0120, 0x0122, 0x0124, 0x0126, - 0x0128, 0x012A, 0x012C, 0x012E, 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013B, - 0x013D, 0x013F, 0x0141, 0x0143, 0x0145, 0x0147, 0x014A, 0x014C, 0x014E, 0x0150, - 0x0152, 0x0154, 0x0156, 0x0158, 0x015A, 0x015C, 0x015E, 0x0160, 0x0162, 0x0164, - 0x0166, 0x0168, 0x016A, 0x016C, 0x016E, 0x0170, 0x0172, 0x0174, 0x0176, 0x017B, - 0x017D, 0x0184, 0x01A2, 0x01A4, 0x01A9, 0x01AC, 0x01B5, 0x01BC, 0x01C4, 0x01C7, - 0x01CA, 0x01CD, 0x01CF, 0x01D1, 0x01D3, 0x01D5, 0x01D7, 0x01D9, 0x01DB, 0x01DE, - 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC, 0x01EE, 0x01F1, 0x01F4, - 0x01FA, 0x01FC, 0x01FE, 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020A, 0x020C, - 0x020E, 0x0210, 0x0212, 0x0214, 0x0216, 0x0218, 0x021A, 0x021C, 0x021E, 0x0220, - 0x0222, 0x0224, 0x0226, 0x0228, 0x022A, 0x022C, 0x022E, 0x0230, 0x0232, 0x0241, - 0x0248, 0x024A, 0x024C, 0x024E, 0x0370, 0x0372, 0x0376, 0x037F, 0x0386, 0x038C, - 0x03CF, 0x03D8, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x03E2, 0x03E4, 0x03E6, 0x03E8, - 0x03EA, 0x03EC, 0x03EE, 0x03F4, 0x03F7, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, - 0x046A, 0x046C, 0x046E, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047A, 0x047C, - 0x047E, 0x0480, 0x048A, 0x048C, 0x048E, 0x0490, 0x0492, 0x0494, 0x0496, 0x0498, - 0x049A, 0x049C, 0x049E, 0x04A0, 0x04A2, 0x04A4, 0x04A6, 0x04A8, 0x04AA, 0x04AC, - 0x04AE, 0x04B0, 0x04B2, 0x04B4, 0x04B6, 0x04B8, 0x04BA, 0x04BC, 0x04BE, 0x04C3, - 0x04C5, 0x04C7, 0x04C9, 0x04CB, 0x04CD, 0x04D0, 0x04D2, 0x04D4, 0x04D6, 0x04D8, - 0x04DA, 0x04DC, 0x04DE, 0x04E0, 0x04E2, 0x04E4, 0x04E6, 0x04E8, 0x04EA, 0x04EC, - 0x04EE, 0x04F0, 0x04F2, 0x04F4, 0x04F6, 0x04F8, 0x04FA, 0x04FC, 0x04FE, 0x0500, - 0x0502, 0x0504, 0x0506, 0x0508, 0x050A, 0x050C, 0x050E, 0x0510, 0x0512, 0x0514, - 0x0516, 0x0518, 0x051A, 0x051C, 0x051E, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528, - 0x052A, 0x052C, 0x052E, 0x10C7, 0x10CD, 0x1C89, 0x1E00, 0x1E02, 0x1E04, 0x1E06, - 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, - 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, - 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, - 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, - 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, - 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, - 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, - 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, - 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, - 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, - 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, - 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, - 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, - 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, - 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, - 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, - 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, - 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, - 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, - 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, - 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, - 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, - 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, - 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, - 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, - 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, - 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, - 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, - 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, - 0xA7C0, 0xA7C2, 0xA7C9, 0xA7CE, 0xA7D0, 0xA7D2, 0xA7D4, 0xA7D6, 0xA7D8, 0xA7DA, - 0xA7DC, 0xA7F5, + 0x0100, 0x0102, 0x0104, 0x0106, 0x0108, 0x010A, 0x010C, 0x010E, + 0x0110, 0x0112, 0x0114, 0x0116, 0x0118, 0x011A, 0x011C, 0x011E, + 0x0120, 0x0122, 0x0124, 0x0126, 0x0128, 0x012A, 0x012C, 0x012E, + 0x0130, 0x0132, 0x0134, 0x0136, 0x0139, 0x013B, 0x013D, 0x013F, + 0x0141, 0x0143, 0x0145, 0x0147, 0x014A, 0x014C, 0x014E, 0x0150, + 0x0152, 0x0154, 0x0156, 0x0158, 0x015A, 0x015C, 0x015E, 0x0160, + 0x0162, 0x0164, 0x0166, 0x0168, 0x016A, 0x016C, 0x016E, 0x0170, + 0x0172, 0x0174, 0x0176, 0x017B, 0x017D, 0x0184, 0x01A2, 0x01A4, + 0x01A9, 0x01AC, 0x01B5, 0x01BC, 0x01C4, 0x01C7, 0x01CA, 0x01CD, + 0x01CF, 0x01D1, 0x01D3, 0x01D5, 0x01D7, 0x01D9, 0x01DB, 0x01DE, + 0x01E0, 0x01E2, 0x01E4, 0x01E6, 0x01E8, 0x01EA, 0x01EC, 0x01EE, + 0x01F1, 0x01F4, 0x01FA, 0x01FC, 0x01FE, 0x0200, 0x0202, 0x0204, + 0x0206, 0x0208, 0x020A, 0x020C, 0x020E, 0x0210, 0x0212, 0x0214, + 0x0216, 0x0218, 0x021A, 0x021C, 0x021E, 0x0220, 0x0222, 0x0224, + 0x0226, 0x0228, 0x022A, 0x022C, 0x022E, 0x0230, 0x0232, 0x0241, + 0x0248, 0x024A, 0x024C, 0x024E, 0x0370, 0x0372, 0x0376, 0x037F, + 0x0386, 0x038C, 0x03CF, 0x03D8, 0x03DA, 0x03DC, 0x03DE, 0x03E0, + 0x03E2, 0x03E4, 0x03E6, 0x03E8, 0x03EA, 0x03EC, 0x03EE, 0x03F4, + 0x03F7, 0x0460, 0x0462, 0x0464, 0x0466, 0x0468, 0x046A, 0x046C, + 0x046E, 0x0470, 0x0472, 0x0474, 0x0476, 0x0478, 0x047A, 0x047C, + 0x047E, 0x0480, 0x048A, 0x048C, 0x048E, 0x0490, 0x0492, 0x0494, + 0x0496, 0x0498, 0x049A, 0x049C, 0x049E, 0x04A0, 0x04A2, 0x04A4, + 0x04A6, 0x04A8, 0x04AA, 0x04AC, 0x04AE, 0x04B0, 0x04B2, 0x04B4, + 0x04B6, 0x04B8, 0x04BA, 0x04BC, 0x04BE, 0x04C3, 0x04C5, 0x04C7, + 0x04C9, 0x04CB, 0x04CD, 0x04D0, 0x04D2, 0x04D4, 0x04D6, 0x04D8, + 0x04DA, 0x04DC, 0x04DE, 0x04E0, 0x04E2, 0x04E4, 0x04E6, 0x04E8, + 0x04EA, 0x04EC, 0x04EE, 0x04F0, 0x04F2, 0x04F4, 0x04F6, 0x04F8, + 0x04FA, 0x04FC, 0x04FE, 0x0500, 0x0502, 0x0504, 0x0506, 0x0508, + 0x050A, 0x050C, 0x050E, 0x0510, 0x0512, 0x0514, 0x0516, 0x0518, + 0x051A, 0x051C, 0x051E, 0x0520, 0x0522, 0x0524, 0x0526, 0x0528, + 0x052A, 0x052C, 0x052E, 0x10C7, 0x10CD, 0x1C89, 0x1E00, 0x1E02, + 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, + 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, + 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, + 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, + 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, + 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, + 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, + 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, + 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, + 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, + 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, + 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, + 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, + 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, + 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, + 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, + 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, + 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, + 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, + 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, + 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, + 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, + 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, + 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, + 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, + 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, + 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, + 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, + 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, + 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, + 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, + 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, + 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, + 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, + 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, + 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, + 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7CE, + 0xA7D0, 0xA7D2, 0xA7D4, 0xA7D6, 0xA7D8, 0xA7DA, 0xA7DC, 0xA7F5, } @(rodata) @@ -980,10 +1009,11 @@ lu_ranges := Range{ @(rodata) mc_singles16 := [?]u16{ - 0x0903, 0x093B, 0x09D7, 0x0A03, 0x0A83, 0x0AC9, 0x0B3E, 0x0B40, 0x0B57, 0x0BD7, - 0x0CBE, 0x0CF3, 0x0D57, 0x0F7F, 0x1031, 0x1038, 0x108F, 0x1715, 0x1734, 0x17B6, - 0x1A55, 0x1A57, 0x1A61, 0x1B04, 0x1B35, 0x1B3B, 0x1B82, 0x1BA1, 0x1BAA, 0x1BE7, - 0x1BEE, 0x1CE1, 0x1CF7, 0xA827, 0xA983, 0xAA4D, 0xAA7B, 0xAA7D, 0xAAEB, 0xAAF5, + 0x0903, 0x093B, 0x09D7, 0x0A03, 0x0A83, 0x0AC9, 0x0B3E, 0x0B40, + 0x0B57, 0x0BD7, 0x0CBE, 0x0CF3, 0x0D57, 0x0F7F, 0x1031, 0x1038, + 0x108F, 0x1715, 0x1734, 0x17B6, 0x1A55, 0x1A57, 0x1A61, 0x1B04, + 0x1B35, 0x1B3B, 0x1B82, 0x1BA1, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CE1, + 0x1CF7, 0xA827, 0xA983, 0xAA4D, 0xAA7B, 0xAA7D, 0xAAEB, 0xAAF5, 0xABEC, } @@ -1145,14 +1175,16 @@ me_ranges := Range{ @(rodata) mn_singles16 := [?]u16{ - 0x05BF, 0x05C7, 0x0670, 0x0711, 0x07FD, 0x093A, 0x093C, 0x094D, 0x0981, 0x09BC, - 0x09CD, 0x09FE, 0x0A3C, 0x0A51, 0x0A75, 0x0ABC, 0x0ACD, 0x0B01, 0x0B3C, 0x0B3F, - 0x0B4D, 0x0B82, 0x0BC0, 0x0BCD, 0x0C00, 0x0C04, 0x0C3C, 0x0C81, 0x0CBC, 0x0CBF, - 0x0CC6, 0x0D4D, 0x0D81, 0x0DCA, 0x0DD6, 0x0E31, 0x0EB1, 0x0F35, 0x0F37, 0x0F39, - 0x0FC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, - 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, - 0x1CF4, 0x20E1, 0x2D7F, 0xA66F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, - 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, + 0x05BF, 0x05C7, 0x0670, 0x0711, 0x07FD, 0x093A, 0x093C, 0x094D, + 0x0981, 0x09BC, 0x09CD, 0x09FE, 0x0A3C, 0x0A51, 0x0A75, 0x0ABC, + 0x0ACD, 0x0B01, 0x0B3C, 0x0B3F, 0x0B4D, 0x0B82, 0x0BC0, 0x0BCD, + 0x0C00, 0x0C04, 0x0C3C, 0x0C81, 0x0CBC, 0x0CBF, 0x0CC6, 0x0D4D, + 0x0D81, 0x0DCA, 0x0DD6, 0x0E31, 0x0EB1, 0x0F35, 0x0F37, 0x0F39, + 0x0FC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, + 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B34, 0x1B3C, + 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x20E1, 0x2D7F, 0xA66F, + 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, + 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, } @@ -1642,8 +1674,8 @@ pc_ranges := Range{ @(rodata) pd_singles16 := [?]u16{ - 0x002D, 0x058A, 0x05BE, 0x1400, 0x1806, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, - 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, + 0x002D, 0x058A, 0x05BE, 0x1400, 0x1806, 0x2E17, 0x2E1A, 0x2E40, + 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, } @(rodata) @@ -1666,14 +1698,16 @@ pd_ranges := Range{ @(rodata) pe_singles16 := [?]u16{ - 0x0029, 0x005D, 0x007D, 0x0F3B, 0x0F3D, 0x169C, 0x2046, 0x207E, 0x208E, 0x2309, - 0x230B, 0x232A, 0x2769, 0x276B, 0x276D, 0x276F, 0x2771, 0x2773, 0x2775, 0x27C6, - 0x27E7, 0x27E9, 0x27EB, 0x27ED, 0x27EF, 0x2984, 0x2986, 0x2988, 0x298A, 0x298C, - 0x298E, 0x2990, 0x2992, 0x2994, 0x2996, 0x2998, 0x29D9, 0x29DB, 0x29FD, 0x2E23, - 0x2E25, 0x2E27, 0x2E29, 0x2E56, 0x2E58, 0x2E5A, 0x2E5C, 0x3009, 0x300B, 0x300D, - 0x300F, 0x3011, 0x3015, 0x3017, 0x3019, 0x301B, 0xFD3E, 0xFE18, 0xFE36, 0xFE38, - 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, 0xFE5A, 0xFE5C, 0xFE5E, - 0xFF09, 0xFF3D, 0xFF5D, 0xFF60, 0xFF63, + 0x0029, 0x005D, 0x007D, 0x0F3B, 0x0F3D, 0x169C, 0x2046, 0x207E, + 0x208E, 0x2309, 0x230B, 0x232A, 0x2769, 0x276B, 0x276D, 0x276F, + 0x2771, 0x2773, 0x2775, 0x27C6, 0x27E7, 0x27E9, 0x27EB, 0x27ED, + 0x27EF, 0x2984, 0x2986, 0x2988, 0x298A, 0x298C, 0x298E, 0x2990, + 0x2992, 0x2994, 0x2996, 0x2998, 0x29D9, 0x29DB, 0x29FD, 0x2E23, + 0x2E25, 0x2E27, 0x2E29, 0x2E56, 0x2E58, 0x2E5A, 0x2E5C, 0x3009, + 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, 0x3017, 0x3019, 0x301B, + 0xFD3E, 0xFE18, 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, + 0xFE42, 0xFE44, 0xFE48, 0xFE5A, 0xFE5C, 0xFE5E, 0xFF09, 0xFF3D, + 0xFF5D, 0xFF60, 0xFF63, } @(rodata) @@ -1688,7 +1722,8 @@ pe_ranges := Range{ @(rodata) pf_singles16 := [?]u16{ - 0x00BB, 0x2019, 0x201D, 0x203A, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, 0x2E1D, 0x2E21, + 0x00BB, 0x2019, 0x201D, 0x203A, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, + 0x2E1D, 0x2E21, } pf_ranges := Range{ @@ -1697,7 +1732,8 @@ pf_ranges := Range{ @(rodata) pi_singles16 := [?]u16{ - 0x00AB, 0x2018, 0x201F, 0x2039, 0x2E02, 0x2E04, 0x2E09, 0x2E0C, 0x2E1C, 0x2E20, + 0x00AB, 0x2018, 0x201F, 0x2039, 0x2E02, 0x2E04, 0x2E09, 0x2E0C, + 0x2E1C, 0x2E20, } @(rodata) @@ -1712,10 +1748,11 @@ pi_ranges := Range{ @(rodata) po_singles16 := [?]u16{ - 0x002A, 0x002C, 0x005C, 0x00A1, 0x00A7, 0x00BF, 0x037E, 0x0387, 0x0589, 0x05C0, - 0x05C3, 0x05C6, 0x061B, 0x06D4, 0x085E, 0x0970, 0x09FD, 0x0A76, 0x0AF0, 0x0C77, - 0x0C84, 0x0DF4, 0x0E4F, 0x0F14, 0x0F85, 0x10FB, 0x166E, 0x1CD3, 0x2053, 0x2D70, - 0x2E0B, 0x2E1B, 0x2E41, 0x303D, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, + 0x002A, 0x002C, 0x005C, 0x00A1, 0x00A7, 0x00BF, 0x037E, 0x0387, + 0x0589, 0x05C0, 0x05C3, 0x05C6, 0x061B, 0x06D4, 0x085E, 0x0970, + 0x09FD, 0x0A76, 0x0AF0, 0x0C77, 0x0C84, 0x0DF4, 0x0E4F, 0x0F14, + 0x0F85, 0x10FB, 0x166E, 0x1CD3, 0x2053, 0x2D70, 0x2E0B, 0x2E1B, + 0x2E41, 0x303D, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE19, 0xFE30, 0xFE68, 0xFF0A, 0xFF0C, 0xFF3C, 0xFF61, } @@ -1867,14 +1904,16 @@ po_ranges := Range{ @(rodata) ps_singles16 := [?]u16{ - 0x0028, 0x005B, 0x007B, 0x0F3A, 0x0F3C, 0x169B, 0x201A, 0x201E, 0x2045, 0x207D, - 0x208D, 0x2308, 0x230A, 0x2329, 0x2768, 0x276A, 0x276C, 0x276E, 0x2770, 0x2772, - 0x2774, 0x27C5, 0x27E6, 0x27E8, 0x27EA, 0x27EC, 0x27EE, 0x2983, 0x2985, 0x2987, - 0x2989, 0x298B, 0x298D, 0x298F, 0x2991, 0x2993, 0x2995, 0x2997, 0x29D8, 0x29DA, - 0x29FC, 0x2E22, 0x2E24, 0x2E26, 0x2E28, 0x2E42, 0x2E55, 0x2E57, 0x2E59, 0x2E5B, - 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, 0x3018, 0x301A, 0x301D, - 0xFD3F, 0xFE17, 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, - 0xFE47, 0xFE59, 0xFE5B, 0xFE5D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62, + 0x0028, 0x005B, 0x007B, 0x0F3A, 0x0F3C, 0x169B, 0x201A, 0x201E, + 0x2045, 0x207D, 0x208D, 0x2308, 0x230A, 0x2329, 0x2768, 0x276A, + 0x276C, 0x276E, 0x2770, 0x2772, 0x2774, 0x27C5, 0x27E6, 0x27E8, + 0x27EA, 0x27EC, 0x27EE, 0x2983, 0x2985, 0x2987, 0x2989, 0x298B, + 0x298D, 0x298F, 0x2991, 0x2993, 0x2995, 0x2997, 0x29D8, 0x29DA, + 0x29FC, 0x2E22, 0x2E24, 0x2E26, 0x2E28, 0x2E42, 0x2E55, 0x2E57, + 0x2E59, 0x2E5B, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, + 0x3016, 0x3018, 0x301A, 0x301D, 0xFD3F, 0xFE17, 0xFE35, 0xFE37, + 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, 0xFE59, + 0xFE5B, 0xFE5D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62, } ps_ranges := Range{ @@ -1883,8 +1922,8 @@ ps_ranges := Range{ @(rodata) sc_singles16 := [?]u16{ - 0x0024, 0x058F, 0x060B, 0x09FB, 0x0AF1, 0x0BF9, 0x0E3F, 0x17DB, 0xA838, 0xFDFC, - 0xFE69, 0xFF04, + 0x0024, 0x058F, 0x060B, 0x09FB, 0x0AF1, 0x0BF9, 0x0E3F, 0x17DB, + 0xA838, 0xFDFC, 0xFE69, 0xFF04, } @(rodata) @@ -1916,8 +1955,8 @@ sc_ranges := Range{ @(rodata) sk_singles16 := [?]u16{ - 0x005E, 0x0060, 0x00A8, 0x00AF, 0x00B4, 0x00B8, 0x02ED, 0x0375, 0x0888, 0x1FBD, - 0xAB5B, 0xFF3E, 0xFF40, 0xFFE3, + 0x005E, 0x0060, 0x00A8, 0x00AF, 0x00B4, 0x00B8, 0x02ED, 0x0375, + 0x0888, 0x1FBD, 0xAB5B, 0xFF3E, 0xFF40, 0xFFE3, } @(rodata) @@ -1953,9 +1992,10 @@ sk_ranges := Range{ @(rodata) sm_singles16 := [?]u16{ - 0x002B, 0x007C, 0x007E, 0x00AC, 0x00B1, 0x00D7, 0x00F7, 0x03F6, 0x2044, 0x2052, - 0x2118, 0x214B, 0x21A0, 0x21A3, 0x21A6, 0x21AE, 0x21D2, 0x21D4, 0x237C, 0x25B7, - 0x25C1, 0x266F, 0xFB29, 0xFE62, 0xFF0B, 0xFF5C, 0xFF5E, 0xFFE2, + 0x002B, 0x007C, 0x007E, 0x00AC, 0x00B1, 0x00D7, 0x00F7, 0x03F6, + 0x2044, 0x2052, 0x2118, 0x214B, 0x21A0, 0x21A3, 0x21A6, 0x21AE, + 0x21D2, 0x21D4, 0x237C, 0x25B7, 0x25C1, 0x266F, 0xFB29, 0xFE62, + 0xFF0B, 0xFF5C, 0xFF5E, 0xFFE2, } @(rodata) @@ -2009,10 +2049,11 @@ sm_ranges := Range{ @(rodata) so_singles16 := [?]u16{ - 0x00A6, 0x00A9, 0x00AE, 0x00B0, 0x0482, 0x06DE, 0x06E9, 0x07F6, 0x09FA, 0x0B70, - 0x0BFA, 0x0C7F, 0x0D4F, 0x0D79, 0x0F13, 0x0F34, 0x0F36, 0x0F38, 0x166D, 0x1940, - 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, - 0x31EF, 0x3250, 0xA839, 0xFFE4, 0xFFE8, + 0x00A6, 0x00A9, 0x00AE, 0x00B0, 0x0482, 0x06DE, 0x06E9, 0x07F6, + 0x09FA, 0x0B70, 0x0BFA, 0x0C7F, 0x0D4F, 0x0D79, 0x0F13, 0x0F34, + 0x0F36, 0x0F38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, + 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x31EF, 0x3250, + 0xA839, 0xFFE4, 0xFFE8, } @(rodata) @@ -2233,7 +2274,8 @@ extra_digits_ranges := Range{ @(rodata) other_lowercase_singles16 := [?]u16{ - 0x00AA, 0x00BA, 0x0345, 0x037A, 0x10FC, 0x1D78, 0x2071, 0x207F, 0xA770, 0xAB69, + 0x00AA, 0x00BA, 0x0345, 0x037A, 0x10FC, 0x1D78, 0x2071, 0x207F, + 0xA770, 0xAB69, } @(rodata) diff --git a/core/unicode/tools/ucd/generate_unicode.odin b/core/unicode/tools/ucd/generate_unicode.odin index ffa8a3be3..9494674a1 100644 --- a/core/unicode/tools/ucd/generate_unicode.odin +++ b/core/unicode/tools/ucd/generate_unicode.odin @@ -3,129 +3,112 @@ package ucd import "core:fmt" import "core:os" import "core:strings" -import "base:runtime" import "core:mem" import "core:io" import "core:log" // Table 2-3. Types of Code Points // Table 4-4. General_Category Values page 229 - // Reference https://www.unicode.org/reports/tr44/ - /* -Formats a Dynamic_Range into a set of fixed length arrays and writes -corresponding to a io.Writer. The value of the parameter `name`will be used as a -prefix to the array names. If a dynamic array contained in the `range` is empty, -no corresponding fixed length array will be written. +Formats a `Dynamic_Range` into a set of fixed length arrays and writes them to an `io.Writer`. +The value of the parameter `name` will be used as a prefix to the array names. + +If a dynamic array contained in the `range` is empty, no corresponding fixed length array will be written. Inputs: -- writer: The io.Writer to be written to. +- writer: The `io.Writer` to be written to. - name: Prefix to add to any array that is written to `writer` -- range: The Dynamic_Range to format and write to writer. +- range: `The Dynamic_Range` to format and write to writer. */ -write_range_arrays :: proc(writer: io.Writer, name: string, range: Dynamic_Range) -> int { - n_written : int +write_range_arrays :: proc(writer: io.Writer, name: string, range: Dynamic_Range) { if len(range.single_16) > 0 { - n_written += fmt.wprintln(writer, "@(rodata)") - n_written += fmt.wprintf(writer, "%s_singles16 := [?]u16{{", name) - line_length := 100 - for v in range.single_16 { - str_buffer : [32]byte - str := fmt.bprintf(str_buffer[:], " 0x%4X,",v) - - if line_length + len(str) > 80 { - n_written += fmt.wprintf(writer, "\n") - line_length = fmt.wprintf(writer, "\t0x%4X,",v) - n_written += line_length + fmt.wprintln(writer, "@(rodata)") + fmt.wprintf(writer, "%s_singles16 := [?]u16{{", name) + for v, count in range.single_16 { + if count % 8 == 0 { + fmt.wprintf(writer, "\n\t0x%4X,", v) + continue } else { - temp, _ := io.write_string(writer, str) - line_length += temp - n_written += temp + fmt.wprintf(writer, " 0x%4X,", v) } } - n_written += fmt.wprintln(writer, "\n}\n") + fmt.wprintln(writer, "\n}\n") } if len(range.ranges_16) > 0 { - n_written += fmt.wprintln(writer, "@(rodata)") - n_written += fmt.wprintfln(writer, "%s_ranges16 := [?]u16{{", name) + fmt.wprintln(writer, "@(rodata)") + fmt.wprintfln(writer, "%s_ranges16 := [?]u16{{", name) for v in range.ranges_16 { - n_written += fmt.wprintfln(writer, "\t0x%4X, 0x%4X,", v.first, v.last) + fmt.wprintfln(writer, "\t0x%4X, 0x%4X,", v.first, v.last) } - n_written += fmt.wprintln(writer, "}\n") + fmt.wprintln(writer, "}\n") } if len(range.single_32) > 0 { - n_written += fmt.wprintln(writer, "@(rodata)") - n_written += fmt.wprintf(writer, "%s_singles32 := [?]i32{{", name) - line_length := 100 - for v in range.single_32 { - str_buffer : [32]byte - str := fmt.bprintf(str_buffer[:], " 0x%4X,",v) - - if line_length + len(str) > 80 { - n_written += fmt.wprint(writer, "\n") - line_length = fmt.wprintf(writer, "\t0x%4X,",v) - n_written += line_length + fmt.wprintln(writer, "@(rodata)") + fmt.wprintf(writer, "%s_singles32 := [?]i32{{", name) + for v, count in range.single_32 { + if count % 8 == 0 { + fmt.wprintf(writer, "\n\t0x%4X,", v) + continue } else { - temp, _ := io.write_string(writer, str) - line_length += temp - n_written += temp + fmt.wprintf(writer, " 0x%4X,", v) } } - n_written += fmt.wprintln(writer, "\n}\n") + fmt.wprintln(writer, "\n}\n") } if len(range.ranges_32) > 0 { - n_written += fmt.wprintln(writer, "@(rodata)") - n_written += fmt.wprintfln(writer, "%s_ranges32 := [?]i32{{", name) + fmt.wprintln(writer, "@(rodata)") + fmt.wprintfln(writer, "%s_ranges32 := [?]i32{{", name) for v in range.ranges_32 { - n_written += fmt.wprintfln(writer, "\t0x%4X, 0x%4X,", v.first, v.last) + fmt.wprintfln(writer, "\t0x%4X, 0x%4X,", v.first, v.last) } - n_written += fmt.wprintln(writer, "}\n") + fmt.wprintln(writer, "}\n") } - return n_written + return } -write_range :: proc(writer: io.Writer, name: union{string, General_Category}, range: Dynamic_Range) -> (n_written: int) { +write_range :: proc(writer: io.Writer, name: union{string, General_Category}, range: Dynamic_Range) { buffer: [128]byte str: string - switch n in name{ + switch n in name { case string: assert(len(n) <= len(buffer)) - runtime.mem_copy(&buffer[0], raw_data(n), len(n)) - str = transmute(string) buffer[0:len(n)] + copy(buffer[:], n) + str = string(buffer[:len(n)]) case General_Category: str = fmt.bprintf(buffer[:], "%s", n) } + // lowercase table names for &b in buffer[0:len(str)] { if b >= 'A' && b <= 'Z' { b += ('a' - 'A') } } - n_written = write_range_arrays(writer, str, range) + write_range_arrays(writer, str, range) - n_written += fmt.wprintfln(writer, "%s_ranges := Range{{", str) + fmt.wprintfln(writer, "%s_ranges := Range{{", str) if len(range.single_16) > 0 { - n_written += fmt.wprintfln(writer, "\tsingle_16 = %s_singles16[:],", str) + fmt.wprintfln(writer, "\tsingle_16 = %s_singles16[:],", str) } if len(range.ranges_16) > 0 { - n_written += fmt.wprintfln(writer, "\tranges_16 = %s_ranges16[:],", str) + fmt.wprintfln(writer, "\tranges_16 = %s_ranges16[:],", str) } if len(range.single_32) > 0 { - n_written += fmt.wprintfln(writer, "\tsingle_32 = %s_singles32[:],", str) + fmt.wprintfln(writer, "\tsingle_32 = %s_singles32[:],", str) } if len(range.ranges_32) > 0 { - n_written += fmt.wprintfln(writer, "\tranges_32 = %s_ranges32[:],", str) + fmt.wprintfln(writer, "\tranges_32 = %s_ranges32[:],", str) } - n_written += fmt.wprintln(writer, "}\n") + fmt.wprintln(writer, "}\n") return } @@ -283,13 +266,13 @@ main :: proc() { //.Zs, // Space_Separator, a space character (of various non-zero widths) } - write_loop : for gc, i in general_category_ranges { + write_loop: for range, category in general_category_ranges { for excluded in to_exclude { - if i == excluded { + if category == excluded { continue write_loop } } - write_range(writer, i, gc) + write_range(writer, category, range) } write_range(writer, "extra_digits", extra_digits) diff --git a/core/unicode/tools/ucd/ucd.odin b/core/unicode/tools/ucd/ucd.odin index 27eb1ebb7..ea6283343 100644 --- a/core/unicode/tools/ucd/ucd.odin +++ b/core/unicode/tools/ucd/ucd.odin @@ -33,18 +33,18 @@ load_unicode_data :: proc(filename: string, allocator := context.allocator) -> ( str := string(data) line_loop: for _line in strings.split_lines_iterator(&str) { + // Ignore any comments line, _, _ := strings.partition(_line, "#") - if len(line) == 0 { - continue - } + + // Skip empty lines + if len(line) == 0 { continue } is_range := false - cp: rune - name: string - gc: General_Category - - num_6 : string - num_7 : string + cp: rune + name: string + gc: General_Category + num_6: string + num_7: string nt := Numeric_Type.None field_num := 0 @@ -76,7 +76,7 @@ load_unicode_data :: proc(filename: string, allocator := context.allocator) -> ( case 3: // Canonical_Combining_Class case 4: // Bidi Class case 5: // Decomposition_Type and Decomposition_Mapping - // Numeric_Type and Numberic_Value + // Numeric_Type and Numeric_Value case 6: num_6 = field