From 03a4f2c1815a8e91577bd4a293a2ff8c513f8240 Mon Sep 17 00:00:00 2001 From: valadaptive Date: Mon, 8 Sep 2025 04:43:07 -0400 Subject: [PATCH] Stop accumulating rounding error on purpose --- crates/epaint/src/text/font.rs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/crates/epaint/src/text/font.rs b/crates/epaint/src/text/font.rs index 3c3b4d451..e6991269d 100644 --- a/crates/epaint/src/text/font.rs +++ b/crates/epaint/src/text/font.rs @@ -209,8 +209,6 @@ impl FontImpl { last_glyph_id: ab_glyph::GlyphId, glyph_id: ab_glyph::GlyphId, ) -> f32 { - // Round to an even number of physical pixels to get even kerning. - // See https://github.com/emilk/egui/issues/382 self.ab_glyph_font.kern_unscaled(last_glyph_id, glyph_id) * metrics.px_scale_factor / metrics.pixels_per_point } @@ -224,19 +222,13 @@ impl FontImpl { let descent = (self.ab_glyph_font.descent_unscaled() * pt_scale_factor).round_ui(); let line_gap = (self.ab_glyph_font.line_gap_unscaled() * pt_scale_factor).round_ui(); - // Round to an even number of physical pixels to get even kerning. - // See https://github.com/emilk/egui/issues/382 - let px_scale_factor = self - .ab_glyph_font - .px_scale_factor((font_size * self.tweak.scale * pixels_per_point).round()); + let scale = font_size * self.tweak.scale * pixels_per_point; + let px_scale_factor = self.ab_glyph_font.px_scale_factor(scale); - let y_offset_points = ((font_size * self.tweak.scale * self.tweak.y_offset_factor) + let y_offset_in_points = ((font_size * self.tweak.scale * self.tweak.y_offset_factor) + self.tweak.y_offset) .round_ui(); - // Round to closest pixel: - let y_offset_in_points = (y_offset_points * pixels_per_point).round() / pixels_per_point; - ScaledMetrics { pixels_per_point, px_scale_factor,