### Godot version

8449592d92eaeef990f5502b419d491ee3eeb7a6

### System information

Windows 11

### Issue description

Zooming in the script editor on an empty script freezes the entire editor for a few seconds, but if the file is large then it freezes for 4-5 seconds (which is unacceptable). Looks like a recent regression.

### Steps to reproduce

Just zoom in/out on the large script file.

### Minimal reproduction project

N/A
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
	ERR_FAIL_COND_V(!sd, false);
	MutexLock lock(sd->mutex);
	if (!sd->valid) {
		_shaped_text_shape(p_shaped);
	}
	if (sd->line_breaks_valid) {
		return true; 
	}
	const UChar *data = sd->utf16.get_data();
	if (!sd->break_ops_valid) {
		sd->breaks.clear();
		sd->break_inserts = 0;
		UErrorCode err = U_ZERO_ERROR;
		int i = 0;
		while (i < sd->spans.size()) {
			String language = sd->spans[i].language;
			int r_start = sd->spans[i].start;
			while (i + 1 < sd->spans.size() && language == sd->spans[i + 1].language) {
				i++;
			}
			int r_end = sd->spans[i].end;
			UBreakIterator *bi = ubrk_open(UBRK_LINE, (language.is_empty()) ? TranslationServer::get_singleton()->get_tool_locale().ascii().get_data() : language.ascii().get_data(), data + _convert_pos_inv(sd, r_start), _convert_pos_inv(sd, r_end - r_start), &err);
			if (U_FAILURE(err)) {