Resident Evil: Village is the eighth installment of the successful series Resident Evil/Biohazard. With this sequel, it returns with Thai support. I’ll be analyzing how it perform in the area.

Please keep in mind that the quality of the translation is not part of this article. I can easily say it leaves a lot to be desire, but that’s not what we are going to discuss here.

The Good

Overall I think this game has a very good support of Thai text display. Below is the image I take from the settings menu.

Each glyph looks good with no visible artifacts. The tone marks are place correctly (eg. “การสะท้อนพื้นที่หน้าจอ” (lit. “screen-space reflection”)) which is pretty rare in today’s games. Usually you’d find tonemarks floating too far atop the base character, or clash with the vowels mark underneath it. Here are example of bad positioning.

Arundina Sans @64px

Noto Sans Thai @64px

In RE Village, these positioning are perfect.

In the main game, the subtitle looks good as well, no artifacts or overlaps whatsoever. The tonemarks are perfects.

So how did they manage to do this? Capcom implemented this by combining appropriate fonts with the right technology. I will start with the actual font (or, in the correct terms, typeface) first. From the information I can gather it appears the Thai typeface are all from Linotypes foundry.

  1. Neue Frutiger Thai Modern Regular for the UI Texts
  2. Neue Frutiger Thai Traditional Light for the subtitles.
  3. SST Thai Meduim for the main menu text.

Now I haven’t really tested these fonts so I can’t be 100% certain. These are basically a guess based on the asset file names. The actual content doesn’t appears to be the TrueType/OpenType files but rather the custom file format oft. Also the licensing fees is too expensive for me just to test my hypothesis. If you happens to have access to these fonts may be you can share your results with me, that would be appreciated.

Next lets talk about the technology. Capcom incorporate two famous opensource libraries here on the text rendering. This is based on their copyright screen (which is taken from the PS4 Demo version).

  1. FreeType 2 for glyph render/font file handling.
  2. Harfbuzz for text shaping/glyphs layout.

They are pretty much the common library uses in major Desktop Environments on Linux, Web Browsers, Android OS, etc. Getting the right results is kinda a given. Anyway it’s also possible that Capcom only uses these library to extracts necessary information to make the asset files, and use entirely custom rendering/layout code.

Nonetheless let’s applaud the afford it takes to implements these features.

Line Spacing issue

Apart from the translations and typo problems (a lot of both of them), one thing that seems to be so problematic about Thai text display in Resident Evil: Village is line spacing.

For example. Notice the character Mai Tho is now above the baseline of the line above.

Now compare to this.

Laksaman @64px

There is significant space above the Mai Tho tone mark. This space is for some of characters that stay below the baseline, like Sara U in this example which clashes with Maitaikhu from the line below.

It’d be better if they stay apart from each other.

Laksaman @64px

So what happens with these? At this point I can only guess. Usually glyphes should stay between the ascender line and the descender line. For example, with Laksaman, the glypes stay within the ascender area (deep blue area) and the descender area (green area).

Laksaman @64px

From my experience, I’ve seen fonts that the ascender and/descender is too small. Some parts of the glyph (or entire glyph) might be put outside of the ascender-descender area. Here’s Sarabun.

Sarabun @64px

Compare to Laksaman above, you might notice that some of Mai Eak and Mai Tho are placed in the descender (green) area of the line above (which can overlap with character from the above line).

Also, part of Sara U is outside of the descender area, down into the ascender area of the line below.

Mark collided with base character Issue

Let me start with our Duke shop.

Just in case you can’t see the where it goes wrong, the word “ปืน” has Sara Uee overlaps with the tail of the character Po Pla below. Also Mai Chattawa is hitting Po Pla as well in the word “กระเป๋า”. What happens ?

At a first glance this looks to be a texture created from some DTP program. However, I doubt Capcom would use anything other than Photoshop, and Adobe Photoshop usually has a very good support for Unicode. Then if it’s not texture, it’s the real-time render text just like above.

Here’s another example of this problem. This is right in the beginning, but it can be easily dismissed as a merely typos.

Most people would think, Mai Ek is missing. That might be true, but one possible problem is that the font requires Thai Script shaping algorithm. I have seen this problem before but cannot replicate with fonts I have at hands. Anyway, in Harfbuzz there’s a function to set the script of the buffer to be a certain script (Hiragana, Katagana, Thai, Arabian, etc.).

hb_buffer_set_script(buffer, HB_SCRIPT_THAI);

Most script will use the common shaping algorithm, but Thai is one of the exceptions. In most fonts I have encountered the common algorithm works fine, but again there are some exceptions (eg. Cadson Demak’s Prompt). So maybe the Neue Frutiger Thai font family requires Thai-specific shaping algorithm? I don’t know (remember I don’t have these fonts). Anyway I think if the character is there, then this settings is something worth investigating.

Closing

It’s been years since I’ve seen video games has this level of Thai text support. Even games made by Thai developer has some kind of shortcoming (especially those made with Unity). I’d like to again applaud to Capcom for their afford of implementing Thai localization in Resident Evil: Village.

Now as I mentioned, there are problems with line spacing (and possible characters with long tails). This is something that people with lesser proficiency in Thai language might not be able to spot right away.This is something that is certainly possible to be fixed.

Finally, please let me says this with my broken Japanese :) カプコンさん、タイのローカライゼーションをどうもありがとうございました。

Appendix

The following fonts are used for illustration (using my font-render-tester).

  • Arundina Sans Copyright (c) 2003 by Bitstream, Inc. All rights reserved. Copyright (c) 2007 by Software Industry Promotion Agency (Public Organization) All rights reserved.
  • Noto Sans Thai Noto is a trademark of Google Inc. Noto fonts are open source. All Noto fonts are published under the SIL Open Font License, Version 1.1. Language data and some sample texts are from the Unicode CLDR project.
  • Laksaman Laksaman, based on TH Sarabun New. Copyright (c) 2014 Theppitak Karoonboonyanan. TH Sarabun New: Copyright (c) 2010-2011 by Software Industry Promotion Agency (Public Organization) (SIPA). All rights reserved.
  • Sarabun Sarabun, based on TH Sarabun New. Copyright 2018 The Sarabun Project Authors (https://github.com/cadsondemak/Sarabun)

Thai character names are based from Unicode standard.