Update wcswidth() to match new country flag rendering

This commit is contained in:
Kovid Goyal 2020-04-06 22:56:34 +05:30
parent 24197dc422
commit 6357f7b811
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 0 deletions

View File

@ -1882,6 +1882,8 @@ screen_wcswidth(PyObject UNUSED *self, PyObject *str) {
ans -= 1;
prev_width = 1;
} else prev_width = 0;
} else if (is_flag_pair(prev_ch, ch)) {
prev_width = 2;
} else {
int w = wcwidth_std(ch);
switch(w) {

View File

@ -359,6 +359,9 @@ class TestDataTypes(BaseTest):
self.ae(wcswidth('\033a\033[2mb'), 2)
self.ae(wcswidth('\u25b6\ufe0f'), 2)
self.ae(wcswidth('\U0001f610\ufe0e'), 1)
self.ae(wcswidth('\U0001f1e6a'), 3)
self.ae(wcswidth('\U0001F1E6a\U0001F1E8a'), 6)
self.ae(wcswidth('\U0001F1E6\U0001F1E8a'), 3)
# Regional indicator symbols (unicode flags) are defined as having
# Emoji_Presentation so must have width 2
self.ae(tuple(map(w, '\U0001f1ee\U0001f1f3')), (2, 2))