fix #35176: ottava layout in various special situations

The issue reports one particular case where the endpoint of an ottava line was not calculated well, but in investigation I found a number of others.  The code was relying on the width of the segment containing the last chord, and and that probably should work, but there are actually a number of case where the segment width is not set correctly.  So instead of using the segment width, I now loop through the chords in the segment myself and find the rightmost point.  I left the original code in place (ifdef'ed out) so we can switch back if we fix the segment width issues.  But there are a few other small fixes to line layout in this PR we'd want to keep in any case.