bevy/crates/bevy_text/src
Rob Parrett 5c0e13f29b
Fix text alignment for unbounded text (#17270)
# Objective

Fixes #16783

## Solution

Works around a `cosmic-text` bug or limitation by triggering a re-layout
with the calculated width from the first layout run. See linked issue.

Credit to @ickshonpe for the clever solution.

## Performance

This has a significant performance impact only on unbounded text that
are not `JustifyText::Left`, which is still a bit of a bummer because
text2d performance in 0.15.1 is already not great. But this seems better
than alignment not working.

||many_text2d nfc re|many_text2d nfc re center|
|-|-|-|
|unbounded-layout-no-fix|3.06|3.10|
|unbounded-layout-fix|3.05  -0.2%|2.71 🟥 -12.5%|

## Testing

I added a centered text to the `text2d` example.

`cargo run --example text2d`

We should look at other text examples and stress tests. I haven't tested
as thoroughly as I would like, so help testing that this doesn't break
something in UI would be appreciated.
2025-01-11 05:45:32 +00:00
..
bounds.rs Simpler lint fixes: makes ci lints work but disables a lint for now (#15376) 2024-09-24 11:42:59 +00:00
error.rs Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
FiraMono-subset.ttf
font_atlas_set.rs Move TextureAtlas and friends into bevy_image (#17219) 2025-01-07 18:43:11 +00:00
font_atlas.rs Move TextureAtlas and friends into bevy_image (#17219) 2025-01-07 18:43:11 +00:00
font_loader.rs Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
font.rs Add core and alloc over std Lints (#15281) 2024-09-27 00:59:59 +00:00
glyph.rs Move TextureAtlas and friends into bevy_image (#17219) 2025-01-07 18:43:11 +00:00
lib.rs bevy_text: Apply #![deny(clippy::allow_attributes, clippy::allow_attributes_without_reason)] (#17285) 2025-01-10 19:38:12 +00:00
pipeline.rs Fix text alignment for unbounded text (#17270) 2025-01-11 05:45:32 +00:00
text2d.rs Allow clippy::too_many_arguments to lint without warnings (#17249) 2025-01-09 07:26:15 +00:00
text_access.rs Add Immutable Component Support (#16372) 2024-12-05 14:27:48 +00:00
text.rs Add builder method for TextFont::line_height (#17203) 2025-01-07 00:40:00 +00:00