From 98ee7bdccabe5c33b3ef968629b258d81fbee4ec Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Wed, 15 Jul 2020 22:10:55 +0200 Subject: [PATCH] termptydbl: be more precise on emoji as double-width + set all of "Misc_Pictographs" as double-width --- src/bin/termptydbl.c | 146 ++++++++++++++++++++++++++++--------- tools/unicode_dbl_width.py | 9 ++- 2 files changed, 119 insertions(+), 36 deletions(-) diff --git a/src/bin/termptydbl.c b/src/bin/termptydbl.c index 691c0621..12e2c17c 100644 --- a/src/bin/termptydbl.c +++ b/src/bin/termptydbl.c @@ -138,7 +138,6 @@ _termpty_is_ambigous_wide(Eina_Unicode g) case 0x2312: EINA_FALLTHROUGH; case 0x231A ... 0x231B: EINA_FALLTHROUGH; case 0x2328 ... 0x232A: EINA_FALLTHROUGH; - case 0x2388: EINA_FALLTHROUGH; case 0x23CF: EINA_FALLTHROUGH; case 0x23E9 ... 0x23F3: EINA_FALLTHROUGH; case 0x23F8 ... 0x23FA: EINA_FALLTHROUGH; @@ -159,10 +158,44 @@ _termpty_is_ambigous_wide(Eina_Unicode g) case 0x25E2 ... 0x25E5: EINA_FALLTHROUGH; case 0x25EF: EINA_FALLTHROUGH; case 0x25FB ... 0x25FE: EINA_FALLTHROUGH; - case 0x2600 ... 0x2612: EINA_FALLTHROUGH; - case 0x2614 ... 0x2685: EINA_FALLTHROUGH; - case 0x2690 ... 0x2705: EINA_FALLTHROUGH; - case 0x2708 ... 0x2712: EINA_FALLTHROUGH; + case 0x2600 ... 0x2606: EINA_FALLTHROUGH; + case 0x2609: EINA_FALLTHROUGH; + case 0x260E ... 0x260F: EINA_FALLTHROUGH; + case 0x2611: EINA_FALLTHROUGH; + case 0x2614 ... 0x2615: EINA_FALLTHROUGH; + case 0x2618: EINA_FALLTHROUGH; + case 0x261C ... 0x261E: EINA_FALLTHROUGH; + case 0x2620: EINA_FALLTHROUGH; + case 0x2622 ... 0x2623: EINA_FALLTHROUGH; + case 0x2626: EINA_FALLTHROUGH; + case 0x262A: EINA_FALLTHROUGH; + case 0x262E ... 0x262F: EINA_FALLTHROUGH; + case 0x2638 ... 0x263A: EINA_FALLTHROUGH; + case 0x2640: EINA_FALLTHROUGH; + case 0x2642: EINA_FALLTHROUGH; + case 0x2648 ... 0x2653: EINA_FALLTHROUGH; + case 0x265F ... 0x2661: EINA_FALLTHROUGH; + case 0x2663 ... 0x266A: EINA_FALLTHROUGH; + case 0x266C ... 0x266D: EINA_FALLTHROUGH; + case 0x266F: EINA_FALLTHROUGH; + case 0x267B: EINA_FALLTHROUGH; + case 0x267E ... 0x267F: EINA_FALLTHROUGH; + case 0x2692 ... 0x2697: EINA_FALLTHROUGH; + case 0x2699: EINA_FALLTHROUGH; + case 0x269B ... 0x269C: EINA_FALLTHROUGH; + case 0x269E ... 0x26A1: EINA_FALLTHROUGH; + case 0x26A7: EINA_FALLTHROUGH; + case 0x26AA ... 0x26AB: EINA_FALLTHROUGH; + case 0x26B0 ... 0x26B1: EINA_FALLTHROUGH; + case 0x26BD ... 0x26BF: EINA_FALLTHROUGH; + case 0x26C4 ... 0x26E1: EINA_FALLTHROUGH; + case 0x26E3: EINA_FALLTHROUGH; + case 0x26E8 ... 0x26FF: EINA_FALLTHROUGH; + case 0x2702: EINA_FALLTHROUGH; + case 0x2705: EINA_FALLTHROUGH; + case 0x2708 ... 0x270D: EINA_FALLTHROUGH; + case 0x270F: EINA_FALLTHROUGH; + case 0x2712: EINA_FALLTHROUGH; case 0x2714: EINA_FALLTHROUGH; case 0x2716: EINA_FALLTHROUGH; case 0x271D: EINA_FALLTHROUGH; @@ -176,7 +209,7 @@ _termpty_is_ambigous_wide(Eina_Unicode g) case 0x274E: EINA_FALLTHROUGH; case 0x2753 ... 0x2755: EINA_FALLTHROUGH; case 0x2757: EINA_FALLTHROUGH; - case 0x2763 ... 0x2767: EINA_FALLTHROUGH; + case 0x2763 ... 0x2764: EINA_FALLTHROUGH; case 0x2776 ... 0x277F: EINA_FALLTHROUGH; case 0x2795 ... 0x2797: EINA_FALLTHROUGH; case 0x27A1: EINA_FALLTHROUGH; @@ -199,18 +232,24 @@ _termpty_is_ambigous_wide(Eina_Unicode g) case 0xFFE0 ... 0xFFE6: EINA_FALLTHROUGH; case 0xFFFD: EINA_FALLTHROUGH; case 0x16FE0 ... 0x1B2FB: EINA_FALLTHROUGH; - case 0x1F000 ... 0x1F10A: EINA_FALLTHROUGH; - case 0x1F10D ... 0x1F12D: EINA_FALLTHROUGH; - case 0x1F12F ... 0x1F169: EINA_FALLTHROUGH; - case 0x1F16C ... 0x1F1AD: EINA_FALLTHROUGH; - case 0x1F200 ... 0x1F53D: EINA_FALLTHROUGH; - case 0x1F546 ... 0x1F64F: EINA_FALLTHROUGH; - case 0x1F680 ... 0x1F6FC: EINA_FALLTHROUGH; - case 0x1F7D5 ... 0x1F7EB: EINA_FALLTHROUGH; - case 0x1F8B0 ... 0x1F8B1: EINA_FALLTHROUGH; + case 0x1F004: EINA_FALLTHROUGH; + case 0x1F0CF: EINA_FALLTHROUGH; + case 0x1F100 ... 0x1F10A: EINA_FALLTHROUGH; + case 0x1F110 ... 0x1F12D: EINA_FALLTHROUGH; + case 0x1F130 ... 0x1F169: EINA_FALLTHROUGH; + case 0x1F170 ... 0x1F1AC: EINA_FALLTHROUGH; + case 0x1F200 ... 0x1F64F: EINA_FALLTHROUGH; + case 0x1F680 ... 0x1F6C5: EINA_FALLTHROUGH; + case 0x1F6CB ... 0x1F6D2: EINA_FALLTHROUGH; + case 0x1F6D5 ... 0x1F6E5: EINA_FALLTHROUGH; + case 0x1F6E9: EINA_FALLTHROUGH; + case 0x1F6EB ... 0x1F6F0: EINA_FALLTHROUGH; + case 0x1F6F3 ... 0x1F6FC: EINA_FALLTHROUGH; + case 0x1F7E0 ... 0x1F7EB: EINA_FALLTHROUGH; case 0x1F90C ... 0x1F93A: EINA_FALLTHROUGH; case 0x1F93C ... 0x1F945: EINA_FALLTHROUGH; - case 0x1F947 ... 0x1FAD6: EINA_FALLTHROUGH; + case 0x1F947 ... 0x1F9FF: EINA_FALLTHROUGH; + case 0x1FA70 ... 0x1FAD6: EINA_FALLTHROUGH; case 0x20000 ... 0x3134A: EINA_FALLTHROUGH; case 0xE0100 ... 0xE01EF: @@ -236,7 +275,6 @@ _termpty_is_wide(Eina_Unicode g) case 0x21A9 ... 0x21AA: EINA_FALLTHROUGH; case 0x231A ... 0x231B: EINA_FALLTHROUGH; case 0x2328 ... 0x232A: EINA_FALLTHROUGH; - case 0x2388: EINA_FALLTHROUGH; case 0x23CF: EINA_FALLTHROUGH; case 0x23E9 ... 0x23F3: EINA_FALLTHROUGH; case 0x23F8 ... 0x23FA: EINA_FALLTHROUGH; @@ -245,11 +283,49 @@ _termpty_is_wide(Eina_Unicode g) case 0x25B6: EINA_FALLTHROUGH; case 0x25C0: EINA_FALLTHROUGH; case 0x25FB ... 0x25FE: EINA_FALLTHROUGH; - case 0x2600 ... 0x2605: EINA_FALLTHROUGH; - case 0x2607 ... 0x2612: EINA_FALLTHROUGH; - case 0x2614 ... 0x2685: EINA_FALLTHROUGH; - case 0x2690 ... 0x2705: EINA_FALLTHROUGH; - case 0x2708 ... 0x2712: EINA_FALLTHROUGH; + case 0x2600 ... 0x2604: EINA_FALLTHROUGH; + case 0x260E: EINA_FALLTHROUGH; + case 0x2611: EINA_FALLTHROUGH; + case 0x2614 ... 0x2615: EINA_FALLTHROUGH; + case 0x2618: EINA_FALLTHROUGH; + case 0x261D: EINA_FALLTHROUGH; + case 0x2620: EINA_FALLTHROUGH; + case 0x2622 ... 0x2623: EINA_FALLTHROUGH; + case 0x2626: EINA_FALLTHROUGH; + case 0x262A: EINA_FALLTHROUGH; + case 0x262E ... 0x262F: EINA_FALLTHROUGH; + case 0x2638 ... 0x263A: EINA_FALLTHROUGH; + case 0x2640: EINA_FALLTHROUGH; + case 0x2642: EINA_FALLTHROUGH; + case 0x2648 ... 0x2653: EINA_FALLTHROUGH; + case 0x265F ... 0x2660: EINA_FALLTHROUGH; + case 0x2663: EINA_FALLTHROUGH; + case 0x2665 ... 0x2666: EINA_FALLTHROUGH; + case 0x2668: EINA_FALLTHROUGH; + case 0x267B: EINA_FALLTHROUGH; + case 0x267E ... 0x267F: EINA_FALLTHROUGH; + case 0x2692 ... 0x2697: EINA_FALLTHROUGH; + case 0x2699: EINA_FALLTHROUGH; + case 0x269B ... 0x269C: EINA_FALLTHROUGH; + case 0x26A0 ... 0x26A1: EINA_FALLTHROUGH; + case 0x26A7: EINA_FALLTHROUGH; + case 0x26AA ... 0x26AB: EINA_FALLTHROUGH; + case 0x26B0 ... 0x26B1: EINA_FALLTHROUGH; + case 0x26BD ... 0x26BE: EINA_FALLTHROUGH; + case 0x26C4 ... 0x26C5: EINA_FALLTHROUGH; + case 0x26C8: EINA_FALLTHROUGH; + case 0x26CE ... 0x26CF: EINA_FALLTHROUGH; + case 0x26D1: EINA_FALLTHROUGH; + case 0x26D3 ... 0x26D4: EINA_FALLTHROUGH; + case 0x26E9 ... 0x26EA: EINA_FALLTHROUGH; + case 0x26F0 ... 0x26F5: EINA_FALLTHROUGH; + case 0x26F7 ... 0x26FA: EINA_FALLTHROUGH; + case 0x26FD: EINA_FALLTHROUGH; + case 0x2702: EINA_FALLTHROUGH; + case 0x2705: EINA_FALLTHROUGH; + case 0x2708 ... 0x270D: EINA_FALLTHROUGH; + case 0x270F: EINA_FALLTHROUGH; + case 0x2712: EINA_FALLTHROUGH; case 0x2714: EINA_FALLTHROUGH; case 0x2716: EINA_FALLTHROUGH; case 0x271D: EINA_FALLTHROUGH; @@ -262,7 +338,7 @@ _termpty_is_wide(Eina_Unicode g) case 0x274E: EINA_FALLTHROUGH; case 0x2753 ... 0x2755: EINA_FALLTHROUGH; case 0x2757: EINA_FALLTHROUGH; - case 0x2763 ... 0x2767: EINA_FALLTHROUGH; + case 0x2763 ... 0x2764: EINA_FALLTHROUGH; case 0x2795 ... 0x2797: EINA_FALLTHROUGH; case 0x27A1: EINA_FALLTHROUGH; case 0x27B0: EINA_FALLTHROUGH; @@ -284,22 +360,24 @@ _termpty_is_wide(Eina_Unicode g) case 0xFF01 ... 0xFF60: EINA_FALLTHROUGH; case 0xFFE0 ... 0xFFE6: EINA_FALLTHROUGH; case 0x16FE0 ... 0x1B2FB: EINA_FALLTHROUGH; - case 0x1F000 ... 0x1F0F5: EINA_FALLTHROUGH; - case 0x1F10D ... 0x1F10F: EINA_FALLTHROUGH; - case 0x1F12F: EINA_FALLTHROUGH; - case 0x1F16C ... 0x1F171: EINA_FALLTHROUGH; + case 0x1F004: EINA_FALLTHROUGH; + case 0x1F0CF: EINA_FALLTHROUGH; + case 0x1F170 ... 0x1F171: EINA_FALLTHROUGH; case 0x1F17E ... 0x1F17F: EINA_FALLTHROUGH; case 0x1F18E: EINA_FALLTHROUGH; case 0x1F191 ... 0x1F19A: EINA_FALLTHROUGH; - case 0x1F1AD: EINA_FALLTHROUGH; - case 0x1F200 ... 0x1F53D: EINA_FALLTHROUGH; - case 0x1F546 ... 0x1F64F: EINA_FALLTHROUGH; - case 0x1F680 ... 0x1F6FC: EINA_FALLTHROUGH; - case 0x1F7D5 ... 0x1F7EB: EINA_FALLTHROUGH; - case 0x1F8B0 ... 0x1F8B1: EINA_FALLTHROUGH; + case 0x1F200 ... 0x1F64F: EINA_FALLTHROUGH; + case 0x1F680 ... 0x1F6C5: EINA_FALLTHROUGH; + case 0x1F6CB ... 0x1F6D2: EINA_FALLTHROUGH; + case 0x1F6D5 ... 0x1F6E5: EINA_FALLTHROUGH; + case 0x1F6E9: EINA_FALLTHROUGH; + case 0x1F6EB ... 0x1F6F0: EINA_FALLTHROUGH; + case 0x1F6F3 ... 0x1F6FC: EINA_FALLTHROUGH; + case 0x1F7E0 ... 0x1F7EB: EINA_FALLTHROUGH; case 0x1F90C ... 0x1F93A: EINA_FALLTHROUGH; case 0x1F93C ... 0x1F945: EINA_FALLTHROUGH; - case 0x1F947 ... 0x1FAD6: EINA_FALLTHROUGH; + case 0x1F947 ... 0x1F9FF: EINA_FALLTHROUGH; + case 0x1FA70 ... 0x1FAD6: EINA_FALLTHROUGH; case 0x20000 ... 0x3134A: return EINA_TRUE; diff --git a/tools/unicode_dbl_width.py b/tools/unicode_dbl_width.py index adbd936f..4ba35459 100755 --- a/tools/unicode_dbl_width.py +++ b/tools/unicode_dbl_width.py @@ -30,9 +30,14 @@ def get_ranges(xmlfile, emoji_as_wide): if not cp: continue if emoji_as_wide: - emoji = c.get('ExtPict') - if emoji == 'Y': + ext_pic = c.get('ExtPict') + emoji = c.get('Emoji') + if emoji == 'Y' and ext_pic == 'Y': ea = 'W' + else: + blk = c.get('blk') + if blk == 'Misc_Pictographs': + ea = 'W' cp = int(cp, 16) if ea != r[0]: