diff --git a/crates/bevy_ui/src/widget/label.rs b/crates/bevy_ui/src/widget/label.rs index c8b2826dbb..94d8cc8f4c 100644 --- a/crates/bevy_ui/src/widget/label.rs +++ b/crates/bevy_ui/src/widget/label.rs @@ -32,12 +32,16 @@ impl Label { rect: Com, color_material_handle: Com>, ) { + // ensure the texture is at least 1x1 + let width = rect.size.x().max(1.0); + let height = rect.size.y().max(1.0); + if let Some(font) = fonts.get(&label.font) { let texture = font.render_text( &label.text, label.color, - rect.size.x() as usize, - rect.size.y() as usize, + width as usize, + height as usize, ); let material = color_materials.get_or_insert_with(*color_material_handle, || ColorMaterial::from(Handle::::new())); diff --git a/examples/ui/ui.rs b/examples/ui/ui.rs index d7e8ff6bf9..85944484e1 100644 --- a/examples/ui/ui.rs +++ b/examples/ui/ui.rs @@ -9,6 +9,7 @@ fn main() { fn setup( command_buffer: &mut CommandBuffer, + asset_server: Res, mut textures: ResMut>, mut materials: ResMut>, ) { @@ -26,6 +27,8 @@ fn setup( let texture = Texture::load(TextureType::Png( "assets/branding/bevy_logo_dark_big.png".to_string(), )); + + let font_handle = asset_server.load("assets/fonts/FiraSans-Bold.ttf").unwrap(); let aspect = texture.aspect(); let texture_handle = textures.add(texture); @@ -66,6 +69,21 @@ fn setup( material: materials.add(Color::rgb(0.02, 0.02, 0.02).into()), ..Default::default() }) + .add_children(|builder| { + builder.add_entity(LabelEntity { + node: Node::new( + math::vec2(0.0, 0.0), + Anchors::TOP_LEFT, + Margins::new(10.0, 200.0, 40.0, 10.0), + ), + label: Label { + text: "Text Label".to_string(), + font: font_handle, + ..Default::default() + }, + ..Default::default() + }) + }) // right vertical fill .add_entity(UiEntity { node: Node::new(