I really enjoyed this author's "Complex Text Handling in WebKit" series from a few years back. They're spread over several months on the blog, so here are the direct links to each part, if anyone is interested:
This reads well and might have been called "when plain text meets bitmapped graphics output devices". There's a fair amount of Internationalization (I18N) knowledge required in the process, some of which is mentioned in passing.
Someone ought to write a companion post for keyboard input entry (including topics like input methods for Asian languages, bi-directional (BiDi) writing/editing order e.g. of semitic languages, various common keyboard layouts etc.).
Part 1: Encoding Systems, Code Points, and Code Units <https://litherum.blogspot.com/2013/11/complex-text-handling-...>
Part 2: Fonts <https://litherum.blogspot.com/2013/11/complex-text-handling-...>
Part 3: Codepoint to Glyph Mapping <https://litherum.blogspot.com/2014/02/complex-text-handling-...>
Part 4: Line Breaking <https://litherum.blogspot.com/2014/04/complex-text-handling-...>
Part 5: Bidirectional Processing <https://litherum.blogspot.com/2014/11/complex-text-handling-...>
Part 6: Run Layout <https://litherum.blogspot.com/2014/11/complex-text-handling-...>
Part 7: Width Calculations <https://litherum.blogspot.com/2014/11/complex-text-handling-...>
https://raphlinus.github.io/text/2020/10/26/text-layout.html
Someone ought to write a companion post for keyboard input entry (including topics like input methods for Asian languages, bi-directional (BiDi) writing/editing order e.g. of semitic languages, various common keyboard layouts etc.).