TGUI 1.11
Loading...
Searching...
No Matches
Font.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2025 Bruno Van de Velde (vdv_b@tgui.eu)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef TGUI_FONT_HPP
26#define TGUI_FONT_HPP
27
28#include <TGUI/String.hpp>
29#include <TGUI/Rect.hpp>
30
31#include <cstdint>
32#include <string>
33#include <cstddef>
34#include <memory>
35
37
38namespace tgui
39{
40 class BackendFont;
41
45 struct TGUI_API FontGlyph
46 {
47 float advance = 0;
48 FloatRect bounds;
49 UIntRect textureRect;
50 };
51
55 class TGUI_API Font
56 {
57 public:
58
63 static void setGlobalFont(const Font& font);
64
69 TGUI_NODISCARD static Font getGlobalFont();
70
74 Font(std::nullptr_t = nullptr) noexcept;
75
81 Font(const String& id);
82
88 Font(const char* id);
89
95 Font(const void* data, std::size_t sizeInBytes);
96
103 Font(std::shared_ptr<BackendFont> backendFont, String id);
104
110 TGUI_NODISCARD const String& getId() const;
111
115 operator bool() const;
116
120 TGUI_NODISCARD bool operator==(std::nullptr_t) const;
121
125 TGUI_NODISCARD bool operator!=(std::nullptr_t) const;
126
130 TGUI_NODISCARD bool operator==(const Font& right) const;
131
135 TGUI_NODISCARD bool operator!=(const Font& right) const;
136
150 TGUI_NODISCARD FontGlyph getGlyph(char32_t codePoint, unsigned int characterSize, bool bold, float outlineThickness = 0) const;
151
166 TGUI_NODISCARD float getKerning(char32_t first, char32_t second, unsigned int characterSize, bool bold = false) const;
167
177 TGUI_NODISCARD float getLineSpacing(unsigned int characterSize) const;
178
186 TGUI_NODISCARD float getFontHeight(unsigned int characterSize) const;
187
197 void setSmooth(bool smooth);
198
206 TGUI_NODISCARD bool isSmooth() const;
207
212 TGUI_NODISCARD std::shared_ptr<BackendFont> getBackendFont() const;
213
215 private:
216
217 std::shared_ptr<BackendFont> m_backendFont;
218 String m_id;
219 };
220
222}
223
225
226#endif // TGUI_FONT_HPP
Base class for font implementations that depend on the backend.
Definition BackendFont.hpp:43
float getFontHeight(unsigned int characterSize) const
Returns the height required to render a line of text.
float getLineSpacing(unsigned int characterSize) const
Returns the line spacing.
Font(std::nullptr_t=nullptr) noexcept
Default constructor which will set the font to nullptr.
static void setGlobalFont(const Font &font)
Changes the global font that is used for all new widgets.
bool isSmooth() const
Tell whether the smooth filter is enabled or not.
static Font getGlobalFont()
Returns the global font that is used for all new widgets.
float getKerning(char32_t first, char32_t second, unsigned int characterSize, bool bold=false) const
Returns the kerning offset of two glyphs.
std::shared_ptr< BackendFont > getBackendFont() const
Returns the internal font.
const String & getId() const
Returns the id that was used to load the font.
void setSmooth(bool smooth)
Enable or disable the smooth filter.
FontGlyph getGlyph(char32_t codePoint, unsigned int characterSize, bool bold, float outlineThickness=0) const
Retrieve a glyph of the font.
Wrapper class to store strings.
Definition String.hpp:94
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:36
Information about a glyph in the font.
Definition Font.hpp:46
FloatRect bounds
Bounding rectangle of the glyph, in coordinates relative to the baseline.
Definition Font.hpp:48
UIntRect textureRect
Texture coordinates of the glyph inside the font's texture.
Definition Font.hpp:49
float advance
Offset to move horizontally to the next character.
Definition Font.hpp:47