Shaping a piece of text into an array of glyphs called a glyph run.
A glyph run contains enough info for both rasterization and positioning
of each glyph. It also contains cursor position info for each codepoint
(not glyph!). See below for the logic on computing these.
See the source code for more info.