support character-based position