use real max glyph height

 - avoids breakage on fonts lacking an `X` glyph (#2506)
 - avoids needing to create and mutate a temporary glyph (#2516)
 - lots of minor visual changes - mostly improvements notably more correct collision boxes for lines with tall glyphs

too many minor visual tests for github's pull request viewer, so will update them incrementally in next commits.