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…

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.

Font materials can be used with runtime fonts in UMG.

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:

Bitmap fonts are an important category of fonts, that allow you to create highly detailed, complex custom typography, that .ttfs font could never be able to.
And it’s precisely because they’re not robotized and converted into 101011101 functions is why they’re different and have the potential to be much more original and better looking than vector fonts.
They are especially important for video games, where they can often improve the atmosphere of a game. There are countless examples of games where they have been done well. They’re just harder to implement. They’re like a " harder work, bigger gains " kind of fonts. Why don’t you do your homework and look at the countless examples of bitmap fonts used in big games!

Weeeeeee , they have problems, they can’t scale well, they “typicaly” have bad kerning, weeee. a.k.a. as the robot programmers we are, these type of fonts pose problems for us! They’re too hard to manage! Weeeee. Let’s just get rid of it, because we’re too lazy to understand them. They’re not robotic like our minds.