termptydbl: be more precise on emoji as double-width

+ set all of "Misc_Pictographs" as double-width
This commit is contained in:
Boris Faure 2020-07-15 22:10:55 +02:00
parent a56a76afc7
commit 98ee7bdcca
Signed by: borisfaure
GPG Key ID: 35C0410516166BE8
2 changed files with 119 additions and 36 deletions

View File

@ -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;

View File

@ -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]: