8#include <unordered_map>
17 class IGUIEnvironment;
21#define FONT_SIZE_UNSPECIFIED 0xFFFFFFFF
57 | (
static_cast<u8
>(
bold) << 1)
144 void setMediaFont(
const std::string &name,
const std::string &data);
171 gui::IGUIEnvironment*
m_env =
nullptr;
Definition fontengine.h:69
void updateCache()
update content of font cache in case of a setting change made it invalid
Definition fontengine.cpp:181
std::recursive_mutex m_font_mutex
mutex used to protect font init and cache
Definition fontengine.h:174
void handleReload()
reload fonts if settings were changed
Definition fontengine.cpp:164
unsigned int getTextHeight(unsigned int font_size=FONT_SIZE_UNSPECIFIED, FontMode mode=FM_Unspecified)
get text width of a text for a specific font
Definition fontengine.h:90
static void fontSettingChanged(const std::string &name, void *userdata)
callback to be used on change of font size setting
Definition fontengine.cpp:21
gui::IGUIFont * getFont(unsigned int font_size=FONT_SIZE_UNSPECIFIED, FontMode mode=FM_Unspecified)
Definition fontengine.h:79
bool m_default_italic
Definition fontengine.h:190
unsigned int getTextHeight(const FontSpec &spec)
get text height for a specific font
Definition fontengine.cpp:116
~FontEngine()
Definition fontengine.cpp:54
gui::SGUITTFace * getOrLoadFace(const std::string &filename)
Definition fontengine.cpp:226
gui::IGUIEnvironment * m_env
pointer to irrlicht gui environment
Definition fontengine.h:171
std::map< unsigned int, gui::IGUIFont * > m_font_cache[FontSpec::MAX_VARIANTS]
internal storage for caching fonts of different size
Definition fontengine.h:177
std::unordered_map< std::string, irr_ptr< gui::SGUITTFace > > m_local_faces
local faces, indexed by file path
Definition fontengine.h:180
bool m_default_bold
default bold and italic
Definition fontengine.h:189
void updateSkin()
update current minetest skin with font changes
Definition fontengine.cpp:173
unsigned int getFontSize(FontMode mode)
get font size for a specific mode
Definition fontengine.cpp:144
void clearMediaFonts()
Definition fontengine.cpp:219
FontEngine(gui::IGUIEnvironment *env)
Definition fontengine.cpp:37
unsigned int getTextWidth(const std::wstring &text, unsigned int font_size=FONT_SIZE_UNSPECIFIED, FontMode mode=FM_Unspecified)
get text width of a text for a specific font
Definition fontengine.h:101
void setMediaFont(const std::string &name, const std::string &data)
Definition fontengine.cpp:195
unsigned int getTextWidth(const std::wstring &text, const FontSpec &spec)
Definition fontengine.cpp:123
unsigned int getTextWidth(const std::string &text, unsigned int font_size=FONT_SIZE_UNSPECIFIED, FontMode mode=FM_Unspecified)
Definition fontengine.h:114
unsigned int m_default_size[FM_MaxMode]
default font size to use
Definition fontengine.h:186
void clearCache()
Definition fontengine.cpp:61
bool m_needs_reload
Definition fontengine.h:195
unsigned int getTextWidth(const std::string &text, const FontSpec &spec)
Definition fontengine.h:109
void readSettings()
update internal parameters from settings
Definition fontengine.cpp:152
DISABLE_CLASS_COPY(FontEngine)
std::unordered_map< std::string, irr_ptr< gui::SGUITTFace > > m_media_faces
media-provided faces, indexed by filename (without extension)
Definition fontengine.h:183
gui::IGUIFont * getFont(FontSpec spec)
Definition fontengine.cpp:75
unsigned int getDefaultFontSize()
get default font size
Definition fontengine.cpp:139
unsigned int getLineHeight(unsigned int font_size=FONT_SIZE_UNSPECIFIED, FontMode mode=FM_Unspecified)
Definition fontengine.h:125
void refresh()
refresh after fonts have been changed
Definition fontengine.cpp:188
unsigned int getLineHeight(const FontSpec &spec)
get line height for a specific font (including empty room between lines)
Definition fontengine.cpp:131
static const FontMode s_default_font_mode
default font engine mode (fixed)
Definition fontengine.h:193
gui::IGUIFont * initFont(FontSpec spec)
initialize a new TTF font
Definition fontengine.cpp:240
FontMode
Definition fontengine.h:23
@ FM_Standard
Regular font (settings "font_path*", overwritable)
Definition fontengine.h:25
@ FM_MaxMode
Sum of all font modes.
Definition fontengine.h:35
@ FM_Unspecified
Request the defult font specified by s_default_font_mode
Definition fontengine.h:40
@ FM_Mono
Monospace font (settings "mono_font*", overwritable)
Definition fontengine.h:28
@ _FM_Fallback
Use only in FontEngine.
Definition fontengine.h:32
FontEngine * g_fontengine
interface to access main font engine
Definition fontengine.cpp:19
#define FONT_SIZE_UNSPECIFIED
Definition fontengine.h:21
Definition fontengine.h:16
std::wstring utf8_to_wide(std::string_view input)
Definition string.cpp:87
Definition fontengine.h:43
bool italic
Definition fontengine.h:64
static const unsigned VARIANT_BITS
Definition fontengine.h:50
bool allow_server_media
Definition fontengine.h:65
bool bold
Definition fontengine.h:63
FontSpec(unsigned int font_size, FontMode mode, bool bold, bool italic)
Definition fontengine.h:44
unsigned int size
Definition fontengine.h:61
u16 getHash() const
Definition fontengine.h:53
static const size_t MAX_VARIANTS
Definition fontengine.h:51
FontMode mode
Definition fontengine.h:62
Definition CGUITTFont.h:54