Add support for the unicode emoji presentation variation selector

This commit is contained in:
Kovid Goyal
2018-02-06 09:52:55 +05:30
parent b8ab15bea8
commit 9c874f6685
4 changed files with 438 additions and 4 deletions

View File

@@ -71,6 +71,7 @@ def split_two(line):
all_emoji = set()
emoji_categories = {}
emoji_presentation_bases = set()
def parse_emoji():
@@ -79,6 +80,13 @@ def parse_emoji():
s = emoji_categories.setdefault(rest, set())
s.update(chars)
all_emoji.update(chars)
for line in get_data('emoji-variation-sequences.txt', 'emoji'):
base, var, *rest = line.split()
if base.startswith('#'):
continue
base = int(base, 16)
if var.upper() == 'FE0F':
emoji_presentation_bases.add(base)
doublewidth, ambiguous = set(), set()
@@ -231,6 +239,15 @@ def gen_wcwidth():
p('\t}')
p('\treturn 1;\n}')
p('static bool\nis_emoji_presentation_base(uint32_t code) {')
p('\tswitch(code) {')
for spec in get_ranges(list(emoji_presentation_bases)):
write_case(spec, p)
p('\t\t\treturn true;')
p('\t\tdefault: return false;')
p('\t}')
p('\treturn 1;\n}')
parse_ucd()
parse_emoji()