diff --git a/crates/epaint/src/text/font.rs b/crates/epaint/src/text/font.rs index 16c5965e2..17adf979f 100644 --- a/crates/epaint/src/text/font.rs +++ b/crates/epaint/src/text/font.rs @@ -127,7 +127,7 @@ pub struct GlyphAllocation { pub(crate) id: ab_glyph::GlyphId, /// Unit: screen pixels. - pub advance_width: f32, + pub advance_width_px: f32, /// UV rectangle for drawing. pub uv_rect: UvRect, @@ -427,7 +427,7 @@ impl FontImpl { let allocation = GlyphAllocation { id: glyph_id, - advance_width: glyph_info.advance_width_unscaled.0 * metrics.px_scale_factor, + advance_width_px: glyph_info.advance_width_unscaled.0 * metrics.px_scale_factor, uv_rect, }; entry.insert(allocation); @@ -530,6 +530,8 @@ pub struct ScaledMetrics { pub pixels_per_point: f32, /// Scale factor, relative to the font's units per em (so, probably much less than 1). + /// + /// Translates "unscaled" units to physical (screen) pixels. pub px_scale_factor: f32, /// Vertical offset, in UI points (not screen-space). diff --git a/crates/epaint/src/text/text_layout.rs b/crates/epaint/src/text/text_layout.rs index d4ef299a6..945e66d48 100644 --- a/crates/epaint/src/text/text_layout.rs +++ b/crates/epaint/src/text/text_layout.rs @@ -49,7 +49,7 @@ impl PointScale { #[derive(Clone)] struct Paragraph { /// Start of the next glyph to be added. In screen-space / physical pixels. - pub cursor_x: f32, + pub cursor_x_px: f32, /// This is included in case there are no glyphs pub section_index_at_start: u32, @@ -63,7 +63,7 @@ struct Paragraph { impl Paragraph { pub fn from_section_index(section_index_at_start: u32) -> Self { Self { - cursor_x: 0.0, + cursor_x_px: 0.0, section_index_at_start, glyphs: vec![], empty_paragraph_height: 0.0, @@ -172,7 +172,7 @@ fn layout_section( paragraph.empty_paragraph_height = line_height; // TODO(emilk): replace this hack with actually including `\n` in the glyphs? } - paragraph.cursor_x += leading_space * pixels_per_point; + paragraph.cursor_x_px += leading_space * pixels_per_point; let mut last_glyph_id = None; @@ -204,12 +204,12 @@ fn layout_section( if let (Some(font_impl), Some(last_glyph_id), Some(glyph_id)) = (&font_impl, last_glyph_id, glyph_info.id) { - paragraph.cursor_x += font_impl.pair_kerning_screen_space( + paragraph.cursor_x_px += font_impl.pair_kerning_screen_space( &font_impl_metrics, last_glyph_id, glyph_id, ); - paragraph.cursor_x += extra_letter_spacing * pixels_per_point; + paragraph.cursor_x_px += extra_letter_spacing * pixels_per_point; } let (glyph_alloc, physical_x) = match font_impl.as_mut() { @@ -218,7 +218,7 @@ fn layout_section( &font_impl_metrics, glyph_info, chr, - paragraph.cursor_x, + paragraph.cursor_x_px, ), None => Default::default(), }; @@ -226,7 +226,7 @@ fn layout_section( paragraph.glyphs.push(Glyph { chr, pos: pos2(physical_x as f32 / pixels_per_point, f32::NAN), - advance_width: glyph_alloc.advance_width / pixels_per_point, + advance_width: glyph_alloc.advance_width_px / pixels_per_point, line_height, font_impl_height: font_impl_metrics.row_height, font_impl_ascent: font_impl_metrics.ascent, @@ -236,7 +236,7 @@ fn layout_section( section_index, }); - paragraph.cursor_x += glyph_alloc.advance_width; + paragraph.cursor_x_px += glyph_alloc.advance_width_px; last_glyph_id = Some(glyph_alloc.id); } } @@ -528,7 +528,7 @@ fn replace_last_glyph_with_overflow_character( row.glyphs.push(Glyph { chr: overflow_character, pos: pos2(physical_x as f32 / pixels_per_point, f32::NAN), - advance_width: replacement_glyph_alloc.advance_width, + advance_width: replacement_glyph_alloc.advance_width_px / pixels_per_point, line_height, font_impl_height: font_impl_metrics.row_height, font_impl_ascent: font_impl_metrics.ascent,