Each glyph's x coordinate doesn't change (CTRunGetPositions), even when the glyphs move.
It happens with multiple fonts, both variable-width and fixed-width.
The layer's position doesn't move.
The NSAttributedString doesn't have any unexpected attributes.
The Line's origin is correct, and for monospaced fonts, width of the line divided by the number of characters in the line doesn't change (as long as you set textContainer.lineFragmentPadding to 0).
It happens even if lineFragmentPadding is 0.
Everything returned by lineMetrics(for:in:) seems fine.
I can't figure out if this is happening for sure. It almost looks like it gets fuzzier and then less fuzzy.