LibGfx: Add a simple Gfx::FontMetrics and Gfx::Font::metrics(code_point)

This is used to get a handy set of glyph metrics.
This commit is contained in:
Andreas Kling 2021-09-23 13:12:11 +02:00
parent 3d36e4d944
commit d7586aff53
Notes: sideshowbarker 2024-07-18 03:29:08 +09:00
3 changed files with 20 additions and 0 deletions

View file

@ -373,4 +373,14 @@ Font const& Font::bold_variant() const
return *m_bold_variant;
}
FontMetrics Font::metrics(u32 code_point) const
{
return FontMetrics {
.size = (float)presentation_size(),
.x_height = (float)x_height(),
.glyph_width = (float)glyph_width(code_point),
.glyph_spacing = (float)glyph_spacing(),
};
}
}

View file

@ -81,11 +81,20 @@ private:
int m_ascent;
};
struct FontMetrics {
float size { 0 };
float x_height { 0 };
float glyph_width { 0 };
float glyph_spacing { 0 };
};
class Font : public RefCounted<Font> {
public:
virtual NonnullRefPtr<Font> clone() const = 0;
virtual ~Font() {};
FontMetrics metrics(u32 code_point) const;
virtual u8 presentation_size() const = 0;
virtual u16 weight() const = 0;

View file

@ -14,6 +14,7 @@ class Color;
class DisjointRectSet;
class Emoji;
class Font;
class FontMetrics;
class GlyphBitmap;
class ImageDecoder;