From 35875b68f584736086a22c6b88c7455084457681 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 17 May 2020 17:45:12 +0200 Subject: [PATCH] LibGfx: Add Font::width(u32* codepoints, size_t) This allows you to measure the width of a UTF-32 sequence. --- Libraries/LibGfx/Font.cpp | 10 ++++++++++ Libraries/LibGfx/Font.h | 1 + 2 files changed, 11 insertions(+) diff --git a/Libraries/LibGfx/Font.cpp b/Libraries/LibGfx/Font.cpp index ebb1933ab2..cb3861474f 100644 --- a/Libraries/LibGfx/Font.cpp +++ b/Libraries/LibGfx/Font.cpp @@ -255,4 +255,14 @@ int Font::width(const Utf8View& utf8) const return width; } +int Font::width(const u32* codepoints, size_t length) const +{ + if (length == 0) + return 0; + int width = (length - 1) * glyph_spacing(); + for (size_t i = 0; i < length; ++i) + width += glyph_or_emoji_width(codepoints[i]); + return width; +} + } diff --git a/Libraries/LibGfx/Font.h b/Libraries/LibGfx/Font.h index 1580f25e11..b71c2519ab 100644 --- a/Libraries/LibGfx/Font.h +++ b/Libraries/LibGfx/Font.h @@ -95,6 +95,7 @@ public: int width(const StringView&) const; int width(const Utf8View&) const; + int width(const u32* codepoints, size_t) const; String name() const { return m_name; } void set_name(const StringView& name) { m_name = name; }