From bfa81d710bbbac6b82228e2d9f30a1856598a443 Mon Sep 17 00:00:00 2001 From: John Naylor Date: Fri, 20 Aug 2021 12:35:32 -0400 Subject: [PATCH v2 4/4] Extend collection of Unicode combining characters to beyond the BMP The former limit was perhaps a carryover from an older hand-coded table. --- .../unicode/generate-unicode_width_table.pl | 2 - src/include/common/unicode_width_table.h | 102 ++++++++++++++++++ 2 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/common/unicode/generate-unicode_width_table.pl b/src/common/unicode/generate-unicode_width_table.pl index 1f8ddc6331..5a361d82d4 100644 --- a/src/common/unicode/generate-unicode_width_table.pl +++ b/src/common/unicode/generate-unicode_width_table.pl @@ -30,8 +30,6 @@ foreach my $line (<$UD>) my @fields = split ';', $line; $codepoint = hex $fields[0]; - next if $codepoint > 0xFFFF; - if ($fields[2] eq 'Me' || $fields[2] eq 'Mn') { # combining character, save for start of range diff --git a/src/include/common/unicode_width_table.h b/src/include/common/unicode_width_table.h index 5b7b6e15e2..b8908d90b0 100644 --- a/src/include/common/unicode_width_table.h +++ b/src/include/common/unicode_width_table.h @@ -252,7 +252,93 @@ static const struct mbinterval wcwidth[] = { {0xFE68, 0xFE6B, 2}, {0xFF01, 0xFF60, 2}, {0xFFE0, 0xFFE6, 2}, + {0x101FD, 0x101FD, 0}, + {0x102E0, 0x102E0, 0}, + {0x10376, 0x1037A, 0}, + {0x10A01, 0x10A0F, 0}, + {0x10A38, 0x10A3F, 0}, + {0x10AE5, 0x10AE6, 0}, + {0x10D24, 0x10D27, 0}, + {0x10EAB, 0x10EAC, 0}, + {0x10F46, 0x10F50, 0}, + {0x11001, 0x11001, 0}, + {0x11038, 0x11046, 0}, + {0x1107F, 0x11081, 0}, + {0x110B3, 0x110B6, 0}, + {0x110B9, 0x110BA, 0}, + {0x11100, 0x11102, 0}, + {0x11127, 0x1112B, 0}, + {0x1112D, 0x11134, 0}, + {0x11173, 0x11173, 0}, + {0x11180, 0x11181, 0}, + {0x111B6, 0x111BE, 0}, + {0x111C9, 0x111CC, 0}, + {0x111CF, 0x111CF, 0}, + {0x1122F, 0x11231, 0}, + {0x11234, 0x11234, 0}, + {0x11236, 0x11237, 0}, + {0x1123E, 0x1123E, 0}, + {0x112DF, 0x112DF, 0}, + {0x112E3, 0x112EA, 0}, + {0x11300, 0x11301, 0}, + {0x1133B, 0x1133C, 0}, + {0x11340, 0x11340, 0}, + {0x11366, 0x11374, 0}, + {0x11438, 0x1143F, 0}, + {0x11442, 0x11444, 0}, + {0x11446, 0x11446, 0}, + {0x1145E, 0x1145E, 0}, + {0x114B3, 0x114B8, 0}, + {0x114BA, 0x114BA, 0}, + {0x114BF, 0x114C0, 0}, + {0x114C2, 0x114C3, 0}, + {0x115B2, 0x115B5, 0}, + {0x115BC, 0x115BD, 0}, + {0x115BF, 0x115C0, 0}, + {0x115DC, 0x115DD, 0}, + {0x11633, 0x1163A, 0}, + {0x1163D, 0x1163D, 0}, + {0x1163F, 0x11640, 0}, + {0x116AB, 0x116AB, 0}, + {0x116AD, 0x116AD, 0}, + {0x116B0, 0x116B5, 0}, + {0x116B7, 0x116B7, 0}, + {0x1171D, 0x1171F, 0}, + {0x11722, 0x11725, 0}, + {0x11727, 0x1172B, 0}, + {0x1182F, 0x11837, 0}, + {0x11839, 0x1183A, 0}, + {0x1193B, 0x1193C, 0}, + {0x1193E, 0x1193E, 0}, + {0x11943, 0x11943, 0}, + {0x119D4, 0x119DB, 0}, + {0x119E0, 0x119E0, 0}, + {0x11A01, 0x11A0A, 0}, + {0x11A33, 0x11A38, 0}, + {0x11A3B, 0x11A3E, 0}, + {0x11A47, 0x11A47, 0}, + {0x11A51, 0x11A56, 0}, + {0x11A59, 0x11A5B, 0}, + {0x11A8A, 0x11A96, 0}, + {0x11A98, 0x11A99, 0}, + {0x11C30, 0x11C3D, 0}, + {0x11C3F, 0x11C3F, 0}, + {0x11C92, 0x11CA7, 0}, + {0x11CAA, 0x11CB0, 0}, + {0x11CB2, 0x11CB3, 0}, + {0x11CB5, 0x11CB6, 0}, + {0x11D31, 0x11D45, 0}, + {0x11D47, 0x11D47, 0}, + {0x11D90, 0x11D91, 0}, + {0x11D95, 0x11D95, 0}, + {0x11D97, 0x11D97, 0}, + {0x11EF3, 0x11EF4, 0}, + {0x16AF0, 0x16AF4, 0}, + {0x16B30, 0x16B36, 0}, + {0x16F4F, 0x16F4F, 0}, + {0x16F8F, 0x16F92, 0}, {0x16FE0, 0x16FE4, 2}, + {0x16FE4, 0x16FE4, 0}, {0x16FF0, 0x16FF1, 2}, {0x17000, 0x187F7, 2}, {0x18800, 0x18CD5, 2}, @@ -261,6 +347,21 @@ static const struct mbinterval wcwidth[] = { {0x1B150, 0x1B152, 2}, {0x1B164, 0x1B167, 2}, {0x1B170, 0x1B2FB, 2}, + {0x1BC9D, 0x1BC9E, 0}, + {0x1D167, 0x1D169, 0}, + {0x1D17B, 0x1D182, 0}, + {0x1D185, 0x1D18B, 0}, + {0x1D1AA, 0x1D1AD, 0}, + {0x1D242, 0x1D244, 0}, + {0x1DA00, 0x1DA36, 0}, + {0x1DA3B, 0x1DA6C, 0}, + {0x1DA75, 0x1DA75, 0}, + {0x1DA84, 0x1DA84, 0}, + {0x1DA9B, 0x1E02A, 0}, + {0x1E130, 0x1E136, 0}, + {0x1E2EC, 0x1E2EF, 0}, + {0x1E8D0, 0x1E8D6, 0}, + {0x1E944, 0x1E94A, 0}, {0x1F004, 0x1F004, 2}, {0x1F0CF, 0x1F0CF, 2}, {0x1F18E, 0x1F18E, 2}, @@ -309,4 +410,5 @@ static const struct mbinterval wcwidth[] = { {0x1FAD0, 0x1FAD6, 2}, {0x20000, 0x2FFFD, 2}, {0x30000, 0x3FFFD, 2}, + {0xE0100, 0xE01EF, 0}, }; -- 2.31.1