summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGfx
diff options
context:
space:
mode:
authorMaciej <sppmacd@pm.me>2022-01-21 18:48:47 +0100
committerLinus Groh <mail@linusgroh.de>2022-01-22 00:26:23 +0000
commit8542d1da5a7559e944b9a1aa9fd26d86757a17b9 (patch)
tree91dca0ab53fea0465a92800a9baf75c1c4e4b2eb /Userland/Libraries/LibGfx
parent7a9284201728ab08af7b2e2c663eb4c8f5cc4c50 (diff)
downloadserenity-8542d1da5a7559e944b9a1aa9fd26d86757a17b9.zip
LibGfx: Always scale emojis to fit font height
Diffstat (limited to 'Userland/Libraries/LibGfx')
-rw-r--r--Userland/Libraries/LibGfx/BitmapFont.cpp2
-rw-r--r--Userland/Libraries/LibGfx/Painter.cpp18
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)