I was struggling with the built-in text solution in Unity - no proper
Arabic/Hebrew/Hindi support, no emoji, font atlases causing git conflicts,
poor performance. Couldn’t find anything that actually solves this properly,
so I built my own text engine from scratch
UniText uses HarfBuzz + FreeType (same stack as Chrome and Firefox),
passes 891,757 official Unicode conformance tests, and runs 3-21x faster
with zero GC allocations. 150+ languages, full BiDi, native color emoji
from system fonts
It’s free and open source - I need real feedback from real projects
before going further with it
Thank you so much No real catch honestly - it’s just a lot of work under the hood. I’ve been obsessing over text rendering for a while, so most of the “magic” is just time spent solving annoying edge cases one by one
The main downside is that it’s not TMP - meaning no huge community, fewer tutorials, and if something breaks you’re kinda stuck with me fixing it lol. But that’s about it
Thank youuu Font handling was one of the main pain points that pushed me to build this in the first place. Would love to hear how it goes for you - feel free to open an issue if anything feels off
This is incredible work. We do tons of font processing for 43 languages, and have some many fixes and hacks for TMPro to function.
I will be testing out UniText as our main system here shortly!
I have a question after poking around a bit. How can I generate fonts that have bold, italic, etc versions of that font? (Example - If I specifically want to generate NotoSansBold characters in my NotoSansRegular font)
This is useful for example in the case of NotoSansArabic, if you use a bold rule on the regular font, we want it to render using the NotoSansArabicBold characters so it shows correctly, without changing the entire font asset to NotoSansArabicBold. This was something TMPro supported and was very useful.
Really interesting project. I wanted to test it and built a small comparison between TMP and UniText (1.0.0), where you can easily see the ZWJ issue described: WebGL Emoji/Text Comparison.
UniText 1.0.0 does not support InputFields and such, so I guess only v2 is an option for real projects. I still like that you put v1 out for anyone to test.
btw. I just tried your web demo
(I guess this is unitext 2.0?) and noticed that on MacOS with Firefox the emoji have leaking textures from other emoji (see e.g. Food or Nature column).