Non-square font support, less indirection, less compiler warnings

I've just noticed this kinda reverses some previous changes (to how `image`s are created), but it's more convenient if we don't want to pass around pointers to pointers to structures of pointers to structures.