I just had a thought and I have no idea how hard it would be to do but here it is. Instead of using actual letters to make words why not try using sounds instead (like in the dictionary where it shows pronunciation)? Then use those sounds as sort of a key to how the letters would be, possibly using more than one set of letters for each sound. Sort of like the long e sound in "screen" can be spelled ie, ei, ea, ee, etc. The hard c in "card" can be spelled cc, ch, ck, qu, etc. The program generates sounds, puts various sounds together (depending on a user input for syllables), and then generates possible spellings. If it were really cool then maybe the program could use certain language preset common sounds (like "ikki" for polynesian or 'esque" for french) as tag-ons at the end.