diff --git a/egui/fonts/list_fonts.py b/egui/fonts/list_fonts.py new file mode 100644 index 00000000..de1a1e7a --- /dev/null +++ b/egui/fonts/list_fonts.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +from fontTools.ttLib import TTFont +from fontTools.unicode import Unicode +from itertools import chain +import sys + +ttf = TTFont(sys.argv[1], 0, verbose=0, allowVID=0, + ignoreDecompileErrors=True, + fontNumber=-1) + +chars = chain.from_iterable([y + (Unicode[y[0]],) + for y in x.cmap.items()] for x in ttf["cmap"].tables) + + +all_codepoints = {} + +for entry in chars: + codepoint = entry[0] + short_name = entry[1] + long_name = entry[2].lower() + if False: + print(f'(0x{codepoint:02X}, "{short_name}", "{long_name}"),') + else: + name = short_name if long_name == "????" else long_name + # print(f'(0x{codepoint:02X}, "{name}"),') + all_codepoints[codepoint] = name + +for codepoint in sorted(all_codepoints.keys()): + name = all_codepoints[codepoint] + print(f'(0x{codepoint:02X}, \'{chr(codepoint)}\', "{name}"),') + +ttf.close()