OpenTTD Source 20251213-master-g1091fa6071
Win32FontCache Class Reference

Font cache for fonts that are based on a Win32 font. More...

#include <font_win32.h>

Inheritance diagram for Win32FontCache:
TrueTypeFontCache FontCache

Public Member Functions

 Win32FontCache (FontSize fs, const LOGFONT &logfont, int pixels)
 Create a new Win32FontCache.
 
void ClearFontCache () override
 Reset cached glyphs.
 
GlyphID MapCharToGlyph (char32_t key) override
 Map a character into a glyph.
 
std::string GetFontName () override
 Get the name of this font.
 
const void * GetOSHandle () override
 Get the native OS font handle, if there is one.
 
- Public Member Functions inherited from TrueTypeFontCache
 TrueTypeFontCache (FontSize fs, int pixels)
 Create a new TrueTypeFontCache.
 
virtual ~TrueTypeFontCache ()
 Free everything that was allocated for this font cache.
 
int GetFontSize () const override
 Get the nominal font size of the font.
 
const SpriteGetGlyph (GlyphID key) override
 Get the glyph (sprite) of the given key.
 
uint GetGlyphWidth (GlyphID key) override
 Get the width of the glyph with the given key.
 
bool GetDrawGlyphShadow () override
 Do we need to draw a glyph shadow?
 
bool IsBuiltInFont () override
 Is this a built-in sprite font?
 
- Public Member Functions inherited from FontCache
FontSize GetSize () const
 Get the FontSize of the font.
 
FontIndex GetIndex () const
 
FontLoadReason GetFontLoadReason () const
 
int GetHeight () const
 Get the height of the font.
 
int GetAscender () const
 Get the ascender value of the font.
 
int GetDescender () const
 Get the descender value of the font.
 
virtual int GetGlyphYOffset ()
 

Protected Member Functions

const SpriteInternalGetGlyph (GlyphID key, bool aa) override
 
- Protected Member Functions inherited from TrueTypeFontCache
GlyphEntryGetGlyphPtr (GlyphID key)
 
GlyphEntrySetGlyphPtr (GlyphID key, GlyphEntry &&glyph)
 
- Protected Member Functions inherited from FontCache
 FontCache (FontSize fs)
 

Private Member Functions

void SetFontSize (int pixels)
 

Private Attributes

LOGFONT logfont
 Logical font information for selecting the font face.
 
HFONT font = nullptr
 The font face associated with this font.
 
HDC dc = nullptr
 Cached GDI device context.
 
HGDIOBJ old_font
 Old font selected into the GDI context.
 
SIZE glyph_size
 Maximum size of regular glyphs.
 
std::string fontname
 Cached copy of loaded font facename.
 
ReusableBuffer< uint8_t > render_buffer
 Temporary buffer for rendering glyphs.
 

Additional Inherited Members

- Static Public Member Functions inherited from FontCache
static void InitializeFontCaches ()
 Initialise font caches with the base sprite font cache for all sizes.
 
static void UninitializeFontCaches ()
 Free everything allocated w.r.t.
 
static void LoadFontCaches (FontSizes fontsizes)
 (Re)initialize the font cache related things, i.e.
 
static void ClearFontCaches (FontSizes fontsizes)
 Clear cached information for the specified font caches.
 
static int GetDefaultFontHeight (FontSize fs)
 
static int GetFontBaseline (FontSize fs)
 
static void AddFallback (FontSizes fontsizes, FontLoadReason load_reason, std::string_view name, std::span< const std::byte > os_data={})
 Add a fallback font, with optional OS-specific handle.
 
template<typename T >
static void AddFallbackWithHandle (FontSizes fontsizes, FontLoadReason load_reason, std::string_view name, T &handle)
 Add a fallback font, with OS-specific handle.
 
static std::span< const std::unique_ptr< FontCache > > Get ()
 Get span of all FontCaches.
 
static FontCacheGet (FontIndex font_index)
 Get the font cache of a given font size.
 
static int GetCharacterHeight (FontSize fs)
 
static void UpdateCharacterHeight (FontSize fs)
 
static FontIndex GetDefaultFontIndex (FontSize fs)
 
static class FontCacheGetDefaultFontCache (FontSize fs)
 
static FontIndex GetFontIndexForCharacter (FontSize fs, char32_t c)
 
- Static Public Attributes inherited from FontCache
static const int DEFAULT_FONT_HEIGHT [FS_END] = {10, 6, 18, 10}
 Default unscaled font heights.
 
static const int DEFAULT_FONT_ASCENDER [FS_END] = {8, 6, 15, 8}
 Default unscaled font ascenders.
 
- Protected Types inherited from FontCache
using FontCaches = std::vector< std::unique_ptr< FontCache > >
 
- Static Protected Member Functions inherited from FontCache
static void Register (std::unique_ptr< FontCache > &&fc, FontLoadReason load_reason)
 
static void LoadDefaultFonts (FontSize fs)
 
static void LoadFallbackFonts (FontSize fs, FontLoadReason load_reason)
 
- Protected Attributes inherited from TrueTypeFontCache
int req_size = 0
 Requested font size.
 
int used_size = 0
 Used font size.
 
std::unordered_map< GlyphID, GlyphEntryglyph_to_sprite_map {}
 
- Protected Attributes inherited from FontCache
const FontSize fs
 The size of the font.
 
FontIndex font_index
 The index of the font.
 
FontLoadReason load_reason
 Reason why the font is loaded.
 
int height = 0
 The height of the font.
 
int ascender = 0
 The ascender value of the font.
 
int descender = 0
 The descender value of the font.
 
- Static Protected Attributes inherited from TrueTypeFontCache
static constexpr int MAX_GLYPH_DIM = 256
 Maximum glyph dimensions.
 
static constexpr uint MAX_FONT_MIN_REC_SIZE = 20u
 Upper limit for the recommended font size in case a font file contains nonsensical values.
 
- Static Protected Attributes inherited from FontCache
static FontCaches caches
 
static std::array< FontMetrics, FS_END > metrics {}
 
static std::array< FontIndex, FS_END > default_font_index {}
 

Detailed Description

Font cache for fonts that are based on a Win32 font.

Definition at line 20 of file font_win32.h.

Constructor & Destructor Documentation

◆ Win32FontCache()

Win32FontCache::Win32FontCache ( FontSize  fs,
const LOGFONT &  logfont,
int  pixels 
)

Create a new Win32FontCache.

Parameters
fsThe font size that is going to be cached.
logfontThe font that has to be loaded.
pixelsThe number of pixels this font should be high.

Definition at line 92 of file font_win32.cpp.

References dc.

◆ ~Win32FontCache()

Win32FontCache::~Win32FontCache ( )

Definition at line 98 of file font_win32.cpp.

Member Function Documentation

◆ ClearFontCache()

void Win32FontCache::ClearFontCache ( )
overridevirtual

Reset cached glyphs.

Reimplemented from TrueTypeFontCache.

Definition at line 168 of file font_win32.cpp.

References TrueTypeFontCache::ClearFontCache(), font, and TrueTypeFontCache::req_size.

◆ GetFontName()

std::string Win32FontCache::GetFontName ( )
inlineoverridevirtual

Get the name of this font.

Returns
The name of the font.

Implements FontCache.

Definition at line 41 of file font_win32.h.

References fontname.

◆ GetOSHandle()

const void * Win32FontCache::GetOSHandle ( )
inlineoverridevirtual

Get the native OS font handle, if there is one.

Returns
Opaque OS font handle.

Reimplemented from FontCache.

Definition at line 42 of file font_win32.h.

References logfont.

◆ InternalGetGlyph()

const Sprite * Win32FontCache::InternalGetGlyph ( GlyphID  key,
bool  aa 
)
overrideprotectedvirtual

Implements TrueTypeFontCache.

Definition at line 176 of file font_win32.cpp.

◆ MapCharToGlyph()

GlyphID Win32FontCache::MapCharToGlyph ( char32_t  key)
overridevirtual

Map a character into a glyph.

Parameters
keyThe character.
Returns
The glyph ID used to draw the character.

Implements FontCache.

Definition at line 248 of file font_win32.cpp.

References dc.

◆ SetFontSize()

void Win32FontCache::SetFontSize ( int  pixels)
private

Definition at line 105 of file font_win32.cpp.

Field Documentation

◆ dc

HDC Win32FontCache::dc = nullptr
private

Cached GDI device context.

Definition at line 24 of file font_win32.h.

Referenced by MapCharToGlyph(), and Win32FontCache().

◆ font

HFONT Win32FontCache::font = nullptr
private

The font face associated with this font.

Definition at line 23 of file font_win32.h.

Referenced by ClearFontCache().

◆ fontname

std::string Win32FontCache::fontname
private

Cached copy of loaded font facename.

Definition at line 27 of file font_win32.h.

Referenced by GetFontName().

◆ glyph_size

SIZE Win32FontCache::glyph_size
private

Maximum size of regular glyphs.

Definition at line 26 of file font_win32.h.

◆ logfont

LOGFONT Win32FontCache::logfont
private

Logical font information for selecting the font face.

Definition at line 22 of file font_win32.h.

Referenced by GetOSHandle().

◆ old_font

HGDIOBJ Win32FontCache::old_font
private

Old font selected into the GDI context.

Definition at line 25 of file font_win32.h.

◆ render_buffer

ReusableBuffer<uint8_t> Win32FontCache::render_buffer
private

Temporary buffer for rendering glyphs.

Definition at line 29 of file font_win32.h.


The documentation for this class was generated from the following files: