diff options
author | Maciej <sppmacd@pm.me> | 2022-01-21 18:48:47 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-01-22 00:26:23 +0000 |
commit | 8542d1da5a7559e944b9a1aa9fd26d86757a17b9 (patch) | |
tree | 91dca0ab53fea0465a92800a9baf75c1c4e4b2eb /Userland/Libraries/LibGfx | |
parent | 7a9284201728ab08af7b2e2c663eb4c8f5cc4c50 (diff) | |
download | serenity-8542d1da5a7559e944b9a1aa9fd26d86757a17b9.zip |
LibGfx: Always scale emojis to fit font height
Diffstat (limited to 'Userland/Libraries/LibGfx')
-rw-r--r-- | Userland/Libraries/LibGfx/BitmapFont.cpp | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibGfx/Painter.cpp | 18 |
2 files changed, 8 insertions, 12 deletions
diff --git a/Userland/Libraries/LibGfx/BitmapFont.cpp b/Userland/Libraries/LibGfx/BitmapFont.cpp index 6d2f1b6ee6..7653c1f308 100644 --- a/Userland/Libraries/LibGfx/BitmapFont.cpp +++ b/Userland/Libraries/LibGfx/BitmapFont.cpp @@ -314,7 +314,7 @@ int BitmapFont::glyph_or_emoji_width_for_variable_width_font(u32 code_point) con auto* emoji = Emoji::emoji_for_code_point(code_point); if (emoji == nullptr) return glyph_width(0xFFFD); - return emoji->size().width(); + return glyph_height() * emoji->width() / emoji->height(); } int BitmapFont::width(StringView view) const { return unicode_view_width(Utf8View(view)); } diff --git a/Userland/Libraries/LibGfx/Painter.cpp b/Userland/Libraries/LibGfx/Painter.cpp index d1d131b2fa..d58b506e10 100644 --- a/Userland/Libraries/LibGfx/Painter.cpp +++ b/Userland/Libraries/LibGfx/Painter.cpp @@ -1226,17 +1226,13 @@ FLATTEN void Painter::draw_glyph(IntPoint const& point, u32 code_point, Font con void Painter::draw_emoji(IntPoint const& point, Gfx::Bitmap const& emoji, Font const& font) { - if (!font.is_fixed_width()) - blit(point, emoji, emoji.rect()); - else { - IntRect dst_rect { - point.x(), - point.y(), - font.glyph_width('x'), - font.glyph_height() - }; - draw_scaled_bitmap(dst_rect, emoji, emoji.rect()); - } + IntRect dst_rect { + point.x(), + point.y(), + font.glyph_height() * emoji.width() / emoji.height(), + font.glyph_height() + }; + draw_scaled_bitmap(dst_rect, emoji, emoji.rect()); } void Painter::draw_glyph_or_emoji(IntPoint const& point, u32 code_point, Font const& font, Color color) |