Swarfing, I use Linux, too, and I did a lot of checking running fonts in X and Wine, and in the usual Windows directories. I got the same results as Geoff no matter where they are put.
The program appears to use a different on-screen font for input display than the working font used to generate the G-code (the Thai font). It then examines the input window and applies what it finds to the working font.
So what happens is, using a Thai font and shifting to a Thai keyboard doesn't work because the program display font doesn't have characters in the high range. So it outputs question marks.
Then the conversion process uses those literal input line characters (question marks) to look up how to display the output, and build the G-code. Since all the characters it looks up are the question marks it finds in the input line it does a perfect G-code program for a bunch of question marks. The Thai font, actually has English characters in the low ASCII range, and so there is no problem outputting question marks.
I just moved the Thai characters to the low range. Because the input must be English, always, you have to use the English keyboard (or you'll get question marks again), and the input line will then be English characters. BUT when it goes to do the G-code it looks to the lower range again to output these characters, but finds in their place (and works with) the Thai characters we substituted. Since they were kept in order, they should (I hope) correspond with their usual position on the keyboard on a Thai computer.