LibFont: Font::get_glyph() now returns nullptr if glyph does not exist

This allows getting glyphs with a single hash lookup
This commit is contained in:
Bananymous 2024-05-31 13:05:07 +03:00
parent b2a4797d16
commit f12ffa92a0
2 changed files with 8 additions and 12 deletions

View File

@ -274,14 +274,4 @@ namespace LibFont
return result;
}
bool Font::has_glyph(uint32_t codepoint) const
{
return m_glyph_offsets.contains(codepoint);
}
const uint8_t* Font::glyph(uint32_t codepoint) const
{
return m_glyph_data.data() + m_glyph_offsets[codepoint];
}
}

View File

@ -19,8 +19,14 @@ namespace LibFont
uint32_t height() const { return m_height; }
uint32_t pitch() const { return m_pitch; }
bool has_glyph(uint32_t) const;
const uint8_t* glyph(uint32_t) const;
bool has_glyph(uint32_t codepoint) const { return glyph(codepoint) != nullptr; }
const uint8_t* glyph(uint32_t codepoint) const
{
auto it = m_glyph_offsets.find(codepoint);
if (it == m_glyph_offsets.end())
return nullptr;
return m_glyph_data.data() + it->value;
}
private:
static BAN::ErrorOr<Font> parse_psf1(BAN::ConstByteSpan);