Let’s talk about another Capcom’s title, Rockman X DIVE. This title is developed by Capcom Taiwan, using Unity 3D.
If you’ve already read my State of Thai in Unity 3D post before, you probably have an idea of what is coming down below. For those who haven’t, and doesn’t want to spend too much time reading, let me give you a TLDR; this game is a TOTAL DISASTER.
In fact, for those who know some Thai, you should probably notice by now what’s wrong in the feature image. All of the tone mark in that screenshot are misplaced (well, there’s only 2 of them.). Here’s an example of what went wrong.
In this button, the text is actually “หมุน 1 ครั้ง”. However the tone mark is misplaced and it totally obstruct the Mai Han-Akat. Mai Han-Akat is now missing.
Now let’s take a look at the configuration screen.
These buttons are all text and looks like they are localized very well, but again most tone marks are miss the mark (pun intended).
Regarding the font, this looks like it is Noto Sans Thai, although it might be a different variant or weight. This font is pretty well designed and should work on OpenType-aware applications. Unfortunately Unity 3D is not one of them. I’ll simulate the text render using my test tool. Notice that the text itself is pretty similar, however there are no text effects implemented yet so it looks a bit bland.
The top is what similar to how the game render currently, and the bottom is what it supposed to be.
Given that these problems are in the text rendering of the engine, there are a few thing we can do with it. For those embeded in the textures, the textures has to be edit using OpenType-aware application (eg. Photoshop).
Tone mark is the most obvious problem here as they can be placed directly over base character, or floating vowels (like Mai Han-Akat in this example). The easiest method to mitigate the issue is to push those tone marks up in the air, to avoid the floating vowels. Basically adjust the glyph metrics of those tonemark so the glyph is pushed upward.
This does not totally eliminates all problem, if there’s no floating vowel underneath it, the tone mark is too high. However I think in this case readability is more important than correctness (as Unity can’t do proper Thai text rendering anyway). Just leave it high in the sky then it would be fine.
Using adjustment pair might help, but there’s a lot of cases needed to handle, given how many vowels and tonemark we have. Testing can be a nightmare.
I’ll be updating the post about Unity 3D with the new version of the site (still under development). That should includes more details of the fix you can do to make Unity 3D displays Thai text better. Without feature like mark-to-mark anchor it won’t look right, unfortunately.
C++ Programmer and Music Advocate.