I toyed a round a bit with texture-packing. The idea is to pack multiple arbitary sized textures on a bigger one. In the context of a sprite engine, this makes sense. Today when you write games, whatever you do, you use the exisitng 3d hardware, even for 2d stuff. The thing you want to avoid when rendering with super-fast hardware is shuffling data around between card and ram. Thus it's a sensible aproach to load all textures needed for a batch of work once, and then have primitives use them.
Anyway, here's a pretty pic :D
( p.s. of course this is all written in python, source follow later )