// column is expected to be between startVisualColumn and endVisualColumn for this fragment
 float visualColumnToX(int column) {
   return delegate.visualColumnToX(startX, column - startVisualColumn);
 }