Why is this complicated? If you are using unicode escape sequences, you have 4 hex digits to work with, so you can access 65535 characters. You can use windows calculator to convert between decimal and hexadecimal if you switch it to scientific view. Am I missing something?
Oh... are you talking about this line in DrawText?
byte[] charBytes = System.Text.Encoding.ASCII.GetBytes(text);
Yeah, it is limited to ASCII in that sense. Yeah, if you want to access more than 255 values, you would need to replace the ASCII encoder with something that can handle more than 1 byte per character. UTF-32 would probably work. But I assume you wouldn't be dealing with 4 billion characters, so you wouldn't need the 4 bytes per characters that it uses. You might be better off using the Unicode encoding (which is UTF-16). Unless you're using something like this:
char.ConvertToUtf32(text, charIdx)
which makes the conversion really easy without having to even call on an encoder.