Text

I picture gives you a thousand words when you only need one

There are three parts to drawing text in a game, the font, the texture and the glyph information. Drawing text in 3D is the same but you draw the text to a texture and then draw a surface with the texture.

The Font

This is the style of the text you will use. There exist many font's and you need to pick the one and make sure you have the license for it.

Texture

This is a texture that contain the characters you will use in the game. It can be pre-made with all the characters you need or created when the game is running.

Offline

With a offline system you create all the characters you will use in a texture. As the font's are put in the texture they will have a set style and size.

Online

By drawing the fonts when the game is running you can use more options such as different sizes and bold settings. When you need a character of a certain style it is drawn to the texture if it does not exist there already. The font rendering is a bit slow but it only need to be done once and can then use any characters that the font support.

To render the font's you can use FreeType.

Glyph Info

To draw the text from the texture you also need the glyph info. It's a data structure where you have information about each character. It's position in the texture, how much to advance the position of the next character when this is drawn and other information.

Reference

Text Rendering Hates You - 2019

WinFontRender - 2019

16xAA font rendering using coverage masks, part I, part II and part III - 2018

GPU-Centered Font Rendering Directly from Glyph Outlines

Glyphs, shapes, fonts, signed distance fields.


Rendering text

https://babylonjs.medium.com/rendering-text-bf3bc53f7c2e