### Godot version

v4.0.2.stable.official [7a0977ce2]

### System information

Windows 10, not platform specific

### Issue description

Methods `get_character_line` and `get_character_paragraph` return wrong indices for characters that are first in the respective line/paragraph. See the attached screenshot.

![image](https://user-images.githubusercontent.com/892180/236546781-692603be-eb09-419e-822e-d4152a66d9b6.png)


### Steps to reproduce

Run attached project.

The script goes through all characters in `RichTextLabel` and prints the respective character, line index, and paragraph index. None of them should be -1 since we are iterating through valid indices.

### Minimal reproduction project

[RichTextLabel.zip](https://github.com/godotengine/godot/files/11409399/RichTextLabel.zip)

if (subtag_a[0] == "border") {
						Color color = Color::from_string(subtag_a[1], fallback_color);
						set_cell_border_color(color);
					} else if (subtag_a[0] == "bg") {
						Vector<String> subtag_b = subtag_a[1].split(",");
						_normalize_subtags(subtag_b);
						if (subtag_b.size() == 2) {
							Color color1 = Color::from_string(subtag_b[0], fallback_color);
							Color color2 = Color::from_string(subtag_b[1], fallback_color);
							set_cell_row_background_color(color1, color2);
						}
						if (subtag_b.size() == 1) {
							Color color1 = Color::from_string(subtag_a[1], fallback_color);
							set_cell_row_background_color(color1, color1);
						}
					} else if (subtag_a[0] == "padding") {
						Vector<String> subtag_b = subtag_a[1].split(",");
						_normalize_subtags(subtag_b);
						if (subtag_b.size() == 4) {
							set_cell_padding(Rect2(subtag_b[0].to_float(), subtag_b[1].to_float(), subtag_b[2].to_float(), subtag_b[3].to_float()));
						}
					}
				}
			}
			pos = brk_end + 1;
			tag_stack.push_front("cell");
		} else if (tag == "u") {
			
			push_underline();
			pos = brk_end + 1;