Future of Text at Unity

Hi folks,

We want to share with you an update about the future of our Text technologies.

First of all, @Stephan_B has transitioned to a new role at Unity and will no longer be actively working with the core UI/Text team. Stephan will continue to apply his expertise to help customers be successful with their Unity projects.

Let’s take this moment to recognize Stephan’s contribution. TextMesh Pro started its life as a plugin which quickly became the de-facto choice for Unity users. Later on, Stephan and TMP joined the Unity family and continued to deliver tremendous value to our customers. Thank you Stephan and best of luck with your new adventure!

Since 2018 we have been working on gradually integrating TMP capabilities back into a core engine module with the ambition to improve our UI systems and the Unity Editor. The name of this module is TextCore. As of Unity 2021, TextCore powered UI Toolkit for Editor and Runtime UI. For this reason, TextCore is currently most visible to users through the UI Toolkit workflow, as described in the Unity manual. We are also now working on replacing the legacy text backend in IMGUI with TextCore as well.

Going forward, our efforts will be focused on TextCore and therefore, the functionality of the TextMesh Pro package will be fully integrated into the relevant parts of Unity. The specific integration of TextMesh Pro and UGUI will be hosted in the UGUI Package, where we can also expect the legacy Text components to now to be properly deprecated. The Text Mesh Pro package will no longer be added to new projects.

We are doing this to simplify the maintenance and evolution of the Text technical stack, but also to reduce the user confusion introduced by having this functionality in a separate package.

We are aware that some of you will be disappointed to lose the benefits of the package ecosystem for the Text features, especially access to preview features and the ability to modify source code. However, it is no longer possible for our team to maintain both the TextMesh Pro package and Text Core at the same time while addressing the larger problem of providing a stable, feature-rich, and high-performance Text foundation for Unity.

This transition will be the main priority for our development team. This means that until this fundamental change is completed, we will generally avoid adding new functionality to either Text Mesh Pro or TextCore.

Thanks for making this far into this message and please post feedback or questions in the thread.

5 Likes

Thanks for the update, I saw this in the beta changelog; New 2022.2.0b13 - TextMeshPro: Added support for Color Glyphs and extracting OpenType font features.
This sounds like a pretty big deal to me (and a great new milestone), am I understanding it right, that I can use color font icons now?

This mentions some changes we had to add in the core engine, which will enable color font icons in TextMesh Pro once the version supporting it gets released. No ETA available at this point though.

1 Like

Does this mean that we will eventually not need the TMP package? Where will the 3D Object > Text - TextMeshPro object go?

I am kind of concerned about this. I know in UIToolkit, line-height and other text features are still not implemented. Is there any timetable when these will be put in? Line-height is extremely important. Everything else from word spacing to paragraph spacing is already implemented.

Thanks for understanding

1 Like

Thanks for the update. I am a little confused - is the plan for TextMesh Pro to be deprecated? If so, when will the replacement be available and what should I do in the meantime?

I’ve been waiting for over a year for full kerning support to be fully added to TextMesh Pro so I can switch my project to TMP. It seems like this feature is finally in the pipeline as per spakment’s post but now I’m wondering if I shouldn’t be trying to switch to TMP anymore. Thanks.

Do I understand this correctly: Old Text system is being deprecated. TextMeshPro is basically being made into TextCore, so it’s more or less a renaming of sorts? Using tags and the workflow of using sprites and such is being kept? I am currently in the middle of creating a deep dive tutorial series for TextMeshPro (Christina Creates Games) and am wondering how this might change my plans going forward.

Did a bit of googling the day after asking this: It looks like it really is somewhat of a renaming to me. This was the most helpful thread I could find about it: Feedback wanted : new text engine TextCore is being called a “Direct adaption” in that thread and it looks like the features are going to be the same to me.

Hi as @ChristinaCreatesGames asked above we are also confused

please clarify
— A new system called TextCore will be added for 2021 an higher
— TextMeshPro will be deprecated
— legacy Text will be deprecated
— You are also now working on replacing the legacy text backend

you referenced 2021, please be more specific as 2021.1.0 = api 11.0.0 and higher ?

when you say “legacy Text” are you talking about Unity - Manual: Text ?

Please can you give more clear info about BIRP built-In pipeline

Hi @DEEnvironment :slight_smile: I did a bit of searching into this. I think you might find a few answers in this thread on the forums: https://discussions.unity.com/t/817240

1 Like

Yes, that’s correct, as explained in this passage:

Most likely the TMP text object will replace the legacy one.

Not for the moment, we’re just simplifying the ecosystem for now.

Yes, this is more or less a renaming and consolidation of packages.

2 Likes

TextCore has been introduced in 2021.2

That’s correct

2 Likes

Thank you for clearing it up :)!

When are the TMP preview package going to come out of preview i.e. 3.2 and 4.0?

@benoitd_unity
thanks for the reply

currently we have many assets that use legacy Text system in demo scenes as we still support some work in BIRP 2019.4 an when we used TextMesh the prefabs made in lower versions would break when porting up

as Legacy Text is the only system that works in all unity cycles it’s my hope you will not deprecated until the new system is fully backported in place …

Comment
legacy currently works with GizmoHandler so we can preset tgizmo Icons on/off for scene presets
it would be wonderful if TextCore could include similar GizmoHandler preset options linked into the Render Pipeline Asset :wink:

cheers

What is the timeframe for this?

Will there be some sort of tool that will transition our TMPro 3d text components to whatever the new component will be called and also convert our scripts?

1 Like

Please clarify this: Will 2022.2.0b13 be able to extract OpenType font features or not?
As the change log state: New 2022.2.0b13 - TextMeshPro: Added support for Color Glyphs and extracting OpenType font features.

I’m disappointed with the timeline of this feature development. It’s been SO LONG.

TextMesh Pro - *** Preview 3 Release of Version 2.2.0 and 3.2.0 Now Available! *** - Unity Forum I mean, last update is on Mar and it’s been whopping 8 months since :slight_smile:

1 Like

The FontEngine changes required to extract data from the GPOS and GSUB tables will be backported all the way to 2020.3 and should have already landed in 2022 and 2023.

Version 3.2.0-pre.3 already contains the functionality with respect to Kerning and Diacritical Mark coming from the GPOS table as well as Ligature data from the GSUB table.

A preview 4 is in the works to address minor issues that I could not foresee when I initially released preview 3.

I concur and apologize for the delays.

I initially planned to release this new functionality shortly after the release of preview 3 (hence why preview 3 already contains the code to access this new stuff) but had to deviate from that plan due to some new requirements from Google related to Color Glyphs (Emojis) which happen to use several additional OpenType features that I had not implemented or planned on supporting at that point.

Please note, the FontEngine changes that will be / have already landed in these new releases of the Unity Editor do have support for almost all OpenType features but will require newer versions of the package to leverage.

Until then, in 3.2.0-pre.3 and future 3.2.0-pre.4 only Glyph Positional Adjustment from the Kern and GPOS table will be supported, Mark-to-Base and Mark-to-Mark also from the GPOS table and Ligatures from the GSUB table as those are the only ones support in Font Assets.

In order to support the additional OpenType Features, the structure of the font asset and related tables will need to change to expose Scripts, Features and Lookups which will also require extensive changes to the Text Parser and Layout in order to support these.

3 Likes

That’s good news. Will try it and report back.

So, in the second quote here, what do you mean by “the TMP text object”?

Before I say anything else, a big thanks to Stephan for all their work in dragging Unity’s text support kicking and screaming into some sort of modernity. Even for all its faults, I can’t imagine having to have used the legacy Text elements for anything beyond a debug prompt, and TextMeshPro is a far superior alternative that produces pleasing results. (I remember a time when we were stuck fudging things together with a mixture of Flash-based SDF atlas generators and prayers…)

However, this transition is one that I am incredibly wary of.

For one, losing access to the source is a tragedy; there have been numerous times in the past where, in order to maintain a legacy project or work around an obscure issue, I have had to make changes or at the very least read through it to figure out what was going on. A few years ago, Unity were putting their all into open sourcing various sections of the engine to make life easier for developers, but with the current package manager strategy, that has been slowly going away (with no real reason, I might add, since the package manager can easily handle fetching from git repositories).

Secondly, I’ve experienced a TextMeshPro transition before (several, in fact). Obviously, this is an issue primarily with keeping older games up-to-date, but we manage a fairly large portfolio of legacy games that need to be routinely updated to meet platform holder requirements. From changes to how alignments are serialized (which required I write custom tooling to scour the project and correct them), to GUIDs being shuffled around (and the built-in GUID replacement tool not actually having the complete list of GUIDs of certain TMP versions, again requiring custom tooling), I am incredibly fearful of a core feature such as TextMeshPro being messed around yet again, for the sake of making your C# solutions easier to edit.

Finally, I am incredibly annoyed to hear that adding features is paused until this transition is complete. How many times have we heard this kind of thing from Unity at this point? While I highly praise TextMeshPro for being lightyears beyond the legacy components, it is still missing a fair number of features, some of which have been promised for a long time and continually require third-party workarounds to solve. Proper RTL support, OpenType, better kerning… I know these aren’t exactly easy tasks, but the entire point of a game engine is to take some of the harder jobs away from the game developer. I fear that now, with Stephan leaving the project and everything being rolled into the UI package (a system that Unity have already been neglecting and has supposedly been in maintenance mode for some time), TextMeshPro will be lost in the mire of projects, packages and features that get partly completed before being abandoned by management, or turned into a mess that becomes nigh-impossible to recommend actually using. (How’s that spline package going? DOTS? Tiny? Vector graphics? SRPs? Half the XR packages? PolyBrush? Input?)

Fingers crossed you can come up with a strategy that doesn’t cause headaches to the rest of us - but I’m not going to lie, if this transition ends up being painful, it might be the thing that finally drives us away and cause us to find an alternative platform to develop on.

15 Likes

I also really want to thank @Stephan_B for all of their work and support over the years. Truly one of the best at Unity in terms of communication/support and we were spoiled. So thank you for all of your efforts to make Text better in Unity and good luck with your future endeavors.

In terms of TextCore as you mentioned @benoitd_unity not having source access to this new text system is going to be very limiting. I’m glad more opentype functionality is being integrated and that this will be better integrated into Unity. The loss of source is going to be painful. For our project we needed to be able to add custom tags, modify shader source, and inherit from TMP labels in order to add per-vertex UV channels. Without source access this would have been extremely difficult if not impossible. Please consider this as you integrate TextCore to try to keep it extensible by users.

7 Likes