The Z-machine spec (1.0 and later) allows games to include a “Unicode translation table”, which defines ZSCII characters 155 through 251. If one is not provided, default values (from the Latin-1 character set) are used for 155 through 223, and 224 through 251 are undefined.
I’m working to improve Unicode support in the Dialog Z-machine backend, and I can see a couple main paths forward:
- Keep the default values for 155-223, and assign whatever other characters appear in dictionary words to 224-251. If more than 28 non-standard characters are used, error. This offers the fewest characters to the user.
- Start by keeping the default values for 155-223, and assign whatever other characters appear in dictionary words to 224-251. If more than 28 non-standard characters are used, start overwriting the ones from 155-223. This requires the most rewriting in the compiler.
- Throw out the default table, and assign whatever characters appear in dictionary words to 155-251. This is the most elegant, but the least backwards-compatible.
My preference would be to do the first one, if there are a bunch of interpreters out there that support ZSCII 155-223 but don’t support redefining them, or the third one, if there aren’t.
So my question is: are there interpreters out there that support non-ASCII characters in input, but don’t support redefining the upper ZSCII characters with a Unicode translation table? In other words, is there a strong reason to keep the default 69 characters at their usual codepoints?