### Godot version

v4.2.dev4.official [549fcce5f]

### System information

Ubuntu 20.04 LTS

### Issue description

See title.

### Steps to reproduce

1. Create a new project
2. Create a csv file that includes the following
```
key,ar
key,placeholder
```
3. Add the generated `.translation` file to Project -> Project Settings... -> Localization
4. In Project -> Project Settings... -> Internationalization -> Locale, set `Test` to `ar`
5. Add a `LineEdit` node and type `-=[]{}`
6. Run the project, and notice that the text is on the right side, but the symbols are incorrectly in LTR (`-=[]{}`).  Correct output is `{}[]=-`
7. Back in the editor, add a single Arabic letter (any will do), and notice that `LineEdit` immediately (and correctly) flips the symbols, and the newly-added Arabic letter, to RTL.

**Notes**
- Identical behavior is seen with `TextEdit`.
- The purpose of steps 2-4 are to simulate an Arabic environment when the project is run, despite `OS.get_locale() == "en"` (or your system's current language).

### Minimal reproduction project

[rtlsymbols.zip](https://github.com/godotengine/godot/files/12525509/rtlsymbols.zip)
_FORCE_INLINE_ int64_t _generate_kashida_justification_opportunies(const String &p_data, int64_t p_start, int64_t p_end) {
	int64_t kashida_pos = -1;
	int8_t priority = 100;
	int64_t i = p_start;
	char32_t pc = 0;
	while ((p_end > p_start) && is_transparent(p_data[p_end - 1])) {
		p_end--;
	}
	while (i < p_end) {
		uint32_t c = p_data[i];
		if (c == 0x0640) {
			kashida_pos = i;
			priority = 0;
		}
		if (priority >= 1 && i < p_end - 1) {
			if (is_seen_sad(c) && (p_data[i + 1] != 0x200c)) {
				kashida_pos = i;
				priority = 1;
			}
		}
		if (priority >= 2 && i > p_start) {
			if (is_teh_marbuta(c) || is_dal(c) || (is_heh(c) && i == p_end - 1)) {
				if (is_connected_to_prev(c, pc)) {
					kashida_pos = i - 1;
					priority = 2;
				}
			}
		}
		if (priority >= 3 && i > p_start) {
			if (is_alef(c) || ((is_lam(c) || is_tah(c) || is_kaf(c) || is_gaf(c)) && i == p_end - 1)) {