From f9a7535fb8e00bf7aa82c64b87c1f3ce7b4ee2b3 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Sat, 13 Jan 2024 10:50:55 +0100 Subject: [PATCH] LibWeb: Scale font per-glyph in paint_text_shadow() With the support for unicode-ranges implemented, it's no longer accurate to assume that all glyphs within a fragment share the same font. --- Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp b/Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp index 39bc06a992..8fd3338e46 100644 --- a/Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/ShadowPainting.cpp @@ -587,14 +587,13 @@ void paint_text_shadow(PaintContext& context, PaintableFragment const& fragment, auto fragment_width = context.enclosing_device_pixels(fragment.width()).value(); auto fragment_height = context.enclosing_device_pixels(fragment.height()).value(); auto draw_rect = context.enclosing_device_rect(fragment.absolute_rect()).to_type(); - auto const& scaled_font = fragment.layout_node().scaled_font(context); auto fragment_baseline = context.rounded_device_pixels(fragment.baseline()).value(); Vector scaled_glyph_run; scaled_glyph_run.ensure_capacity(fragment.glyph_run().size()); for (auto glyph : fragment.glyph_run()) { glyph.visit([&](auto& glyph) { - glyph.font = scaled_font; + glyph.font = *glyph.font->with_size(glyph.font->point_size() * static_cast(context.device_pixels_per_css_pixel())); glyph.position = glyph.position.scaled(context.device_pixels_per_css_pixel()); }); scaled_glyph_run.append(move(glyph));