diff --git a/Userland/Libraries/LibGfx/BitmapFont.cpp b/Userland/Libraries/LibGfx/BitmapFont.cpp index 010d7c48d3..60ad4b16f0 100644 --- a/Userland/Libraries/LibGfx/BitmapFont.cpp +++ b/Userland/Libraries/LibGfx/BitmapFont.cpp @@ -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(), + }; +} + } diff --git a/Userland/Libraries/LibGfx/Font.h b/Userland/Libraries/LibGfx/Font.h index 27c17aa5f2..fb680685a8 100644 --- a/Userland/Libraries/LibGfx/Font.h +++ b/Userland/Libraries/LibGfx/Font.h @@ -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 { public: virtual NonnullRefPtr clone() const = 0; virtual ~Font() {}; + FontMetrics metrics(u32 code_point) const; + virtual u8 presentation_size() const = 0; virtual u16 weight() const = 0; diff --git a/Userland/Libraries/LibGfx/Forward.h b/Userland/Libraries/LibGfx/Forward.h index 92fbaff5f8..2c4baeb033 100644 --- a/Userland/Libraries/LibGfx/Forward.h +++ b/Userland/Libraries/LibGfx/Forward.h @@ -14,6 +14,7 @@ class Color; class DisjointRectSet; class Emoji; class Font; +class FontMetrics; class GlyphBitmap; class ImageDecoder;