// column is expected to be between startVisualColumn and endVisualColumn for this fragment
 int visualToLogicalColumn(int column) {
   int relativeLogicalColumn =
       delegate.visualToLogicalColumn(startX, getMinLogicalColumn(), column - startVisualColumn);
   return isRtl
       ? startLogicalColumn - relativeLogicalColumn
       : startLogicalColumn + relativeLogicalColumn;
 }