View Issue Details

IDProjectCategoryView StatusLast Update
0002987NoesisGUIC++ SDKpublic2026-03-24 21:11
Reportersaji8k Assigned Tojsantos  
PrioritynormalSeverityfeature 
Status assignedResolutionopen 
Target Version3.2 
Summary0002987: Use Multi-Channel Signed Distance Fields to get Sharper Text Corners
Description

When displaying text with NoesisGUI, the corners of each character are rounded and not sharp.

This is occurring because text in NoesisGUI is rendered using (Single-Channel) Signed Distance Fields.

Please add support using Multi-Channel Signed Distance Fields to rendering text. This would allow for sharp corners while still maintaining good performance.

Pretty much every bespoke engine uses MSDF these days
Godot - https://docs.godotengine.org/en/stable/tutorials/ui/gui_using_fonts.html
Evergine - https://evergine.com/new-font-and-text-feature/
Hazel - https://github.com/TheCherno/Hazel

Introduction to MSDF Text Rendering Video by TheCherno
https://www.youtube.com/watch?v=J26hm7r-k6A

Steps To Reproduce

Create a TextBlock with the Arial FontFamily and a huge FontSize (like 300).
Compare the visual output of Blend and NoesisGUI renderers.
In the Blend renderer, the corners of each character are sharp. In the NoesisGUI renderer, the corners of each character are rounded.

PlatformAny

Activities

jsantos

jsantos

2024-04-30 18:18

manager   ~0009440

Last edited: 2024-04-30 18:19

Planned to start working on this after 3.2.4 and first studio alpha.

We added support for Variable Fonts in 3.2.4, this is next.

Demond

Demond

2026-03-18 08:14

reporter   ~0012058

The Slug Algorithm has gone public! What do you think about its use?
https://terathon.com/blog/decade-slug.html
https://github.com/EricLengyel/Slug

jsantos

jsantos

2026-03-23 13:08

manager   ~0012088

It is a very good algorithm, but only for static vectors and requires a preprocessing step

jsantos

jsantos

2026-03-24 21:11

manager   ~0012103

Just a clarification to my previous comment: Slug requires significant preprocessing of bands and bounding boxes, which is not very compatible with dynamic geometry. I haven’t experimented with it yet, but I plan to do so soon. My impression, however, is that this will be quite CPU-intensive. If we don’t precompute the bands, it will likely become very GPU-intensive instead.

I understand that text is static, but we’re aiming for a solution that unifies everything—static paths, dynamic paths, and text—under the same technology. We’ve been working on this new architecture for quite some time.

That said, we could definitely add support for the .slug format and use it alongside TTF.

Issue History

Date Modified Username Field Change
2024-01-03 07:48 saji8k New Issue
2024-01-03 07:49 saji8k Description Updated
2024-01-04 14:29 jsantos Assigned To => jsantos
2024-01-04 14:29 jsantos Status new => assigned
2024-01-04 14:29 jsantos Target Version => 3.2
2024-04-30 18:18 jsantos Note Added: 0009440
2024-04-30 18:19 jsantos Note Edited: 0009440
2026-03-18 08:14 Demond Note Added: 0012058
2026-03-23 13:08 jsantos Note Added: 0012088
2026-03-24 21:11 jsantos Note Added: 0012103