Text Rendering Hates You
Rendering text, how hard could it be? As it turns out, incredibly hard! To my knowledge, literally no system renders text “perfectly”. It’s all best-effort, although some efforts are more important than others.
Visit gankra.github.io → On Hacker News Sep 2019 – Apr 2022
Software Engineering 6Programming Languages 4Systems & Performance 1Design & UX 1
Rendering text, how hard could it be? As it turns out, incredibly hard! To my knowledge, literally no system renders text “perfectly”. It’s all best-effort, although some efforts are more important than others.
Phantomderp and I have both recently been very aligned on a particular subject: being extremely angry about C ABIs and trying to fix them . Where we’re not aligned is why we’re mad about them.
For those who don’t follow Swift’s development, ABI stability has been one of its most ambitious projects and possibly it’s defining feature, and it finally shipped in Swift 5 . The result is something I find endlessly fascinating, because I think Swift has pushed the notion of ABI stability farther than any language…
I literally wrote the book on unsafe Rust . And the book on pointers in Rust . And redesigned the Rust’s pointer APIs . And designed the standard library’s abstraction for unsafe heap-allocated buffers . And maintain the alternative Vec layout .
Over the years I’ve found myself with a weird amount of knowledge about how types and ABIs in Rust work, and I wanted to write it all down in one place so that… it’s written down in one place. Much of this information can or should be found in the Rust Language Reference and the Rustonomicon .
In my previous article I looked at the ways that Rust could be better at pointers. Half of the problems were fundamental issues that affect basically every programming language that lets you mess with pointers directly, and the other half were rust-specific issues. My article also proposed two solutions: for the…