Created attachment 182033
Screencast comparing the cursor movement of ligated with unligated text
I believe the problem is that LibreOffice (or writer) is measuring the text width in chunks to determine the cursor position, e.g. in the string “office” for the cursor at “o|ffice” it will measure the width of “o” to position the cursor, and in “of|fice” it will measure the width of “of” and so on. For ligatures where the width of the partial text is close enough to the with of the ligature component, things appear to work, but in the problematic cases here the difference is way off that the cursor appears to be jumping.
See the cursor movement in the attached screencast and compare the cursor position when it jumps with the unligated text below it, the cursor jumps to exactly where the unligated glyph is.
Created attachment 182033
Screencast comparing the cursor movement of ligated with unligated text
I believe the problem is that LibreOffice (or writer) is measuring the text width in chunks to determine the cursor position, e.g. in the string “office” for the cursor at “o|ffice” it will measure the width of “o” to position the cursor, and in “of|fice” it will measure the width of “of” and so on. For ligatures where the width of the partial text is close enough to the with of the ligature component, things appear to work, but in the problematic cases here the difference is way off that the cursor appears to be jumping.
See the cursor movement in the attached screencast and compare the cursor position when it jumps with the unligated text below it, the cursor jumps to exactly where the unligated glyph is.