nidx, ntrail = playout:MoveCursorVisually(strong, oidx, otrail, dir)
If dir is positive, then the new position will cause the strong
or weak cursor to be displayed one position to right of where it was
with the old cursor position. If dir is negative, it will be
moved to the left.
In the presence of bidirectional text, the correspondence between logical and visual order will depend on the direction of the current run, and there may be jumps when the cursor is moved off of the end of a run.
Motion here is in cursor positions, not in characters, so a single call to this function may move the cursor over multiple characters when multiple characters combine to form a single grapheme.
oidx; if > 0, the cursor was at the trailing edge#G_MAXINT indicates that the cursor has been moved off the end of the layoutnidx to get the position where the cursor
should be displayed; this allows distinguishing the position at the beginning of one line from the position at the end of the
preceding line; nind is always on the line where the cursor should be displayed