parent
590a4d70ee
commit
bf4e8c490c
@ -14,6 +14,8 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
|
||||
|
||||
- Fix :option:`launch --stdin-add-formatting` not working (:iss:`2512`)
|
||||
|
||||
- Update to Unicode 13.0 (:iss:`2513`)
|
||||
|
||||
|
||||
0.17.2 [2020-03-29]
|
||||
--------------------
|
||||
|
||||
@ -103,36 +103,86 @@ def parse_ucd() -> None:
|
||||
word_search_map['lamda'] |= word_search_map['lambda']
|
||||
|
||||
|
||||
def split_two(line: str) -> Tuple[Set[int], str]:
|
||||
spec, rest = line.split(';', 1)
|
||||
spec, rest = spec.strip(), rest.strip().split(' ', 1)[0].strip()
|
||||
def parse_range_spec(spec: str) -> Set[int]:
|
||||
spec = spec.strip()
|
||||
if '..' in spec:
|
||||
chars_ = tuple(map(lambda x: int(x, 16), filter(None, spec.split('.'))))
|
||||
chars = set(range(chars_[0], chars_[1] + 1))
|
||||
else:
|
||||
chars = {int(spec, 16)}
|
||||
return chars, rest
|
||||
return chars
|
||||
|
||||
|
||||
def split_two(line: str) -> Tuple[Set[int], str]:
|
||||
spec, rest = line.split(';', 1)
|
||||
spec, rest = spec.strip(), rest.strip().split(' ', 1)[0].strip()
|
||||
return parse_range_spec(spec), rest
|
||||
|
||||
|
||||
all_emoji: Set[int] = set()
|
||||
emoji_categories: Dict[str, Set[int]] = {}
|
||||
emoji_presentation_bases: Set[int] = set()
|
||||
narrow_emoji: Set[int] = set()
|
||||
wide_emoji: Set[int] = set()
|
||||
|
||||
|
||||
def parse_basic_emoji(spec: str) -> None:
|
||||
parts = list(filter(None, spec.split()))
|
||||
has_emoji_presentation = len(parts) < 2
|
||||
chars = parse_range_spec(parts[0])
|
||||
all_emoji.update(chars)
|
||||
emoji_presentation_bases.update(chars)
|
||||
(wide_emoji if has_emoji_presentation else narrow_emoji).update(chars)
|
||||
|
||||
|
||||
def parse_keycap_sequence(spec: str) -> None:
|
||||
base, fe0f, cc = list(filter(None, spec.split()))
|
||||
chars = parse_range_spec(base)
|
||||
all_emoji.update(chars)
|
||||
emoji_presentation_bases.update(chars)
|
||||
narrow_emoji.update(chars)
|
||||
|
||||
|
||||
def parse_flag_emoji_sequence(spec: str) -> None:
|
||||
a, b = list(filter(None, spec.split()))
|
||||
left, right = int(a, 16), int(b, 16)
|
||||
chars = {left, right}
|
||||
all_emoji.update(chars)
|
||||
wide_emoji.update(chars)
|
||||
emoji_presentation_bases.update(chars)
|
||||
|
||||
|
||||
def parse_emoji_tag_sequence(spec: str) -> None:
|
||||
a = int(spec.split()[0], 16)
|
||||
all_emoji.add(a)
|
||||
wide_emoji.add(a)
|
||||
emoji_presentation_bases.add(a)
|
||||
|
||||
|
||||
def parse_emoji_modifier_sequence(spec: str) -> None:
|
||||
a, b = list(filter(None, spec.split()))
|
||||
char, mod = int(a, 16), int(b, 16)
|
||||
mod
|
||||
all_emoji.add(char)
|
||||
wide_emoji.add(char)
|
||||
emoji_presentation_bases.add(char)
|
||||
|
||||
|
||||
def parse_emoji() -> None:
|
||||
for line in get_data('emoji-data.txt', 'emoji'):
|
||||
chars, rest = split_two(line)
|
||||
s = emoji_categories.setdefault(rest, set())
|
||||
s.update(chars)
|
||||
all_emoji.update(chars)
|
||||
for line in get_data('emoji-variation-sequences.txt', 'emoji'):
|
||||
parts = line.split()
|
||||
base, var = parts[0], parts[1]
|
||||
if base.startswith('#'):
|
||||
for line in get_data('emoji-sequences.txt', 'emoji'):
|
||||
parts = [x.strip() for x in line.split(';')]
|
||||
if len(parts) < 2:
|
||||
continue
|
||||
if var.upper() == 'FE0F':
|
||||
ibase = int(base, 16)
|
||||
emoji_presentation_bases.add(ibase)
|
||||
data, etype = parts[:2]
|
||||
if etype == 'Basic_Emoji':
|
||||
parse_basic_emoji(data)
|
||||
elif etype == 'Emoji_Keycap_Sequence':
|
||||
parse_keycap_sequence(data)
|
||||
elif etype == 'RGI_Emoji_Flag_Sequence':
|
||||
parse_flag_emoji_sequence(data)
|
||||
elif etype == 'RGI_Emoji_Tag_Sequence':
|
||||
parse_emoji_tag_sequence(data)
|
||||
elif etype == 'RGI_Emoji_Modifier_Sequence':
|
||||
parse_emoji_modifier_sequence(data)
|
||||
|
||||
|
||||
doublewidth: Set[int] = set()
|
||||
@ -204,15 +254,6 @@ def gen_emoji() -> None:
|
||||
p('\t}')
|
||||
p('\treturn false;\n}')
|
||||
|
||||
p('static inline bool\nis_emoji_modifier(char_type code) {')
|
||||
p('\tswitch(code) {')
|
||||
for spec in get_ranges(list(emoji_categories['Emoji_Modifier'])):
|
||||
write_case(spec, p)
|
||||
p('\t\t\treturn true;')
|
||||
p('\t\tdefault: return false;')
|
||||
p('\t}')
|
||||
p('\treturn false;\n}')
|
||||
|
||||
p('static inline bool\nis_symbol(char_type code) {')
|
||||
p('\tswitch(code) {')
|
||||
for spec in get_ranges(list(all_symbols)):
|
||||
@ -444,10 +485,10 @@ def gen_wcwidth() -> None:
|
||||
add(p, 'Marks', marks | {0}, 0)
|
||||
add(p, 'Non-printing characters', non_printing, -1)
|
||||
add(p, 'Private use', class_maps['Co'], -3)
|
||||
add(p, 'Text Presentation', emoji_categories['Emoji'] - emoji_categories['Emoji_Presentation'], 1)
|
||||
add(p, 'Text Presentation', narrow_emoji, 1)
|
||||
add(p, 'East Asian ambiguous width', ambiguous, -2)
|
||||
add(p, 'East Asian double width', doublewidth, 2)
|
||||
add(p, 'Emoji Presentation', emoji_categories['Emoji_Presentation'], 2)
|
||||
add(p, 'Emoji Presentation', wide_emoji, 2)
|
||||
|
||||
add(p, 'Not assigned in the unicode character database', not_assigned, -4)
|
||||
|
||||
|
||||
56991
kittens/unicode_input/names.h
generated
56991
kittens/unicode_input/names.h
generated
File diff suppressed because one or more lines are too long
259
kitty/emoji.h
generated
259
kitty/emoji.h
generated
@ -1,4 +1,4 @@
|
||||
// unicode data, built from the unicode standard on: 2019-10-01
|
||||
// unicode data, built from the unicode standard on: 2020-04-06
|
||||
// see gen-wcwidth.py
|
||||
#pragma once
|
||||
#include "data-types.h"
|
||||
@ -18,14 +18,10 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0xae:
|
||||
return true;
|
||||
case 0x200d:
|
||||
return true;
|
||||
case 0x203c:
|
||||
return true;
|
||||
case 0x2049:
|
||||
return true;
|
||||
case 0x20e3:
|
||||
return true;
|
||||
case 0x2122:
|
||||
return true;
|
||||
case 0x2139:
|
||||
@ -38,8 +34,6 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x2328:
|
||||
return true;
|
||||
case 0x2388:
|
||||
return true;
|
||||
case 0x23cf:
|
||||
return true;
|
||||
case 0x23e9 ... 0x23f3:
|
||||
@ -56,15 +50,91 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x25fb ... 0x25fe:
|
||||
return true;
|
||||
case 0x2600 ... 0x2605:
|
||||
case 0x2600 ... 0x2604:
|
||||
return true;
|
||||
case 0x2607 ... 0x2612:
|
||||
case 0x260e:
|
||||
return true;
|
||||
case 0x2614 ... 0x2685:
|
||||
case 0x2611:
|
||||
return true;
|
||||
case 0x2690 ... 0x2705:
|
||||
case 0x2614 ... 0x2615:
|
||||
return true;
|
||||
case 0x2708 ... 0x2712:
|
||||
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;
|
||||
@ -90,7 +160,7 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x2757:
|
||||
return true;
|
||||
case 0x2763 ... 0x2767:
|
||||
case 0x2763 ... 0x2764:
|
||||
return true;
|
||||
case 0x2795 ... 0x2797:
|
||||
return true;
|
||||
@ -118,15 +188,11 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x3299:
|
||||
return true;
|
||||
case 0xfe0f:
|
||||
case 0x1f004:
|
||||
return true;
|
||||
case 0x1f000 ... 0x1f0ff:
|
||||
case 0x1f0cf:
|
||||
return true;
|
||||
case 0x1f10d ... 0x1f10f:
|
||||
return true;
|
||||
case 0x1f12f:
|
||||
return true;
|
||||
case 0x1f16c ... 0x1f171:
|
||||
case 0x1f170 ... 0x1f171:
|
||||
return true;
|
||||
case 0x1f17e ... 0x1f17f:
|
||||
return true;
|
||||
@ -134,9 +200,9 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x1f191 ... 0x1f19a:
|
||||
return true;
|
||||
case 0x1f1ad ... 0x1f1ff:
|
||||
case 0x1f1e6 ... 0x1f1ff:
|
||||
return true;
|
||||
case 0x1f201 ... 0x1f20f:
|
||||
case 0x1f201 ... 0x1f202:
|
||||
return true;
|
||||
case 0x1f21a:
|
||||
return true;
|
||||
@ -144,44 +210,107 @@ is_emoji(char_type code) {
|
||||
return true;
|
||||
case 0x1f232 ... 0x1f23a:
|
||||
return true;
|
||||
case 0x1f23c ... 0x1f23f:
|
||||
case 0x1f250 ... 0x1f251:
|
||||
return true;
|
||||
case 0x1f249 ... 0x1f53d:
|
||||
case 0x1f300 ... 0x1f321:
|
||||
return true;
|
||||
case 0x1f546 ... 0x1f64f:
|
||||
case 0x1f324 ... 0x1f393:
|
||||
return true;
|
||||
case 0x1f680 ... 0x1f6ff:
|
||||
case 0x1f396 ... 0x1f397:
|
||||
return true;
|
||||
case 0x1f774 ... 0x1f77f:
|
||||
case 0x1f399 ... 0x1f39b:
|
||||
return true;
|
||||
case 0x1f7d5 ... 0x1f7ff:
|
||||
case 0x1f39e ... 0x1f3f0:
|
||||
return true;
|
||||
case 0x1f80c ... 0x1f80f:
|
||||
case 0x1f3f3 ... 0x1f3f5:
|
||||
return true;
|
||||
case 0x1f848 ... 0x1f84f:
|
||||
case 0x1f3f7 ... 0x1f4fd:
|
||||
return true;
|
||||
case 0x1f85a ... 0x1f85f:
|
||||
case 0x1f4ff ... 0x1f53d:
|
||||
return true;
|
||||
case 0x1f888 ... 0x1f88f:
|
||||
case 0x1f549 ... 0x1f54e:
|
||||
return true;
|
||||
case 0x1f8ae ... 0x1f8ff:
|
||||
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 ... 0x1fffd:
|
||||
case 0x1f947 ... 0x1f978:
|
||||
return true;
|
||||
case 0xe0020 ... 0xe007f:
|
||||
case 0x1f97a ... 0x1f9cb:
|
||||
return true;
|
||||
default: return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static inline bool
|
||||
is_emoji_modifier(char_type code) {
|
||||
switch(code) {
|
||||
case 0x1f3fb ... 0x1f3ff:
|
||||
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;
|
||||
}
|
||||
@ -390,10 +519,12 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0x2b76 ... 0x2b95:
|
||||
return true;
|
||||
case 0x2b98 ... 0x2bff:
|
||||
case 0x2b97 ... 0x2bff:
|
||||
return true;
|
||||
case 0x2ce5 ... 0x2cea:
|
||||
return true;
|
||||
case 0x2e50 ... 0x2e51:
|
||||
return true;
|
||||
case 0x2e80 ... 0x2e99:
|
||||
return true;
|
||||
case 0x2e9b ... 0x2ef3:
|
||||
@ -450,6 +581,8 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0xab5b:
|
||||
return true;
|
||||
case 0xab6a ... 0xab6b:
|
||||
return true;
|
||||
case 0xfb29:
|
||||
return true;
|
||||
case 0xfbb2 ... 0xfbc1:
|
||||
@ -488,7 +621,7 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0x1018c ... 0x1018e:
|
||||
return true;
|
||||
case 0x10190 ... 0x1019b:
|
||||
case 0x10190 ... 0x1019c:
|
||||
return true;
|
||||
case 0x101a0:
|
||||
return true;
|
||||
@ -582,9 +715,7 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0x1f0d1 ... 0x1f0f5:
|
||||
return true;
|
||||
case 0x1f110 ... 0x1f16c:
|
||||
return true;
|
||||
case 0x1f170 ... 0x1f1ac:
|
||||
case 0x1f10d ... 0x1f1ad:
|
||||
return true;
|
||||
case 0x1f1e6 ... 0x1f202:
|
||||
return true;
|
||||
@ -596,11 +727,11 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0x1f260 ... 0x1f265:
|
||||
return true;
|
||||
case 0x1f300 ... 0x1f6d5:
|
||||
case 0x1f300 ... 0x1f6d7:
|
||||
return true;
|
||||
case 0x1f6e0 ... 0x1f6ec:
|
||||
return true;
|
||||
case 0x1f6f0 ... 0x1f6fa:
|
||||
case 0x1f6f0 ... 0x1f6fc:
|
||||
return true;
|
||||
case 0x1f700 ... 0x1f773:
|
||||
return true;
|
||||
@ -618,29 +749,33 @@ is_symbol(char_type code) {
|
||||
return true;
|
||||
case 0x1f890 ... 0x1f8ad:
|
||||
return true;
|
||||
case 0x1f900 ... 0x1f90b:
|
||||
case 0x1f8b0 ... 0x1f8b1:
|
||||
return true;
|
||||
case 0x1f90d ... 0x1f971:
|
||||
case 0x1f900 ... 0x1f978:
|
||||
return true;
|
||||
case 0x1f973 ... 0x1f976:
|
||||
return true;
|
||||
case 0x1f97a ... 0x1f9a2:
|
||||
return true;
|
||||
case 0x1f9a5 ... 0x1f9aa:
|
||||
return true;
|
||||
case 0x1f9ae ... 0x1f9ca:
|
||||
case 0x1f97a ... 0x1f9cb:
|
||||
return true;
|
||||
case 0x1f9cd ... 0x1fa53:
|
||||
return true;
|
||||
case 0x1fa60 ... 0x1fa6d:
|
||||
return true;
|
||||
case 0x1fa70 ... 0x1fa73:
|
||||
case 0x1fa70 ... 0x1fa74:
|
||||
return true;
|
||||
case 0x1fa78 ... 0x1fa7a:
|
||||
return true;
|
||||
case 0x1fa80 ... 0x1fa82:
|
||||
case 0x1fa80 ... 0x1fa86:
|
||||
return true;
|
||||
case 0x1fa90 ... 0x1fa95:
|
||||
case 0x1fa90 ... 0x1faa8:
|
||||
return true;
|
||||
case 0x1fab0 ... 0x1fab6:
|
||||
return true;
|
||||
case 0x1fac0 ... 0x1fac2:
|
||||
return true;
|
||||
case 0x1fad0 ... 0x1fad6:
|
||||
return true;
|
||||
case 0x1fb00 ... 0x1fb92:
|
||||
return true;
|
||||
case 0x1fb94 ... 0x1fbca:
|
||||
return true;
|
||||
default: return false;
|
||||
}
|
||||
|
||||
556
kitty/unicode-data.c
generated
556
kitty/unicode-data.c
generated
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
#include "data-types.h"
|
||||
#define VS15 1280
|
||||
#define VS16 1281
|
||||
#define VS15 1285
|
||||
#define VS16 1286
|
||||
|
||||
bool is_combining_char(char_type ch);
|
||||
bool is_ignored_char(char_type ch);
|
||||
|
||||
386
kitty/wcwidth-std.h
generated
386
kitty/wcwidth-std.h
generated
@ -1,4 +1,4 @@
|
||||
// unicode data, built from the unicode standard on: 2019-10-01
|
||||
// unicode data, built from the unicode standard on: 2020-04-06
|
||||
// see gen-wcwidth.py
|
||||
#pragma once
|
||||
#include "data-types.h"
|
||||
@ -8,7 +8,7 @@ START_ALLOW_CASE_RANGE
|
||||
static int
|
||||
wcwidth_std(int32_t code) {
|
||||
switch(code) {
|
||||
// Marks (2275 codepoints) {{{
|
||||
// Marks (2302 codepoints) {{{
|
||||
case 0x0:
|
||||
return 0;
|
||||
case 0x300 ... 0x36f:
|
||||
@ -127,7 +127,7 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0xb4b ... 0xb4d:
|
||||
return 0;
|
||||
case 0xb56 ... 0xb57:
|
||||
case 0xb55 ... 0xb57:
|
||||
return 0;
|
||||
case 0xb62 ... 0xb63:
|
||||
return 0;
|
||||
@ -181,7 +181,7 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0xd62 ... 0xd63:
|
||||
return 0;
|
||||
case 0xd82 ... 0xd83:
|
||||
case 0xd81 ... 0xd83:
|
||||
return 0;
|
||||
case 0xdca:
|
||||
return 0;
|
||||
@ -275,7 +275,7 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0x1a7f:
|
||||
return 0;
|
||||
case 0x1ab0 ... 0x1abe:
|
||||
case 0x1ab0 ... 0x1ac0:
|
||||
return 0;
|
||||
case 0x1b00 ... 0x1b04:
|
||||
return 0;
|
||||
@ -335,6 +335,8 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0xa823 ... 0xa827:
|
||||
return 0;
|
||||
case 0xa82c:
|
||||
return 0;
|
||||
case 0xa880 ... 0xa881:
|
||||
return 0;
|
||||
case 0xa8b4 ... 0xa8c5:
|
||||
@ -405,6 +407,8 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0x10d24 ... 0x10d27:
|
||||
return 0;
|
||||
case 0x10eab ... 0x10eac:
|
||||
return 0;
|
||||
case 0x10f46 ... 0x10f50:
|
||||
return 0;
|
||||
case 0x11000 ... 0x11002:
|
||||
@ -429,6 +433,8 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0x111c9 ... 0x111cc:
|
||||
return 0;
|
||||
case 0x111ce ... 0x111cf:
|
||||
return 0;
|
||||
case 0x1122c ... 0x11237:
|
||||
return 0;
|
||||
case 0x1123e:
|
||||
@ -473,6 +479,16 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0x1182c ... 0x1183a:
|
||||
return 0;
|
||||
case 0x11930 ... 0x11935:
|
||||
return 0;
|
||||
case 0x11937 ... 0x11938:
|
||||
return 0;
|
||||
case 0x1193b ... 0x1193e:
|
||||
return 0;
|
||||
case 0x11940:
|
||||
return 0;
|
||||
case 0x11942 ... 0x11943:
|
||||
return 0;
|
||||
case 0x119d1 ... 0x119d7:
|
||||
return 0;
|
||||
case 0x119da ... 0x119e0:
|
||||
@ -527,6 +543,10 @@ wcwidth_std(int32_t code) {
|
||||
return 0;
|
||||
case 0x16f8f ... 0x16f92:
|
||||
return 0;
|
||||
case 0x16fe4:
|
||||
return 0;
|
||||
case 0x16ff0 ... 0x16ff1:
|
||||
return 0;
|
||||
case 0x1bc9d ... 0x1bc9e:
|
||||
return 0;
|
||||
case 0x1d165 ... 0x1d169:
|
||||
@ -637,7 +657,7 @@ wcwidth_std(int32_t code) {
|
||||
return -3;
|
||||
// }}}
|
||||
|
||||
// Text Presentation (218 codepoints) {{{
|
||||
// Text Presentation (219 codepoints) {{{
|
||||
case 0x23:
|
||||
return 1;
|
||||
case 0x2a:
|
||||
@ -728,6 +748,8 @@ wcwidth_std(int32_t code) {
|
||||
return 1;
|
||||
case 0x26a0:
|
||||
return 1;
|
||||
case 0x26a7:
|
||||
return 1;
|
||||
case 0x26b0 ... 0x26b1:
|
||||
return 1;
|
||||
case 0x26c8:
|
||||
@ -1227,7 +1249,7 @@ wcwidth_std(int32_t code) {
|
||||
return -2;
|
||||
// }}}
|
||||
|
||||
// East Asian double width (181868 codepoints) {{{
|
||||
// East Asian double width (182418 codepoints) {{{
|
||||
case 0x1100 ... 0x115f:
|
||||
return 2;
|
||||
case 0x231a ... 0x231b:
|
||||
@ -1320,9 +1342,7 @@ wcwidth_std(int32_t code) {
|
||||
return 2;
|
||||
case 0x3131 ... 0x318e:
|
||||
return 2;
|
||||
case 0x3190 ... 0x31ba:
|
||||
return 2;
|
||||
case 0x31c0 ... 0x31e3:
|
||||
case 0x3190 ... 0x31e3:
|
||||
return 2;
|
||||
case 0x31f0 ... 0x321e:
|
||||
return 2;
|
||||
@ -1360,7 +1380,9 @@ wcwidth_std(int32_t code) {
|
||||
return 2;
|
||||
case 0x17000 ... 0x187f7:
|
||||
return 2;
|
||||
case 0x18800 ... 0x18af2:
|
||||
case 0x18800 ... 0x18cd5:
|
||||
return 2;
|
||||
case 0x18d00 ... 0x18d08:
|
||||
return 2;
|
||||
case 0x1b000 ... 0x1b11e:
|
||||
return 2;
|
||||
@ -1434,33 +1456,37 @@ wcwidth_std(int32_t code) {
|
||||
return 2;
|
||||
case 0x1f6d0 ... 0x1f6d2:
|
||||
return 2;
|
||||
case 0x1f6d5:
|
||||
case 0x1f6d5 ... 0x1f6d7:
|
||||
return 2;
|
||||
case 0x1f6eb ... 0x1f6ec:
|
||||
return 2;
|
||||
case 0x1f6f4 ... 0x1f6fa:
|
||||
case 0x1f6f4 ... 0x1f6fc:
|
||||
return 2;
|
||||
case 0x1f7e0 ... 0x1f7eb:
|
||||
return 2;
|
||||
case 0x1f90d ... 0x1f971:
|
||||
case 0x1f90c ... 0x1f93a:
|
||||
return 2;
|
||||
case 0x1f973 ... 0x1f976:
|
||||
case 0x1f93c ... 0x1f945:
|
||||
return 2;
|
||||
case 0x1f97a ... 0x1f9a2:
|
||||
case 0x1f947 ... 0x1f978:
|
||||
return 2;
|
||||
case 0x1f9a5 ... 0x1f9aa:
|
||||
return 2;
|
||||
case 0x1f9ae ... 0x1f9ca:
|
||||
case 0x1f97a ... 0x1f9cb:
|
||||
return 2;
|
||||
case 0x1f9cd ... 0x1f9ff:
|
||||
return 2;
|
||||
case 0x1fa70 ... 0x1fa73:
|
||||
case 0x1fa70 ... 0x1fa74:
|
||||
return 2;
|
||||
case 0x1fa78 ... 0x1fa7a:
|
||||
return 2;
|
||||
case 0x1fa80 ... 0x1fa82:
|
||||
case 0x1fa80 ... 0x1fa86:
|
||||
return 2;
|
||||
case 0x1fa90 ... 0x1fa95:
|
||||
case 0x1fa90 ... 0x1faa8:
|
||||
return 2;
|
||||
case 0x1fab0 ... 0x1fab6:
|
||||
return 2;
|
||||
case 0x1fac0 ... 0x1fac2:
|
||||
return 2;
|
||||
case 0x1fad0 ... 0x1fad6:
|
||||
return 2;
|
||||
case 0x20000 ... 0x2fffd:
|
||||
return 2;
|
||||
@ -1473,7 +1499,7 @@ wcwidth_std(int32_t code) {
|
||||
return 2;
|
||||
// }}}
|
||||
|
||||
// Not assigned in the unicode character database (766326 codepoints) {{{
|
||||
// Not assigned in the unicode character database (765365 codepoints) {{{
|
||||
case 0x378 ... 0x379:
|
||||
return -4;
|
||||
case 0x380 ... 0x383:
|
||||
@ -1520,7 +1546,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x8b5:
|
||||
return -4;
|
||||
case 0x8be ... 0x8d2:
|
||||
case 0x8c8 ... 0x8d2:
|
||||
return -4;
|
||||
case 0x984:
|
||||
return -4;
|
||||
@ -1628,7 +1654,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0xb49 ... 0xb4a:
|
||||
return -4;
|
||||
case 0xb4e ... 0xb55:
|
||||
case 0xb4e ... 0xb54:
|
||||
return -4;
|
||||
case 0xb58 ... 0xb5b:
|
||||
return -4;
|
||||
@ -1718,8 +1744,6 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0xcf3 ... 0xcff:
|
||||
return -4;
|
||||
case 0xd04:
|
||||
return -4;
|
||||
case 0xd0d:
|
||||
return -4;
|
||||
case 0xd11:
|
||||
@ -1732,7 +1756,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0xd64 ... 0xd65:
|
||||
return -4;
|
||||
case 0xd80 ... 0xd81:
|
||||
case 0xd80:
|
||||
return -4;
|
||||
case 0xd84:
|
||||
return -4;
|
||||
@ -1906,7 +1930,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x1aae ... 0x1aaf:
|
||||
return -4;
|
||||
case 0x1abf ... 0x1aff:
|
||||
case 0x1ac1 ... 0x1aff:
|
||||
return -4;
|
||||
case 0x1b4c ... 0x1b4f:
|
||||
return -4;
|
||||
@ -1980,7 +2004,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x2b74 ... 0x2b75:
|
||||
return -4;
|
||||
case 0x2b96 ... 0x2b97:
|
||||
case 0x2b96:
|
||||
return -4;
|
||||
case 0x2c2f:
|
||||
return -4;
|
||||
@ -2016,7 +2040,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x2ddf:
|
||||
return -4;
|
||||
case 0x2e50 ... 0x2e7f:
|
||||
case 0x2e53 ... 0x2e7f:
|
||||
return -4;
|
||||
case 0x2e9a:
|
||||
return -4;
|
||||
@ -2036,8 +2060,6 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x318f:
|
||||
return -4;
|
||||
case 0x31bb ... 0x31bf:
|
||||
return -4;
|
||||
case 0x31e4 ... 0x31ef:
|
||||
return -4;
|
||||
case 0x321f:
|
||||
@ -2052,9 +2074,9 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0xa7c0 ... 0xa7c1:
|
||||
return -4;
|
||||
case 0xa7c7 ... 0xa7f6:
|
||||
case 0xa7cb ... 0xa7f4:
|
||||
return -4;
|
||||
case 0xa82c ... 0xa82f:
|
||||
case 0xa82d ... 0xa82f:
|
||||
return -4;
|
||||
case 0xa83a ... 0xa83f:
|
||||
return -4;
|
||||
@ -2094,7 +2116,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0xab2f:
|
||||
return -4;
|
||||
case 0xab68 ... 0xab6f:
|
||||
case 0xab6c ... 0xab6f:
|
||||
return -4;
|
||||
case 0xabee ... 0xabef:
|
||||
return -4;
|
||||
@ -2180,7 +2202,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x1018f:
|
||||
return -4;
|
||||
case 0x1019c ... 0x1019f:
|
||||
case 0x1019d ... 0x1019f:
|
||||
return -4;
|
||||
case 0x101a1 ... 0x101cf:
|
||||
return -4;
|
||||
@ -2298,11 +2320,19 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x10d3a ... 0x10e5f:
|
||||
return -4;
|
||||
case 0x10e7f ... 0x10eff:
|
||||
case 0x10e7f:
|
||||
return -4;
|
||||
case 0x10eaa:
|
||||
return -4;
|
||||
case 0x10eae ... 0x10eaf:
|
||||
return -4;
|
||||
case 0x10eb2 ... 0x10eff:
|
||||
return -4;
|
||||
case 0x10f28 ... 0x10f2f:
|
||||
return -4;
|
||||
case 0x10f5a ... 0x10fdf:
|
||||
case 0x10f5a ... 0x10faf:
|
||||
return -4;
|
||||
case 0x10fcc ... 0x10fdf:
|
||||
return -4;
|
||||
case 0x10ff7 ... 0x10fff:
|
||||
return -4;
|
||||
@ -2320,12 +2350,10 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x11135:
|
||||
return -4;
|
||||
case 0x11147 ... 0x1114f:
|
||||
case 0x11148 ... 0x1114f:
|
||||
return -4;
|
||||
case 0x11177 ... 0x1117f:
|
||||
return -4;
|
||||
case 0x111ce ... 0x111cf:
|
||||
return -4;
|
||||
case 0x111e0:
|
||||
return -4;
|
||||
case 0x111f5 ... 0x111ff:
|
||||
@ -2378,11 +2406,9 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x11375 ... 0x113ff:
|
||||
return -4;
|
||||
case 0x1145a:
|
||||
return -4;
|
||||
case 0x1145c:
|
||||
return -4;
|
||||
case 0x11460 ... 0x1147f:
|
||||
case 0x11462 ... 0x1147f:
|
||||
return -4;
|
||||
case 0x114c8 ... 0x114cf:
|
||||
return -4;
|
||||
@ -2412,7 +2438,21 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x118f3 ... 0x118fe:
|
||||
return -4;
|
||||
case 0x11900 ... 0x1199f:
|
||||
case 0x11907 ... 0x11908:
|
||||
return -4;
|
||||
case 0x1190a ... 0x1190b:
|
||||
return -4;
|
||||
case 0x11914:
|
||||
return -4;
|
||||
case 0x11917:
|
||||
return -4;
|
||||
case 0x11936:
|
||||
return -4;
|
||||
case 0x11939 ... 0x1193a:
|
||||
return -4;
|
||||
case 0x11947 ... 0x1194f:
|
||||
return -4;
|
||||
case 0x1195a ... 0x1199f:
|
||||
return -4;
|
||||
case 0x119a8 ... 0x119a9:
|
||||
return -4;
|
||||
@ -2466,7 +2506,9 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x11daa ... 0x11edf:
|
||||
return -4;
|
||||
case 0x11ef9 ... 0x11fbf:
|
||||
case 0x11ef9 ... 0x11faf:
|
||||
return -4;
|
||||
case 0x11fb1 ... 0x11fbf:
|
||||
return -4;
|
||||
case 0x11ff2 ... 0x11ffe:
|
||||
return -4;
|
||||
@ -2514,11 +2556,15 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x16fa0 ... 0x16fdf:
|
||||
return -4;
|
||||
case 0x16fe4 ... 0x16fff:
|
||||
case 0x16fe5 ... 0x16fef:
|
||||
return -4;
|
||||
case 0x16ff2 ... 0x16fff:
|
||||
return -4;
|
||||
case 0x187f8 ... 0x187ff:
|
||||
return -4;
|
||||
case 0x18af3 ... 0x1afff:
|
||||
case 0x18cd6 ... 0x18cff:
|
||||
return -4;
|
||||
case 0x18d09 ... 0x1afff:
|
||||
return -4;
|
||||
case 0x1b11f ... 0x1b14f:
|
||||
return -4;
|
||||
@ -2714,11 +2760,7 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x1f0f6 ... 0x1f0ff:
|
||||
return -4;
|
||||
case 0x1f10d ... 0x1f10f:
|
||||
return -4;
|
||||
case 0x1f16d ... 0x1f16f:
|
||||
return -4;
|
||||
case 0x1f1ad ... 0x1f1e5:
|
||||
case 0x1f1ae ... 0x1f1e5:
|
||||
return -4;
|
||||
case 0x1f203 ... 0x1f20f:
|
||||
return -4;
|
||||
@ -2730,11 +2772,11 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x1f266 ... 0x1f2ff:
|
||||
return -4;
|
||||
case 0x1f6d6 ... 0x1f6df:
|
||||
case 0x1f6d8 ... 0x1f6df:
|
||||
return -4;
|
||||
case 0x1f6ed ... 0x1f6ef:
|
||||
return -4;
|
||||
case 0x1f6fb ... 0x1f6ff:
|
||||
case 0x1f6fd ... 0x1f6ff:
|
||||
return -4;
|
||||
case 0x1f774 ... 0x1f77f:
|
||||
return -4;
|
||||
@ -2750,31 +2792,37 @@ wcwidth_std(int32_t code) {
|
||||
return -4;
|
||||
case 0x1f888 ... 0x1f88f:
|
||||
return -4;
|
||||
case 0x1f8ae ... 0x1f8ff:
|
||||
case 0x1f8ae ... 0x1f8af:
|
||||
return -4;
|
||||
case 0x1f90c:
|
||||
case 0x1f8b2 ... 0x1f8ff:
|
||||
return -4;
|
||||
case 0x1f972:
|
||||
case 0x1f979:
|
||||
return -4;
|
||||
case 0x1f977 ... 0x1f979:
|
||||
return -4;
|
||||
case 0x1f9a3 ... 0x1f9a4:
|
||||
return -4;
|
||||
case 0x1f9ab ... 0x1f9ad:
|
||||
return -4;
|
||||
case 0x1f9cb ... 0x1f9cc:
|
||||
case 0x1f9cc:
|
||||
return -4;
|
||||
case 0x1fa54 ... 0x1fa5f:
|
||||
return -4;
|
||||
case 0x1fa6e ... 0x1fa6f:
|
||||
return -4;
|
||||
case 0x1fa74 ... 0x1fa77:
|
||||
case 0x1fa75 ... 0x1fa77:
|
||||
return -4;
|
||||
case 0x1fa7b ... 0x1fa7f:
|
||||
return -4;
|
||||
case 0x1fa83 ... 0x1fa8f:
|
||||
case 0x1fa87 ... 0x1fa8f:
|
||||
return -4;
|
||||
case 0x1fa96 ... 0x1ffff:
|
||||
case 0x1faa9 ... 0x1faaf:
|
||||
return -4;
|
||||
case 0x1fab7 ... 0x1fabf:
|
||||
return -4;
|
||||
case 0x1fac3 ... 0x1facf:
|
||||
return -4;
|
||||
case 0x1fad7 ... 0x1faff:
|
||||
return -4;
|
||||
case 0x1fb93:
|
||||
return -4;
|
||||
case 0x1fbcb ... 0x1fbef:
|
||||
return -4;
|
||||
case 0x1fbfa ... 0x1ffff:
|
||||
return -4;
|
||||
case 0x2fffe ... 0x2ffff:
|
||||
return -4;
|
||||
@ -2827,11 +2875,7 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x23cf:
|
||||
return true;
|
||||
case 0x23e9 ... 0x23ea:
|
||||
return true;
|
||||
case 0x23ed ... 0x23ef:
|
||||
return true;
|
||||
case 0x23f1 ... 0x23f3:
|
||||
case 0x23e9 ... 0x23f3:
|
||||
return true;
|
||||
case 0x23f8 ... 0x23fa:
|
||||
return true;
|
||||
@ -2895,6 +2939,8 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x26a0 ... 0x26a1:
|
||||
return true;
|
||||
case 0x26a7:
|
||||
return true;
|
||||
case 0x26aa ... 0x26ab:
|
||||
return true;
|
||||
case 0x26b0 ... 0x26b1:
|
||||
@ -2905,7 +2951,7 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x26c8:
|
||||
return true;
|
||||
case 0x26cf:
|
||||
case 0x26ce ... 0x26cf:
|
||||
return true;
|
||||
case 0x26d1:
|
||||
return true;
|
||||
@ -2921,9 +2967,9 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x2702:
|
||||
return true;
|
||||
case 0x2708 ... 0x2709:
|
||||
case 0x2705:
|
||||
return true;
|
||||
case 0x270c ... 0x270d:
|
||||
case 0x2708 ... 0x270d:
|
||||
return true;
|
||||
case 0x270f:
|
||||
return true;
|
||||
@ -2937,20 +2983,32 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x2721:
|
||||
return true;
|
||||
case 0x2728:
|
||||
return true;
|
||||
case 0x2733 ... 0x2734:
|
||||
return true;
|
||||
case 0x2744:
|
||||
return true;
|
||||
case 0x2747:
|
||||
return true;
|
||||
case 0x2753:
|
||||
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:
|
||||
@ -2971,125 +3029,51 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x1f004:
|
||||
return true;
|
||||
case 0x1f0cf:
|
||||
return true;
|
||||
case 0x1f170 ... 0x1f171:
|
||||
return true;
|
||||
case 0x1f17e ... 0x1f17f:
|
||||
return true;
|
||||
case 0x1f202:
|
||||
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 0x1f237:
|
||||
case 0x1f232 ... 0x1f23a:
|
||||
return true;
|
||||
case 0x1f30d ... 0x1f30f:
|
||||
case 0x1f250 ... 0x1f251:
|
||||
return true;
|
||||
case 0x1f315:
|
||||
case 0x1f300 ... 0x1f321:
|
||||
return true;
|
||||
case 0x1f31c:
|
||||
return true;
|
||||
case 0x1f321:
|
||||
return true;
|
||||
case 0x1f324 ... 0x1f32c:
|
||||
return true;
|
||||
case 0x1f336:
|
||||
return true;
|
||||
case 0x1f378:
|
||||
return true;
|
||||
case 0x1f37d:
|
||||
return true;
|
||||
case 0x1f393:
|
||||
case 0x1f324 ... 0x1f393:
|
||||
return true;
|
||||
case 0x1f396 ... 0x1f397:
|
||||
return true;
|
||||
case 0x1f399 ... 0x1f39b:
|
||||
return true;
|
||||
case 0x1f39e ... 0x1f39f:
|
||||
case 0x1f39e ... 0x1f3f0:
|
||||
return true;
|
||||
case 0x1f3a7:
|
||||
case 0x1f3f3 ... 0x1f3f5:
|
||||
return true;
|
||||
case 0x1f3ac ... 0x1f3ae:
|
||||
case 0x1f3f7 ... 0x1f4fd:
|
||||
return true;
|
||||
case 0x1f3c2:
|
||||
case 0x1f4ff ... 0x1f53d:
|
||||
return true;
|
||||
case 0x1f3c4:
|
||||
return true;
|
||||
case 0x1f3c6:
|
||||
return true;
|
||||
case 0x1f3ca ... 0x1f3ce:
|
||||
return true;
|
||||
case 0x1f3d4 ... 0x1f3e0:
|
||||
return true;
|
||||
case 0x1f3ed:
|
||||
return true;
|
||||
case 0x1f3f3:
|
||||
return true;
|
||||
case 0x1f3f5:
|
||||
return true;
|
||||
case 0x1f3f7:
|
||||
return true;
|
||||
case 0x1f408:
|
||||
return true;
|
||||
case 0x1f415:
|
||||
return true;
|
||||
case 0x1f41f:
|
||||
return true;
|
||||
case 0x1f426:
|
||||
return true;
|
||||
case 0x1f43f:
|
||||
return true;
|
||||
case 0x1f441 ... 0x1f442:
|
||||
return true;
|
||||
case 0x1f446 ... 0x1f449:
|
||||
return true;
|
||||
case 0x1f44d ... 0x1f44e:
|
||||
return true;
|
||||
case 0x1f453:
|
||||
return true;
|
||||
case 0x1f46a:
|
||||
return true;
|
||||
case 0x1f47d:
|
||||
return true;
|
||||
case 0x1f4a3:
|
||||
return true;
|
||||
case 0x1f4b0:
|
||||
return true;
|
||||
case 0x1f4b3:
|
||||
return true;
|
||||
case 0x1f4bb:
|
||||
return true;
|
||||
case 0x1f4bf:
|
||||
return true;
|
||||
case 0x1f4cb:
|
||||
return true;
|
||||
case 0x1f4da:
|
||||
return true;
|
||||
case 0x1f4df:
|
||||
return true;
|
||||
case 0x1f4e4 ... 0x1f4e6:
|
||||
return true;
|
||||
case 0x1f4ea ... 0x1f4ed:
|
||||
return true;
|
||||
case 0x1f4f7:
|
||||
return true;
|
||||
case 0x1f4f9 ... 0x1f4fb:
|
||||
return true;
|
||||
case 0x1f4fd:
|
||||
return true;
|
||||
case 0x1f508:
|
||||
return true;
|
||||
case 0x1f50d:
|
||||
return true;
|
||||
case 0x1f512 ... 0x1f513:
|
||||
return true;
|
||||
case 0x1f549 ... 0x1f54a:
|
||||
case 0x1f549 ... 0x1f54e:
|
||||
return true;
|
||||
case 0x1f550 ... 0x1f567:
|
||||
return true;
|
||||
case 0x1f56f ... 0x1f570:
|
||||
return true;
|
||||
case 0x1f573 ... 0x1f579:
|
||||
case 0x1f573 ... 0x1f57a:
|
||||
return true;
|
||||
case 0x1f587:
|
||||
return true;
|
||||
@ -3097,7 +3081,9 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x1f590:
|
||||
return true;
|
||||
case 0x1f5a5:
|
||||
case 0x1f595 ... 0x1f596:
|
||||
return true;
|
||||
case 0x1f5a4 ... 0x1f5a5:
|
||||
return true;
|
||||
case 0x1f5a8:
|
||||
return true;
|
||||
@ -3121,39 +3107,49 @@ is_emoji_presentation_base(uint32_t code) {
|
||||
return true;
|
||||
case 0x1f5f3:
|
||||
return true;
|
||||
case 0x1f5fa:
|
||||
case 0x1f5fa ... 0x1f64f:
|
||||
return true;
|
||||
case 0x1f610:
|
||||
case 0x1f680 ... 0x1f6c5:
|
||||
return true;
|
||||
case 0x1f687:
|
||||
case 0x1f6cb ... 0x1f6d2:
|
||||
return true;
|
||||
case 0x1f68d:
|
||||
return true;
|
||||
case 0x1f691:
|
||||
return true;
|
||||
case 0x1f694:
|
||||
return true;
|
||||
case 0x1f698:
|
||||
return true;
|
||||
case 0x1f6ad:
|
||||
return true;
|
||||
case 0x1f6b2:
|
||||
return true;
|
||||
case 0x1f6b9 ... 0x1f6ba:
|
||||
return true;
|
||||
case 0x1f6bc:
|
||||
return true;
|
||||
case 0x1f6cb:
|
||||
return true;
|
||||
case 0x1f6cd ... 0x1f6cf:
|
||||
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:
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user