|
Packit |
b7c837 |
from __future__ import print_function
|
|
Packit |
b7c837 |
import os
|
|
Packit |
b7c837 |
from os import path
|
|
Packit |
b7c837 |
import subprocess
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
OUTPUT_DIR = '/tmp/placeholder_emoji'
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def generate_image(name, text):
|
|
Packit |
b7c837 |
print(name, text.replace('\n', '_'))
|
|
Packit |
b7c837 |
subprocess.check_call(
|
|
Packit |
b7c837 |
['convert', '-size', '100x100', 'label:%s' % text,
|
|
Packit |
b7c837 |
'%s/%s' % (OUTPUT_DIR, name)])
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def is_color_patch(cp):
|
|
Packit |
b7c837 |
return cp >= 0x1f3fb and cp <= 0x1f3ff
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def has_color_patch(values):
|
|
Packit |
b7c837 |
for v in values:
|
|
Packit |
b7c837 |
if is_color_patch(v):
|
|
Packit |
b7c837 |
return True
|
|
Packit |
b7c837 |
return False
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def regional_to_ascii(cp):
|
|
Packit |
b7c837 |
return unichr(ord('A') + cp - 0x1f1e6)
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def is_flag_sequence(values):
|
|
Packit |
b7c837 |
if len(values) != 2:
|
|
Packit |
b7c837 |
return False
|
|
Packit |
b7c837 |
for v in values:
|
|
Packit |
b7c837 |
v -= 0x1f1e6
|
|
Packit |
b7c837 |
if v < 0 or v > 25:
|
|
Packit |
b7c837 |
return False
|
|
Packit |
b7c837 |
return True
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def is_keycap_sequence(values):
|
|
Packit |
b7c837 |
return len(values) == 2 and values[1] == 0x20e3
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def get_keycap_text(values):
|
|
Packit |
b7c837 |
return '-%c-' % unichr(values[0]) # convert gags on '['
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
char_map = {
|
|
Packit |
b7c837 |
0x1f468: 'M',
|
|
Packit |
b7c837 |
0x1f469: 'W',
|
|
Packit |
b7c837 |
0x1f466: 'B',
|
|
Packit |
b7c837 |
0x1f467: 'G',
|
|
Packit |
b7c837 |
0x2764: 'H', # heavy black heart, no var sel
|
|
Packit |
b7c837 |
0x1f48b: 'K', # kiss mark
|
|
Packit |
b7c837 |
0x200D: '-', # zwj placeholder
|
|
Packit |
b7c837 |
0xfe0f: '-', # variation selector placeholder
|
|
Packit |
b7c837 |
0x1f441: 'I', # Eye
|
|
Packit |
b7c837 |
0x1f5e8: 'W', # 'witness' (left speech bubble)
|
|
Packit |
b7c837 |
}
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
def get_combining_text(values):
|
|
Packit |
b7c837 |
chars = []
|
|
Packit |
b7c837 |
for v in values:
|
|
Packit |
b7c837 |
char = char_map.get(v, None)
|
|
Packit |
b7c837 |
if not char:
|
|
Packit |
b7c837 |
return None
|
|
Packit |
b7c837 |
if char != '-':
|
|
Packit |
b7c837 |
chars.append(char)
|
|
Packit |
b7c837 |
return ''.join(chars)
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
if not path.isdir(OUTPUT_DIR):
|
|
Packit |
b7c837 |
os.makedirs(OUTPUT_DIR)
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
with open('sequences.txt', 'r') as f:
|
|
Packit |
b7c837 |
for seq in f:
|
|
Packit |
b7c837 |
seq = seq.strip()
|
|
Packit |
b7c837 |
text = None
|
|
Packit |
b7c837 |
values = [int(code, 16) for code in seq.split('_')]
|
|
Packit |
b7c837 |
if len(values) == 1:
|
|
Packit |
b7c837 |
val = values[0]
|
|
Packit |
b7c837 |
text = '%04X' % val # ensure upper case format
|
|
Packit |
b7c837 |
elif is_flag_sequence(values):
|
|
Packit |
b7c837 |
text = ''.join(regional_to_ascii(cp) for cp in values)
|
|
Packit |
b7c837 |
elif has_color_patch(values):
|
|
Packit |
b7c837 |
print('skipping color patch sequence %s' % seq)
|
|
Packit |
b7c837 |
elif is_keycap_sequence(values):
|
|
Packit |
b7c837 |
text = get_keycap_text(values)
|
|
Packit |
b7c837 |
else:
|
|
Packit |
b7c837 |
text = get_combining_text(values)
|
|
Packit |
b7c837 |
if not text:
|
|
Packit |
b7c837 |
print('missing %s' % seq)
|
|
Packit |
b7c837 |
|
|
Packit |
b7c837 |
if text:
|
|
Packit |
b7c837 |
if len(text) > 3:
|
|
Packit |
b7c837 |
if len(text) == 4:
|
|
Packit |
b7c837 |
hi = text[:2]
|
|
Packit |
b7c837 |
lo = text[2:]
|
|
Packit |
b7c837 |
else:
|
|
Packit |
b7c837 |
hi = text[:-3]
|
|
Packit |
b7c837 |
lo = text[-3:]
|
|
Packit |
b7c837 |
text = '%s\n%s' % (hi, lo)
|
|
Packit |
b7c837 |
generate_image('emoji_u%s.png' % seq, text)
|