You need to understand the Scintilla terminology.
`In this document, 'character' normally refers to a byte even when multi-byte characters are used.`
`Positions within the Scintilla document refer to a character or the gap before that character.`
`There are places where the caret can not go where two character bytes make up one character.`
All of which means "move the caret one position" is to the next legal byte location the caret can occupy. Approximately one display character.