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:
parent
a4927f523b
commit
664f30a2c9
Notes:
sideshowbarker
2024-07-16 22:54:55 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/664f30a2c9
2 changed files with 5 additions and 3 deletions
|
@ -59,6 +59,8 @@ public:
|
|||
return clone;
|
||||
}
|
||||
|
||||
float device_pixels_per_css_pixel() const { return m_device_pixels_per_css_pixel; }
|
||||
|
||||
private:
|
||||
Gfx::Painter& m_painter;
|
||||
Palette m_palette;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue