Include font assets for TextMeshPro in client and SDK
100の人
TextMeshPro has a number of advantages over traditional Text components, such as the ability to display characters at a fixed size of less than 1m without having to fiddle with the scale of the Transform.
However, if font assets that support a large number of characters is uploaded as world data, users will need to download them for each world. This is a problem if downlink speed of worlds visitors is slow, or if its is a Quest world with 50 MB limit.
Can save file size by limiting the font assets to characters used in the world, but it makes TextMeshPro not easy to use.
I want VRChat client and SDK to include Noto fonts and the like as font assets for TextMeshPro beforehand, so that they are excluded from the world uploads and downloads.
Google Noto Fonts: https://www.google.com/get/noto/
Log In
kaikoga
I have created a Udon world that displays arbitrary multi language (that means at least I need Japanese and Korean support) user input with rich text.
Prebaking a font atlas is impossible in such case because the character set is so large, so I've fallen back into dynamic TextMesh Pro font assets.
NotoSansCJKjp was what I went after (*1): https://github.com/googlefonts/noto-cjk/tree/main/Sans
*1: because my primary target was Japanese, but there may be other choices.
The system requires including the font asset, which costs about 12MB~13MB or so.
To have a nicer bold font, I have also included the bold variant, which costs another 12MB~13MB.
As a result, I have created a world which download total size 27MB almost consists entirely of font assets.
Although Quest world limit is relaxed into 100MB in present days, I would have been happy if this download size could have been saved, and Udon creators dealing with CJK text have reasonable choices other than blindly falling back into Legacy uGUI Text and Arial.
TCL
You can avoid including a large font atlas with your world by having TextMesh Pro use a dynamic font asset. This will cause it to render the characters as they are needed the same way Unity's built-in Text component does. Here's a tutorial from the TextMesh Pro developer: https://www.youtube.com/watch?v=NY1xKqCIj3c
kazu(かず)
TCL:
But this process remain world includes font. each world should be download TMP using fonts.
And he said:
Can save file size by limiting the font assets to characters used in the world, but it makes TextMeshPro not easy to use.
.100の人
TCL: Dynamic fonts are also problematic in terms of load.