1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:57:35 +00:00

LibWeb: Don't truncate font sizes before scaling them to device pixels

This fixes an issue where fonts would often paint at the wrong sizes
with device pixel ratios other than 1.0.
This commit is contained in:
Andreas Kling 2023-03-15 11:00:11 +01:00
parent a4927f523b
commit 664f30a2c9
2 changed files with 5 additions and 3 deletions

View file

@ -527,13 +527,13 @@ static void paint_text_fragment(PaintContext& context, Layout::TextNode const& t
auto& font = fragment.layout_node().font();
auto scaled_font = [&]() -> RefPtr<Gfx::Font const> {
auto device_font_pt_size = context.enclosing_device_pixels(font.presentation_size());
FontSelector font_selector = { FlyString::from_deprecated_fly_string(font.family()).release_value_but_fixme_should_propagate_errors(), static_cast<float>(device_font_pt_size.value()), font.weight(), font.width(), font.slope() };
auto device_font_pt_size = font.point_size() * context.device_pixels_per_css_pixel();
FontSelector font_selector = { FlyString::from_deprecated_fly_string(font.family()).release_value_but_fixme_should_propagate_errors(), device_font_pt_size, font.weight(), font.width(), font.slope() };
if (auto cached_font = FontCache::the().get(font_selector)) {
return cached_font;
}
if (auto font_with_device_pt_size = font.with_size(static_cast<float>(device_font_pt_size.value()))) {
if (auto font_with_device_pt_size = font.with_size(device_font_pt_size)) {
FontCache::the().set(font_selector, *font_with_device_pt_size);
return font_with_device_pt_size;
}