#!/usr/bin/env python3 import json import string import unicodedata def quote(letter): return json.dumps(letter, ensure_ascii=False) def show(accented, letter, accent): print( f"U+{ord(accented):04X}:{accented} C combine({quote(letter)}, {quote(accent)})" ) def add_accent(letter, accent): return unicodedata.normalize("NFC", letter + accent) for accent_name, accent_char in [ ("\\{grave accent}", "\u0300"), ("\\{acute accent}", "\u0301"), ("\\{circumflex}", "\u0302"), ("\\{tilde}", "\u0303"), ("\\{macron}", "\u0304"), ("\\{overline}", "\u0305"), ("\\{breve}", "\u0306"), ("\\{dot above}", "\u0307"), ("\\{umlaut}", "\u0308"), ("\\{ring above}", "\u030A"), ("\\{double acute accent}", "\u030B"), ("\\{caron}", "\u030C"), ]: print("#", accent_name) for letter in string.ascii_uppercase + string.ascii_lowercase: accented = add_accent(letter, accent_char) if len(accented) == 1: show(accented, letter, accent_name) print()