#pragma once #include "CharacterBitmap.h" #include #include #include class Font : public Retainable { public: static Font& default_font(); ~Font(); const CharacterBitmap& glyph_bitmap(char ch) const { return *m_bitmaps[(byte)ch]; } byte glyph_width() const { return m_glyph_width; } byte glyph_height() const { return m_glyph_height; } static void initialize(); private: Font(const char* const* glyphs, byte glyph_width, byte glyph_height, byte firstGlyph, byte lastGlyph); const char* const* m_glyphs { nullptr }; mutable RetainPtr m_bitmaps[256]; RetainPtr m_error_bitmap; byte m_glyph_width { 0 }; byte m_glyph_height { 0 }; byte m_first_glyph { 0 }; byte m_last_glyph { 0 }; };