#!/usr/bin/env python3 from PIL import Image FONT_SIZE = (4, 8) def convert(filename, subset=range(0,128)): img = Image.open(filename) print("""#include uint16_t default_font[] = {""") grid = (img.size[0] // FONT_SIZE[0], img.size[1] // FONT_SIZE[1]) ch = 0 for r in range(grid[1]): for c in range(grid[0]): v = 0 for x in range(FONT_SIZE[0]): for y in range(FONT_SIZE[1]-1, -1, -1): v <<= 1 if img.getpixel((c*FONT_SIZE[0]+x,r*FONT_SIZE[1]+y)): v |= 1 h = (v >> 16) & 0xffff l = v & 0xffff if 32 <= ch < 127: d = f'"{ch:c}" ' else: d = '' if ch in subset: print(f"\t0x{h:04x}, 0x{l:04x},\t/* {ch:3d} 0x{ch:02x} {d}*/") ch += 1 print("};") if __name__ == '__main__': import sys for fn in sys.argv[1:]: convert(fn)