static _nextVisibleColumn(codePoint, visibleColumn, tabSize) {
        if (codePoint === 9 /* CharCode.Tab */) {
            return CursorColumns.nextRenderTabStop(visibleColumn, tabSize);
        }
        if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {
            return visibleColumn + 2;
        }
        return visibleColumn + 1;
    }
A column in a position is the gap between two adjacent characters. The methods here
work with a concept called "visible column". A visible column is a very rough approximation
of the horizontal screen position of a column. For example, using a tab size of 4:
```txt
|<TAB>|<TAB>|T|ext
|     |     | \---- column = 4, visible column = 9
|     |     \------ column = 3, visible column = 8
|     \------------ column = 2, visible column = 4
\------------------ column = 1, visible column = 0
```

**NOTE**: Visual columns do not work well for RTL text or variable-width fonts or characters.

**NOTE**: These methods work and make sense both on the model and on the view model.