Text system overhaul

Unreal Engine needs a better implementation of the text and font system.
Here is a list of things to change :

  • 3D Text support
  • Bug : Pixelated text in HUD Draw when the text is too big
  • Font Materials : Very frustrating, because they require offline fonts
  • Being able to show text in the world (this resonates with the 3D text idea)
  • Font importing : Why should someone care about offline or runtime ? They seem to be the same…

(TLDR)
How i think it should work :
You import your font by drag&drop. Then you have 3DTextComponents that take your font and the text you input and makes a 3D mesh out of it, that could be runtime or baked. If you want your font in UMG, you just use it directly without having to use a material.

They’re really not the same.

An offline font (also known as a bitmap font) is the older font system, and it imports a known font at a specific size to generate an offline font atlas (or may use a font atlas manually authored by an artist). They typically have poor kerning, don’t scale well (excluding distance field fonts), and don’t support any of the newer text rendering features (like bidirectional complex text shaping).

A runtime font (also know as a composite font) is the newer font system, and uses one or more TTF or OTF files to produce a font atlas at runtime, on demand, as glyphs are needed. They have much better kerning, scale well (since we just re-render the glyph at the correct size), and support all of the newer text rendering features.

Slate and UMG only support runtime fonts, Canvas supports both, and text render components only support offline fonts (although I have a bug open to investigate having them support runtime fonts too).

The only real advantage of offline fonts these days is being able to use a distance field font with a text render component in the world.

https://docs.unrealengine.com/latest/INT/Engine/UMG/UserGuide/Fonts/

Font materials can be used with runtime fonts in UMG. Font Materials and Outlines in Unreal Engine | Unreal Engine 5.3 Documentation

Sounds like you’re using an offline font and scaling it (are you using Canvas)?

Have you seen text render components? You can also place UMG UI in the world.

Ok, sound like I got rekt.
But anyways, it’s still very complicated.

No, I’m not using an offline font.
And what I mean by a 3D text is a really 3D with depth text. Not flat.
And it is still pixelated. Proof :


So if that’s not an offline font, I assume that’s text rendered via UMG?

Yes, this text is runtime and it’s used in UMG placed in 3D.

Hmm, sadly that’s expected, since you’re going to get texture filtering artefacts unless you’re using distance field fonts (which currently require offline fonts and text render components).

Tangentially related: If you need to create some 3d text before Epic has the time to make it and you have access to Houdini, it only takes a couple of minutes to set up. It’s not a runtime solution, but it might tide you over for a while. I made a video showing how to do it here: https://vimeo.com/212456354