mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:37:34 +00:00
LibGfx: Skip old-style emoji lookup for fonts that have color bitmaps
Ultimately, we should find a way to route all emoji access through the font code, but for now, this patch adds a special case for fonts that are known to have embedded color bitmaps so we can test them.
This commit is contained in:
parent
924d23353e
commit
552895da60
2 changed files with 6 additions and 3 deletions
|
@ -107,8 +107,10 @@ float ScaledFont::glyph_width(u32 code_point) const
|
||||||
template<typename CodePointIterator>
|
template<typename CodePointIterator>
|
||||||
static float glyph_or_emoji_width_impl(ScaledFont const& font, CodePointIterator& it)
|
static float glyph_or_emoji_width_impl(ScaledFont const& font, CodePointIterator& it)
|
||||||
{
|
{
|
||||||
|
if (!font.has_color_bitmaps()) {
|
||||||
if (auto const* emoji = Emoji::emoji_for_code_point_iterator(it))
|
if (auto const* emoji = Emoji::emoji_for_code_point_iterator(it))
|
||||||
return font.pixel_size() * emoji->width() / emoji->height();
|
return font.pixel_size() * emoji->width() / emoji->height();
|
||||||
|
}
|
||||||
|
|
||||||
return font.glyph_width(*it);
|
return font.glyph_width(*it);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1421,8 +1421,9 @@ void Painter::draw_glyph_or_emoji(FloatPoint point, Utf8CodePointIterator& it, F
|
||||||
++it;
|
++it;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// NOTE: We don't check for emoji
|
||||||
auto font_contains_glyph = font.contains_glyph(code_point);
|
auto font_contains_glyph = font.contains_glyph(code_point);
|
||||||
auto check_for_emoji = Unicode::could_be_start_of_emoji_sequence(it, font_contains_glyph ? Unicode::SequenceType::EmojiPresentation : Unicode::SequenceType::Any);
|
auto check_for_emoji = !font.has_color_bitmaps() && Unicode::could_be_start_of_emoji_sequence(it, font_contains_glyph ? Unicode::SequenceType::EmojiPresentation : Unicode::SequenceType::Any);
|
||||||
|
|
||||||
// If the font contains the glyph, and we know it's not the start of an emoji, draw a text glyph.
|
// If the font contains the glyph, and we know it's not the start of an emoji, draw a text glyph.
|
||||||
if (font_contains_glyph && !check_for_emoji) {
|
if (font_contains_glyph && !check_for_emoji) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue