Resending a revised patch again. I find it easier to just reformat against master, and I apologize if there is some other workflow that is preferred. In testing, I found one more area for improvement: we should try to use precomposed characters when they exist instead of strings containing base letters and combining characters. That meant doing away the the automatic concatenation of vowels and combining diacritics permutations in favor of just specifying all permutations manually (like most Quail packages do). That is more error-prone, but I've double checked and tested it and it looks good.