Files
example-code-2e/04-text-byte/zwj_sample.ipynb
2020-01-22 23:17:00 -03:00

3.4 KiB

In [1]:
from unicodedata import name

zwg_sample = """
1F468 200D 1F9B0            |man: red hair                      |E11.0
1F9D1 200D 1F91D 200D 1F9D1 |people holding hands               |E12.0
1F3CA 1F3FF 200D 2640 FE0F  |woman swimming: dark skin tone     |E4.0
1F469 1F3FE 200D 2708 FE0F  |woman pilot: medium-dark skin tone |E4.0
1F468 200D 1F469 200D 1F467 |family: man, woman, girl           |E2.0
1F3F3 FE0F 200D 26A7 FE0F   |transgender flag                   |E13.0
1F469 200D 2764 FE0F 200D 1F48B 200D 1F469 |kiss: woman, woman  |E2.0
"""

markers = {'\u200D': 'ZWG', # ZERO WIDTH JOINER
           '\uFE0F': 'V16', # VARIATION SELECTOR-16
          }

for line in zwg_sample.strip().split('\n'):
    code, descr, version = (s.strip() for s in line.split('|'))
    chars = [chr(int(c, 16)) for c in code.split()]
    print(''.join(chars), version, descr, sep='\t', end='')
    while chars:
        char = chars.pop(0)
        if char in markers:
            print(' + ' + markers[char], end='')
        else:
            ucode = f'U+{ord(char):04X}'
            print(f'\n\t{char}\t{ucode}\t{name(char)}', end='')
    print()
👨‍🦰	E11.0	man: red hair
	👨	U+1F468	MAN + ZWG
	🦰	U+1F9B0	EMOJI COMPONENT RED HAIR
🧑‍🤝‍🧑	E12.0	people holding hands
	🧑	U+1F9D1	ADULT + ZWG
	🤝	U+1F91D	HANDSHAKE + ZWG
	🧑	U+1F9D1	ADULT
🏊🏿‍♀️	E4.0	woman swimming: dark skin tone
	🏊	U+1F3CA	SWIMMER
	🏿	U+1F3FF	EMOJI MODIFIER FITZPATRICK TYPE-6 + ZWG
	♀	U+2640	FEMALE SIGN + V16
👩🏾‍✈️	E4.0	woman pilot: medium-dark skin tone
	👩	U+1F469	WOMAN
	🏾	U+1F3FE	EMOJI MODIFIER FITZPATRICK TYPE-5 + ZWG
	✈	U+2708	AIRPLANE + V16
👨‍👩‍👧	E2.0	family: man, woman, girl
	👨	U+1F468	MAN + ZWG
	👩	U+1F469	WOMAN + ZWG
	👧	U+1F467	GIRL
🏳️‍⚧️	E13.0	transgender flag
	🏳	U+1F3F3	WAVING WHITE FLAG + V16 + ZWG
	⚧	U+26A7	MALE WITH STROKE AND MALE AND FEMALE SIGN + V16
👩‍❤️‍💋‍👩	E2.0	kiss: woman, woman
	👩	U+1F469	WOMAN + ZWG
	❤	U+2764	HEAVY BLACK HEART + V16 + ZWG
	💋	U+1F48B	KISS MARK + ZWG
	👩	U+1F469	WOMAN
In [ ]: