# Objective
Currently text is recomputed unnecessarily on any changes to its color,
which is extremely expensive.
## Solution
Split up `TextStyle` into two separate components `TextFont` and
`TextColor`.
## Testing
I added this system to `many_buttons`:
```rust
fn set_text_colors_changed(mut colors: Query<&mut TextColor>) {
    for mut text_color in colors.iter_mut() {
        text_color.set_changed();
    }
}
```
reports ~4fps on main, ~50fps with this PR.
## Migration Guide
`TextStyle` has been renamed to `TextFont` and its `color` field has
been moved to a separate component named `TextColor` which newtypes
`Color`.
		
	
			
		
			
				
	
	
		
			10 lines
		
	
	
		
			438 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			10 lines
		
	
	
		
			438 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# B0005
 | 
						|
 | 
						|
A runtime warning.
 | 
						|
 | 
						|
Separate font atlases are created for each font and font size. This is expensive, and the memory is never reclaimed when e.g. interpolating `TextFont::font_size` or `UiScale::scale`.
 | 
						|
 | 
						|
If you need to smoothly scale font size, use `Transform::scale`.
 | 
						|
 | 
						|
You can disable this warning by setting `TextSettings::allow_dynamic_font_size` to `true` or raise the limit by setting `TextSettings::soft_max_font_atlases`.
 |