Rendering text may seem simple, but it’s actually incredibly complicated. There is no “perfect” way to render text, and everything affects everything else. Supporting custom fonts, colors, and styles with line-wrapping and text-selection for arbitrary user input is a challenge. The text-rendering pipeline involves styling, layout, shaping, rasterization, and composition, but these steps aren’t as clean as they might seem. Characters are the smallest unit of Unicode, while ligatures are made up of several characters and multiple scalars. Emoji adds an extra level of complexity, with their own native colors and multiple colors. Subpixel Anti-Aliasing is a trick that can significantly improve text legibility, but it’s also a huge pain to deal with.
https://faultlore.com/blah/text-hates-you/