Just chiming in to share how some of my users are handling localization for Chinese, Japanese and Korean and Latin based languages.
Most Studios will have language files which contain all the text / known characters used in their project and for each given language / groups of languages. Using the “Characters from File” option in the TextMesh Pro Font Asset Creator, they will then create the necessary font assets which will contains these characters for those languages or groups of languages.
For Latin based languages and given their character set is limited, users will typically create a single (Primary) font asset for each of the fonts they plan on using (ie. Helvetica, Arial, Impact, etc.). Sometimes, users will break up Cyrillic and Greek into another or two additional font assets and assign them as Fallback to the Primary.
For Chinese, Japanese and Korean and given their character sets are much larger, users will create one Primary Font Asset which contains all the known characters used in the project for each of those languages. Although the Chinese language contains over 60,000 characters, even text heavy games rarely contain more than 1,000 to 1,500 characters. Most of the time between Simplified Chinese and Traditional Chinese, you end up with less than 1,000 characters which easily fits into a single font asset.
Handling the known text for any project and Latin based languages is usually as described above and fairly straightforward. Handling user input / unknown characters for Chinese, Japanese and Korean is where it gets more complicated.
Prior to the introduction of the Fallback system in TextMesh Pro which allows characters to be distributed into multiple font assets, many TextMesh Pro users would create their font assets as described above for the known text and actually continue to use Unity’s Dynamic Font System for the unknown text where user input is required. Given the known text tends to be larger and more stylized where the improved text rendering and dynamic styling capabilities of TextMesh Pro shine most, this worked great and given user input text tends to be smaller and plain in terms of style and formatting, using Unity’s font system worked fine for them.
Now since the introduction of the Fallback system many users now use the Fallback system to handle even the unknown characters. For example, in the case of Chinese support, users will still create a Primary font asset which contains all the known Simplified and Traditional Chinese characters used in the project. Then for the unknown text (user input), they will create potentially 3 additional font assets which will be used as Fallback and assigned to the Primary Chinese font asset. Again although the Chinese language contains over 60,000 characters, the Chinese government has published a list of 8,105 characters which is known as the Table of General Standard Chinese Characters which are essentially all the characters found in electronic media. This table is split into 3 groups of 3500, 3000 and 1605 characters. So, again the Primary font asset will contains all the known characters, the first fallback will contain the 3,500 minus those in the primary. The 2nd fallback will contains the 3,000 minus those in the primary and lastly, the third fallback will contain the remaining 1,605 minus those in the primary. Depending on how many characters the primary actually contains, it might be possible to only need two fallbacks instead of 3 to handle the Chinese language text.
The process for Japanese and Korean is similar although for Korean you will want to include all 11,272 Hangul characters which can easily fit into (1) primary and 2 to 3 Fallback. Again note these fallbacks are only needed to support user input / unknown text.
Like I mentioned before, when you look at the actual number of characters used in a project even if it supports Chinese, Japanese and Korean, it is surprising how few unique characters are actually used.
Basically everything I covered in this post is covered in the following video about the Font Asset Creation process in TextMesh Pro. The following video covers the Fallback system and how you can also use icon / symbol font libraries like Font Awesome as well. The Fallback system has also been improved since those videos were created where it is not possible to assign Fallback font assets to the fallback themselves. Sprite Assets can now also be used as Fallback.
Anyway, this is a pretty long post so I’ll stop there. Should you have additional questions about any of this, please feel free to ask 