@mcc getting very close to completing the full circle where we need build scripts to generate cmake files which generate build scripts which compile your program.
It looks like at some point Godot ran into this too but they opted not to fix it, since apparently it's not actually compliant to have contours intersect themselves https://github.com/godotengine/godot/issues/52247
but even though it's not compliant, a huge portion of Google's own fonts do this all over the place. Maybe because their Skia library automatically fixes them when it parses the contours haha
Actual Solution! It seems like the open source FontForge (https://fontforge.org/en-US/) actually has a command to remove overlaps like this, and it can run on the entire font and re-export. And it worked extremely well!
so at this point I think I either 1) try to solve intersecting shapes, 2) use msdfgen's offline cli renderer instead of doing this in real time, or 3) just go back to good old stb_truetype and render out fonts at specific sizes :D
I've been using MSDF fonts for a little bit, (https://github.com/Chlumsky/msdfgen) but have been running into issues where a lot of fonts don't render right. Finally figured out that it doesn't play well with contours that intersect themselves... I looked into how the msdfgen cli resolves it and they convert the shapes to google's Skia and back, which "fixes" all the intersects lol
few thoughts porting this thing from C++ to C#: - C# is WAY faster to compile. 4s for a clean Release build - C# binaries are larger & vary considerably (AOT? Including runtime? Trimming?) - I feel like on average C++ is faster but when taking screenshots just now C# was
framerate should be taken with a big grain of salt - just whatever it happened to be when I took a screenshot back to back. also C++ one is doing slightly more since I haven't ported everything (ex the HUD, plus that ImGui window being open).
but my main point here is that C# is definitely 100% fast enough for anything I will ever need it to do. The C++ gains aren't a good trade off for me.
If you're starting a new project you should think very carefully about any closed source or proprietary software you use because all of them can pull stuff like Unity is doing at any time.