Like how Half-life 2 (etc.?) used a font for weapon icons. I’m guessing TF2 and CSGO (smart way to easily use it wherever supports text). Though it’s difficult finding info on this without info about basic text instead.
No-color unicode ( 🛠 ) works everywhere, and can be made with Font Forge*, a bit clunky to me though. I wonder if newer node-based editors like Graphite/PixiEditor are better… or for (M)SDF fonts/textures.
I prefer textmesh** for the look… though color emojis ( 🎈 ) don’t work with this (even with a vertex-color-as-albedo material, trying SVG emoji fonts). Plus FontForge doesn’t handle color as far as I can see.
Label3D does support color, pixels instead of polygons (high scale or oversampling are options, but M.SignedDistance breaks color emojis). (also modulate_color_glyphs import setting seems to work in only 2D though)
* I’ve also tried Inkscape, didn’t like how glyphs are created/managed (also, text width)
** I want a low-poly font anyway, though even smooth fonts look interesting with a high curve-step
Not strictly necessary (I’m already using Blender for simple models with vertex colors, and polygons+labels also work for 2D or 3D via canvas layer), but fonts are a more interesting workflow. Easier HUDs or text grid map maybe.
Unfortunately I have nothing useful to add to this, but I do think this is a very interesting topic.
Emulating many of the various ways that Source is clever, within Godot, is I think a very good idea.
EDIT:
Ok maybe I do have something useful to add:
If you’re running into oddities between 2D and 3D text based nodes…
You could, for a HUD, just design an actual 2D node/scene as the HUD, that is then plastered over the 3D player’s view port, scales with resolution sizing, etc.
You could also, for things like making names appear over interactable items in 3D worlds… don’t draw the text in 3D, with 3D text nodes.
Have your 2D HUD scene simply ‘see’ that 3D object, that 3D object is a class that has a property that defines its ‘DisplayText’, and then the player has a sphere check around them, or a ‘center of player vision’ check, maybe a cone… that builds up a buffer of ‘things close enough we should be drawing text for’ and ‘things too far away for that’, as the player’s view moves around.
The 3D position data, and the display text data is then sent to the 2D HUD scene/node, translated from 3D position into 2D screen position, and then the actual text is rendered purely in 2D.
I just tested 2D text out a bit, spent quite a bit of time trying to fix aliasing (I had oversampling set too high, seems like that should be noted if not just 1.0 being default) which is the sort of problem that Textmesh does not have.
With 2D text I do like that shadow (combined with other colors) really makes it feel theme-like (plus outline can fill in the negative space, making non-color emojis look better with the right color). Stacked is even cooler (3D effect).
So if I keep it to 1 color, I can use the same font for each type of text:

Color emojis still have broken outlines though. With label3D oversampling doesn’t seem to work as well* (smaller pixel size+larger font for text clarity–>worse emoji outline alignment) but even for some characters alignment is even off in 2D (balloon, hammer&wrench are fine; eye, fire are not). Could be a font issue though, but the 2 I’ve tried are broken in slightly different ways.
* MSDF could work for single-color, but it messes up the fire icon I have (and makes straight lines a bit wobbly). Better for more standard fonts/designs, I guess.
So, just sort of a mess… simple text is fine, but even if color could be injected per-glyph (like if every vertex on the fire were set to yellow) that would add depth (I don’t know if that’d be a script, add-on, or some context/function in low-level shader code but it’s probably beyond me).
Well, I now definitely have nothing useful to add to this, you’ve explored this whole area much more in depth than I have!
If you do come up with a kind of optimal paradigm you find very useful, I would highly suggest adding/uploading a generalized version of it it to the … godot ‘market’, whatever its called, as an addon or template!


