Files
kitty/kitty/emoji.h
Kovid Goyal fbf47f75d5 Fix soft hyphens not being preserved when round tripping text through the terminal
Also roundtrip all characters in the Cf category.

Characters with the DI (Default Ignorable) property are now
preserved but not rendered and treated as zero-width
as per the unicode standard.
See https://www.unicode.org/faq/unsup_char.html
2021-10-07 12:44:22 +05:30

796 lines
15 KiB
C
Generated

// unicode data, built from the unicode standard on: 2021-10-07
// see gen-wcwidth.py
#pragma once
#include "data-types.h"
START_ALLOW_CASE_RANGE
static inline bool
is_emoji(char_type code) {
switch(code) {
case 0x23:
return true;
case 0x2a:
return true;
case 0x30 ... 0x39:
return true;
case 0xa9:
return true;
case 0xae:
return true;
case 0x203c:
return true;
case 0x2049:
return true;
case 0x2122:
return true;
case 0x2139:
return true;
case 0x2194 ... 0x2199:
return true;
case 0x21a9 ... 0x21aa:
return true;
case 0x231a ... 0x231b:
return true;
case 0x2328:
return true;
case 0x23cf:
return true;
case 0x23e9 ... 0x23f3:
return true;
case 0x23f8 ... 0x23fa:
return true;
case 0x24c2:
return true;
case 0x25aa ... 0x25ab:
return true;
case 0x25b6:
return true;
case 0x25c0:
return true;
case 0x25fb ... 0x25fe:
return true;
case 0x2600 ... 0x2604:
return true;
case 0x260e:
return true;
case 0x2611:
return true;
case 0x2614 ... 0x2615:
return true;
case 0x2618:
return true;
case 0x261d:
return true;
case 0x2620:
return true;
case 0x2622 ... 0x2623:
return true;
case 0x2626:
return true;
case 0x262a:
return true;
case 0x262e ... 0x262f:
return true;
case 0x2638 ... 0x263a:
return true;
case 0x2640:
return true;
case 0x2642:
return true;
case 0x2648 ... 0x2653:
return true;
case 0x265f ... 0x2660:
return true;
case 0x2663:
return true;
case 0x2665 ... 0x2666:
return true;
case 0x2668:
return true;
case 0x267b:
return true;
case 0x267e ... 0x267f:
return true;
case 0x2692 ... 0x2697:
return true;
case 0x2699:
return true;
case 0x269b ... 0x269c:
return true;
case 0x26a0 ... 0x26a1:
return true;
case 0x26a7:
return true;
case 0x26aa ... 0x26ab:
return true;
case 0x26b0 ... 0x26b1:
return true;
case 0x26bd ... 0x26be:
return true;
case 0x26c4 ... 0x26c5:
return true;
case 0x26c8:
return true;
case 0x26ce ... 0x26cf:
return true;
case 0x26d1:
return true;
case 0x26d3 ... 0x26d4:
return true;
case 0x26e9 ... 0x26ea:
return true;
case 0x26f0 ... 0x26f5:
return true;
case 0x26f7 ... 0x26fa:
return true;
case 0x26fd:
return true;
case 0x2702:
return true;
case 0x2705:
return true;
case 0x2708 ... 0x270d:
return true;
case 0x270f:
return true;
case 0x2712:
return true;
case 0x2714:
return true;
case 0x2716:
return true;
case 0x271d:
return true;
case 0x2721:
return true;
case 0x2728:
return true;
case 0x2733 ... 0x2734:
return true;
case 0x2744:
return true;
case 0x2747:
return true;
case 0x274c:
return true;
case 0x274e:
return true;
case 0x2753 ... 0x2755:
return true;
case 0x2757:
return true;
case 0x2763 ... 0x2764:
return true;
case 0x2795 ... 0x2797:
return true;
case 0x27a1:
return true;
case 0x27b0:
return true;
case 0x27bf:
return true;
case 0x2934 ... 0x2935:
return true;
case 0x2b05 ... 0x2b07:
return true;
case 0x2b1b ... 0x2b1c:
return true;
case 0x2b50:
return true;
case 0x2b55:
return true;
case 0x3030:
return true;
case 0x303d:
return true;
case 0x3297:
return true;
case 0x3299:
return true;
case 0x1f004:
return true;
case 0x1f0cf:
return true;
case 0x1f170 ... 0x1f171:
return true;
case 0x1f17e ... 0x1f17f:
return true;
case 0x1f18e:
return true;
case 0x1f191 ... 0x1f19a:
return true;
case 0x1f1e6 ... 0x1f1ff:
return true;
case 0x1f201 ... 0x1f202:
return true;
case 0x1f21a:
return true;
case 0x1f22f:
return true;
case 0x1f232 ... 0x1f23a:
return true;
case 0x1f250 ... 0x1f251:
return true;
case 0x1f300 ... 0x1f321:
return true;
case 0x1f324 ... 0x1f393:
return true;
case 0x1f396 ... 0x1f397:
return true;
case 0x1f399 ... 0x1f39b:
return true;
case 0x1f39e ... 0x1f3f0:
return true;
case 0x1f3f3 ... 0x1f3f5:
return true;
case 0x1f3f7 ... 0x1f4fd:
return true;
case 0x1f4ff ... 0x1f53d:
return true;
case 0x1f549 ... 0x1f54e:
return true;
case 0x1f550 ... 0x1f567:
return true;
case 0x1f56f ... 0x1f570:
return true;
case 0x1f573 ... 0x1f57a:
return true;
case 0x1f587:
return true;
case 0x1f58a ... 0x1f58d:
return true;
case 0x1f590:
return true;
case 0x1f595 ... 0x1f596:
return true;
case 0x1f5a4 ... 0x1f5a5:
return true;
case 0x1f5a8:
return true;
case 0x1f5b1 ... 0x1f5b2:
return true;
case 0x1f5bc:
return true;
case 0x1f5c2 ... 0x1f5c4:
return true;
case 0x1f5d1 ... 0x1f5d3:
return true;
case 0x1f5dc ... 0x1f5de:
return true;
case 0x1f5e1:
return true;
case 0x1f5e3:
return true;
case 0x1f5e8:
return true;
case 0x1f5ef:
return true;
case 0x1f5f3:
return true;
case 0x1f5fa ... 0x1f64f:
return true;
case 0x1f680 ... 0x1f6c5:
return true;
case 0x1f6cb ... 0x1f6d2:
return true;
case 0x1f6d5 ... 0x1f6d7:
return true;
case 0x1f6e0 ... 0x1f6e5:
return true;
case 0x1f6e9:
return true;
case 0x1f6eb ... 0x1f6ec:
return true;
case 0x1f6f0:
return true;
case 0x1f6f3 ... 0x1f6fc:
return true;
case 0x1f7e0 ... 0x1f7eb:
return true;
case 0x1f90c ... 0x1f93a:
return true;
case 0x1f93c ... 0x1f945:
return true;
case 0x1f947 ... 0x1f978:
return true;
case 0x1f97a ... 0x1f9cb:
return true;
case 0x1f9cd ... 0x1f9ff:
return true;
case 0x1fa70 ... 0x1fa74:
return true;
case 0x1fa78 ... 0x1fa7a:
return true;
case 0x1fa80 ... 0x1fa86:
return true;
case 0x1fa90 ... 0x1faa8:
return true;
case 0x1fab0 ... 0x1fab6:
return true;
case 0x1fac0 ... 0x1fac2:
return true;
case 0x1fad0 ... 0x1fad6:
return true;
default: return false;
}
return false;
}
static inline bool
is_symbol(char_type code) {
switch(code) {
case 0x24:
return true;
case 0x2b:
return true;
case 0x3c ... 0x3e:
return true;
case 0x5e:
return true;
case 0x60:
return true;
case 0x7c:
return true;
case 0x7e:
return true;
case 0xa2 ... 0xa6:
return true;
case 0xa8 ... 0xa9:
return true;
case 0xac:
return true;
case 0xae ... 0xb1:
return true;
case 0xb4:
return true;
case 0xb8:
return true;
case 0xd7:
return true;
case 0xf7:
return true;
case 0x2c2 ... 0x2c5:
return true;
case 0x2d2 ... 0x2df:
return true;
case 0x2e5 ... 0x2eb:
return true;
case 0x2ed:
return true;
case 0x2ef ... 0x2ff:
return true;
case 0x375:
return true;
case 0x384 ... 0x385:
return true;
case 0x3f6:
return true;
case 0x482:
return true;
case 0x58d ... 0x58f:
return true;
case 0x606 ... 0x608:
return true;
case 0x60b:
return true;
case 0x60e ... 0x60f:
return true;
case 0x6de:
return true;
case 0x6e9:
return true;
case 0x6fd ... 0x6fe:
return true;
case 0x7f6:
return true;
case 0x7fe ... 0x7ff:
return true;
case 0x888:
return true;
case 0x9f2 ... 0x9f3:
return true;
case 0x9fa ... 0x9fb:
return true;
case 0xaf1:
return true;
case 0xb70:
return true;
case 0xbf3 ... 0xbfa:
return true;
case 0xc7f:
return true;
case 0xd4f:
return true;
case 0xd79:
return true;
case 0xe3f:
return true;
case 0xf01 ... 0xf03:
return true;
case 0xf13:
return true;
case 0xf15 ... 0xf17:
return true;
case 0xf1a ... 0xf1f:
return true;
case 0xf34:
return true;
case 0xf36:
return true;
case 0xf38:
return true;
case 0xfbe ... 0xfc5:
return true;
case 0xfc7 ... 0xfcc:
return true;
case 0xfce ... 0xfcf:
return true;
case 0xfd5 ... 0xfd8:
return true;
case 0x109e ... 0x109f:
return true;
case 0x1390 ... 0x1399:
return true;
case 0x166d:
return true;
case 0x17db:
return true;
case 0x1940:
return true;
case 0x19de ... 0x19ff:
return true;
case 0x1b61 ... 0x1b6a:
return true;
case 0x1b74 ... 0x1b7c:
return true;
case 0x1fbd:
return true;
case 0x1fbf ... 0x1fc1:
return true;
case 0x1fcd ... 0x1fcf:
return true;
case 0x1fdd ... 0x1fdf:
return true;
case 0x1fed ... 0x1fef:
return true;
case 0x1ffd ... 0x1ffe:
return true;
case 0x2044:
return true;
case 0x2052:
return true;
case 0x207a ... 0x207c:
return true;
case 0x208a ... 0x208c:
return true;
case 0x20a0 ... 0x20c0:
return true;
case 0x2100 ... 0x2101:
return true;
case 0x2103 ... 0x2106:
return true;
case 0x2108 ... 0x2109:
return true;
case 0x2114:
return true;
case 0x2116 ... 0x2118:
return true;
case 0x211e ... 0x2123:
return true;
case 0x2125:
return true;
case 0x2127:
return true;
case 0x2129:
return true;
case 0x212e:
return true;
case 0x213a ... 0x213b:
return true;
case 0x2140 ... 0x2144:
return true;
case 0x214a ... 0x214d:
return true;
case 0x214f:
return true;
case 0x218a ... 0x218b:
return true;
case 0x2190 ... 0x2307:
return true;
case 0x230c ... 0x2328:
return true;
case 0x232b ... 0x2426:
return true;
case 0x2440 ... 0x244a:
return true;
case 0x249c ... 0x24e9:
return true;
case 0x2500 ... 0x2767:
return true;
case 0x2794 ... 0x27c4:
return true;
case 0x27c7 ... 0x27e5:
return true;
case 0x27f0 ... 0x2982:
return true;
case 0x2999 ... 0x29d7:
return true;
case 0x29dc ... 0x29fb:
return true;
case 0x29fe ... 0x2b73:
return true;
case 0x2b76 ... 0x2b95:
return true;
case 0x2b97 ... 0x2bff:
return true;
case 0x2ce5 ... 0x2cea:
return true;
case 0x2e50 ... 0x2e51:
return true;
case 0x2e80 ... 0x2e99:
return true;
case 0x2e9b ... 0x2ef3:
return true;
case 0x2f00 ... 0x2fd5:
return true;
case 0x2ff0 ... 0x2ffb:
return true;
case 0x3004:
return true;
case 0x3012 ... 0x3013:
return true;
case 0x3020:
return true;
case 0x3036 ... 0x3037:
return true;
case 0x303e ... 0x303f:
return true;
case 0x309b ... 0x309c:
return true;
case 0x3190 ... 0x3191:
return true;
case 0x3196 ... 0x319f:
return true;
case 0x31c0 ... 0x31e3:
return true;
case 0x3200 ... 0x321e:
return true;
case 0x322a ... 0x3247:
return true;
case 0x3250:
return true;
case 0x3260 ... 0x327f:
return true;
case 0x328a ... 0x32b0:
return true;
case 0x32c0 ... 0x33ff:
return true;
case 0x4dc0 ... 0x4dff:
return true;
case 0xa490 ... 0xa4c6:
return true;
case 0xa700 ... 0xa716:
return true;
case 0xa720 ... 0xa721:
return true;
case 0xa789 ... 0xa78a:
return true;
case 0xa828 ... 0xa82b:
return true;
case 0xa836 ... 0xa839:
return true;
case 0xaa77 ... 0xaa79:
return true;
case 0xab5b:
return true;
case 0xab6a ... 0xab6b:
return true;
case 0xfb29:
return true;
case 0xfbb2 ... 0xfbc2:
return true;
case 0xfd40 ... 0xfd4f:
return true;
case 0xfdcf:
return true;
case 0xfdfc ... 0xfdff:
return true;
case 0xfe62:
return true;
case 0xfe64 ... 0xfe66:
return true;
case 0xfe69:
return true;
case 0xff04:
return true;
case 0xff0b:
return true;
case 0xff1c ... 0xff1e:
return true;
case 0xff3e:
return true;
case 0xff40:
return true;
case 0xff5c:
return true;
case 0xff5e:
return true;
case 0xffe0 ... 0xffe6:
return true;
case 0xffe8 ... 0xffee:
return true;
case 0xfffc ... 0xfffd:
return true;
case 0x10137 ... 0x1013f:
return true;
case 0x10179 ... 0x10189:
return true;
case 0x1018c ... 0x1018e:
return true;
case 0x10190 ... 0x1019c:
return true;
case 0x101a0:
return true;
case 0x101d0 ... 0x101fc:
return true;
case 0x10877 ... 0x10878:
return true;
case 0x10ac8:
return true;
case 0x1173f:
return true;
case 0x11fd5 ... 0x11ff1:
return true;
case 0x16b3c ... 0x16b3f:
return true;
case 0x16b45:
return true;
case 0x1bc9c:
return true;
case 0x1cf50 ... 0x1cfc3:
return true;
case 0x1d000 ... 0x1d0f5:
return true;
case 0x1d100 ... 0x1d126:
return true;
case 0x1d129 ... 0x1d164:
return true;
case 0x1d16a ... 0x1d16c:
return true;
case 0x1d183 ... 0x1d184:
return true;
case 0x1d18c ... 0x1d1a9:
return true;
case 0x1d1ae ... 0x1d1ea:
return true;
case 0x1d200 ... 0x1d241:
return true;
case 0x1d245:
return true;
case 0x1d300 ... 0x1d356:
return true;
case 0x1d6c1:
return true;
case 0x1d6db:
return true;
case 0x1d6fb:
return true;
case 0x1d715:
return true;
case 0x1d735:
return true;
case 0x1d74f:
return true;
case 0x1d76f:
return true;
case 0x1d789:
return true;
case 0x1d7a9:
return true;
case 0x1d7c3:
return true;
case 0x1d800 ... 0x1d9ff:
return true;
case 0x1da37 ... 0x1da3a:
return true;
case 0x1da6d ... 0x1da74:
return true;
case 0x1da76 ... 0x1da83:
return true;
case 0x1da85 ... 0x1da86:
return true;
case 0x1e14f:
return true;
case 0x1e2ff:
return true;
case 0x1ecac:
return true;
case 0x1ecb0:
return true;
case 0x1ed2e:
return true;
case 0x1eef0 ... 0x1eef1:
return true;
case 0x1f000 ... 0x1f02b:
return true;
case 0x1f030 ... 0x1f093:
return true;
case 0x1f0a0 ... 0x1f0ae:
return true;
case 0x1f0b1 ... 0x1f0bf:
return true;
case 0x1f0c1 ... 0x1f0cf:
return true;
case 0x1f0d1 ... 0x1f0f5:
return true;
case 0x1f10d ... 0x1f1ad:
return true;
case 0x1f1e6 ... 0x1f202:
return true;
case 0x1f210 ... 0x1f23b:
return true;
case 0x1f240 ... 0x1f248:
return true;
case 0x1f250 ... 0x1f251:
return true;
case 0x1f260 ... 0x1f265:
return true;
case 0x1f300 ... 0x1f6d7:
return true;
case 0x1f6dd ... 0x1f6ec:
return true;
case 0x1f6f0 ... 0x1f6fc:
return true;
case 0x1f700 ... 0x1f773:
return true;
case 0x1f780 ... 0x1f7d8:
return true;
case 0x1f7e0 ... 0x1f7eb:
return true;
case 0x1f7f0:
return true;
case 0x1f800 ... 0x1f80b:
return true;
case 0x1f810 ... 0x1f847:
return true;
case 0x1f850 ... 0x1f859:
return true;
case 0x1f860 ... 0x1f887:
return true;
case 0x1f890 ... 0x1f8ad:
return true;
case 0x1f8b0 ... 0x1f8b1:
return true;
case 0x1f900 ... 0x1fa53:
return true;
case 0x1fa60 ... 0x1fa6d:
return true;
case 0x1fa70 ... 0x1fa74:
return true;
case 0x1fa78 ... 0x1fa7c:
return true;
case 0x1fa80 ... 0x1fa86:
return true;
case 0x1fa90 ... 0x1faac:
return true;
case 0x1fab0 ... 0x1faba:
return true;
case 0x1fac0 ... 0x1fac5:
return true;
case 0x1fad0 ... 0x1fad9:
return true;
case 0x1fae0 ... 0x1fae7:
return true;
case 0x1faf0 ... 0x1faf6:
return true;
case 0x1fb00 ... 0x1fb92:
return true;
case 0x1fb94 ... 0x1fbca:
return true;
default: return false;
}
return false;
}
END_ALLOW_CASE_RANGE