### Godot version

4.0.2.stable, 4.0.3.stable

### System information

Win10, i7-10870H, Intel UHD Graphics / GeForce RTX 3060 Laptop(31.0.15.3203)

### Issue description

In Compatibility mode Control nodes (tested Label, Button, LineEdit, RichTextLabel, probably others) with imported Font with LCD subpixel antialiasing enabled messes up non-standard font-color if there is Control with default font (or non LCD subpixel antialiased) present. It also somehow depends on node hierarchy and which nodes are currently visible.

https://github.com/godotengine/godot/assets/8860283/484f6479-7866-4f14-9071-06dccd539d80



### Steps to reproduce

1. import any font and enable LCD subpixel antialiasing for it;
2. Create at least 1 control with text with this font and at least 1 for default or non-LCDspa so that LCDspa font precedes non-LCDspa one in hierarchy;
3. Change default color for LCDspa font;
4. Move around so that you see only LCDspa node or both and observe unintended color change;
5. (optional) other LCDspa node positioned after non-LCDspa in hierarchy prevents color change when visible.

### Minimal reproduction project

[LCD_Subpixel_n_ColorRect_antialiasing_bug.zip](https://github.com/godotengine/godot/files/11556585/LCD_Subpixel_n_ColorRect_antialiasing_bug.zip)

src_rect = Rect2(np->source.position.x * texpixel_size.width, np->source.position.y * texpixel_size.height, np->source.size.x * texpixel_size.width, np->source.size.y * texpixel_size.height);
						state.instance_data_array[r_index].color_texture_pixel_size[0] = 1.0 / np->source.size.width;
						state.instance_data_array[r_index].color_texture_pixel_size[1] = 1.0 / np->source.size.height;
					} else {
						src_rect = Rect2(0, 0, 1, 1);
					}
				}
				state.instance_data_array[r_index].modulation[0] = np->color.r * base_color.r;
				state.instance_data_array[r_index].modulation[1] = np->color.g * base_color.g;
				state.instance_data_array[r_index].modulation[2] = np->color.b * base_color.b;
				state.instance_data_array[r_index].modulation[3] = np->color.a * base_color.a;
				state.instance_data_array[r_index].src_rect[0] = src_rect.position.x;
				state.instance_data_array[r_index].src_rect[1] = src_rect.position.y;
				state.instance_data_array[r_index].src_rect[2] = src_rect.size.width;
				state.instance_data_array[r_index].src_rect[3] = src_rect.size.height;
				state.instance_data_array[r_index].dst_rect[0] = dst_rect.position.x;
				state.instance_data_array[r_index].dst_rect[1] = dst_rect.position.y;
				state.instance_data_array[r_index].dst_rect[2] = dst_rect.size.width;
				state.instance_data_array[r_index].dst_rect[3] = dst_rect.size.height;
				state.instance_data_array[r_index].flags |= int(np->axis_x) << FLAGS_NINEPATCH_H_MODE_SHIFT;
				state.instance_data_array[r_index].flags |= int(np->axis_y) << FLAGS_NINEPATCH_V_MODE_SHIFT;
				if (np->draw_center) {
					state.instance_data_array[r_index].flags |= FLAGS_NINEPACH_DRAW_CENTER;
				}
				state.instance_data_array[r_index].ninepatch_margins[0] = np->margin[SIDE_LEFT];
				state.instance_data_array[r_index].ninepatch_margins[1] = np->margin[SIDE_TOP];
				state.instance_data_array[r_index].ninepatch_margins[2] = np->margin[SIDE_RIGHT];
				state.instance_data_array[r_index].ninepatch_margins[3] = np->margin[SIDE_BOTTOM];
				_add_to_batch(r_index, r_batch_broken);