1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-19 13:03:11 +01:00

Ship with a full font set

Also closes #24225: Modify stroked L glyph to resemble unstroked
This commit is contained in:
Gymnasiast
2025-05-04 19:10:17 +02:00
parent ea1633e820
commit cee133e03d
551 changed files with 3625 additions and 214 deletions

View File

@@ -1651,7 +1651,7 @@ enum : ImageIndex
SPR_FONTS_BEGIN = SPR_G2_END,
// Sprite font characters
SPR_FONTS_AE_UPPER = SPR_FONTS_BEGIN + 0,
SPR_FONTS_AE_UPPER = SPR_FONTS_BEGIN + 224,
SPR_FONTS_AE_LOWER,
SPR_FONTS_O_STROKE_UPPER,
SPR_FONTS_O_STROKE_LOWER,
@@ -1764,9 +1764,6 @@ enum : ImageIndex
SPR_FONTS_ROUBLE_SIGN,
SPR_FONTS_J,
SPR_FONTS_L,
SPR_FONTS_C_CIRCUMFLEX_UPPER,
SPR_FONTS_C_CIRCUMFLEX_LOWER,
SPR_FONTS_G_CIRCUMFLEX_UPPER,
@@ -1802,4 +1799,4 @@ enum : ImageIndex
};
constexpr size_t kG2SpriteCount = SPR_G2_END - SPR_G2_BEGIN;
constexpr size_t kFontDatSpriteCount = SPR_FONTS_END - SPR_FONTS_BEGIN;
constexpr size_t kFontsDatSpriteCount = SPR_FONTS_END - SPR_FONTS_BEGIN;

View File

@@ -14,8 +14,6 @@
namespace OpenRCT2::UnicodeChar
{
// Latin alphabet
constexpr char32_t j = 0x6A;
constexpr char32_t l = 0x6C;
constexpr char32_t ae_uc = 0xC6;
constexpr char32_t o_stroke_uc = 0xD8;
constexpr char32_t y_acute_uc = 0xDD;

View File

@@ -441,7 +441,6 @@ static bool _csgLoaded = false;
static G1Element _g1Temp = {};
static std::vector<G1Element> _imageListElements;
bool gTinyFontAntiAliased = false;
/**
*
@@ -467,7 +466,6 @@ bool GfxLoadG1(const IPlatformEnvironment& env)
bool is_rctc = _g1.header.num_entries == SPR_RCTC_G1_END;
_g1.elements.resize(_g1.header.num_entries);
ReadAndConvertGxDat(&fs, _g1.header.num_entries, is_rctc, _g1.elements.data());
gTinyFontAntiAliased = is_rctc;
// Read element data
_g1.data = fs.ReadArray<uint8_t>(_g1.header.total_size);
@@ -596,7 +594,7 @@ static bool GfxLoadOpenRCT2Gx(std::string filename, Gx& target, size_t expectedN
bool GfxLoadG2AndFonts()
{
auto res1 = GfxLoadOpenRCT2Gx("g2.dat", _g2, kG2SpriteCount);
auto res2 = GfxLoadOpenRCT2Gx("fonts.dat", _fonts, kFontDatSpriteCount);
auto res2 = GfxLoadOpenRCT2Gx("fonts.dat", _fonts, kFontsDatSpriteCount);
return res1 && res2;
}

View File

@@ -506,8 +506,6 @@ extern ImageId gPickupPeepImage;
extern int32_t gPickupPeepX;
extern int32_t gPickupPeepY;
extern bool gTinyFontAntiAliased;
bool ClipDrawPixelInfo(RenderTarget& dst, RenderTarget& src, const ScreenCoordsXY& coords, int32_t width, int32_t height);
void GfxSetDirtyBlocks(const ScreenRect& rect);
void GfxInvalidateScreen();

View File

@@ -31,8 +31,7 @@ static constexpr int32_t kSpriteFontLineHeight[FontStyleCount] = {
6,
};
static uint8_t _spriteFontCharacterWidths[FontStyleCount][kSpriteFontGlyphCount];
static uint8_t _additionalSpriteFontCharacterWidth[FontStyleCount][SPR_FONTS_GLYPH_COUNT] = {};
static uint8_t _spriteFontCharacterWidths[FontStyleCount][SPR_FONTS_GLYPH_COUNT] = {};
#ifndef DISABLE_TTF
TTFFontSetDescriptor* gCurrentTTFFontSet;
@@ -41,191 +40,189 @@ TTFFontSetDescriptor* gCurrentTTFFontSet;
constexpr uint8_t CS_SPRITE_FONT_OFFSET = 32;
static const std::unordered_map<char32_t, int32_t> codepointOffsetMap = {
{ UnicodeChar::ae_uc, SPR_FONTS_AE_UPPER - SPR_CHAR_START },
{ UnicodeChar::o_stroke_uc, SPR_FONTS_O_STROKE_UPPER - SPR_CHAR_START },
{ UnicodeChar::y_acute_uc, SPR_FONTS_Y_ACUTE_UPPER - SPR_CHAR_START },
{ UnicodeChar::ae, SPR_FONTS_AE_LOWER - SPR_CHAR_START },
{ UnicodeChar::o_stroke, SPR_FONTS_O_STROKE_LOWER - SPR_CHAR_START },
{ UnicodeChar::y_acute, SPR_FONTS_Y_ACUTE_LOWER - SPR_CHAR_START },
{ UnicodeChar::a_breve_uc, SPR_FONTS_A_BREVE_UPPER - SPR_CHAR_START },
{ UnicodeChar::ae_uc, SPR_FONTS_AE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::o_stroke_uc, SPR_FONTS_O_STROKE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::y_acute_uc, SPR_FONTS_Y_ACUTE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::ae, SPR_FONTS_AE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::o_stroke, SPR_FONTS_O_STROKE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::y_acute, SPR_FONTS_Y_ACUTE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::a_breve_uc, SPR_FONTS_A_BREVE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::a_breve, 226 - CS_SPRITE_FONT_OFFSET }, // Render as â, no visual difference in the RCT font
{ UnicodeChar::a_ogonek_uc, CSChar::a_ogonek_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::a_ogonek, CSChar::a_ogonek - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::c_acute_uc, CSChar::c_acute_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::c_acute, CSChar::c_acute - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::c_caron_uc, SPR_FONTS_C_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::c_caron, SPR_FONTS_C_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::d_caron_uc, SPR_FONTS_D_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::d_caron, SPR_FONTS_D_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::c_caron_uc, SPR_FONTS_C_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::c_caron, SPR_FONTS_C_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::d_caron_uc, SPR_FONTS_D_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::d_caron, SPR_FONTS_D_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::e_ogonek_uc, CSChar::e_ogonek_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::e_ogonek, CSChar::e_ogonek - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::e_caron_uc, SPR_FONTS_E_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::e_caron, SPR_FONTS_E_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::g_breve_uc, SPR_FONTS_G_BREVE_UPPER - SPR_CHAR_START },
{ UnicodeChar::g_breve, SPR_FONTS_G_BREVE_LOWER - SPR_CHAR_START },
{ UnicodeChar::i_with_dot_uc, SPR_FONTS_I_WITH_DOT_UPPER - SPR_CHAR_START },
{ UnicodeChar::i_without_dot, SPR_FONTS_I_WITHOUT_DOT_LOWER - SPR_CHAR_START },
{ UnicodeChar::j, SPR_FONTS_J - SPR_CHAR_START },
{ UnicodeChar::l, SPR_FONTS_L - SPR_CHAR_START },
{ UnicodeChar::e_caron_uc, SPR_FONTS_E_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::e_caron, SPR_FONTS_E_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::g_breve_uc, SPR_FONTS_G_BREVE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::g_breve, SPR_FONTS_G_BREVE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::i_with_dot_uc, SPR_FONTS_I_WITH_DOT_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::i_without_dot, SPR_FONTS_I_WITHOUT_DOT_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::l_stroke_uc, CSChar::l_stroke_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::l_stroke, CSChar::l_stroke - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::n_acute_uc, CSChar::n_acute_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::n_acute, CSChar::n_acute - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::n_caron_uc, SPR_FONTS_N_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::n_caron, SPR_FONTS_N_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::n_caron_uc, SPR_FONTS_N_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::n_caron, SPR_FONTS_N_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::o_macron, CSChar::o_circumflex - CS_SPRITE_FONT_OFFSET }, // No visual difference
{ UnicodeChar::o_double_acute_uc, SPR_FONTS_O_DOUBLE_ACUTE_UPPER - SPR_CHAR_START },
{ UnicodeChar::o_double_acute, SPR_FONTS_O_DOUBLE_ACUTE_LOWER - SPR_CHAR_START },
{ UnicodeChar::oe_uc, SPR_FONTS_OE_UPPER - SPR_CHAR_START },
{ UnicodeChar::oe, SPR_FONTS_OE_LOWER - SPR_CHAR_START },
{ UnicodeChar::r_caron_uc, SPR_FONTS_R_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::r_caron, SPR_FONTS_R_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::o_double_acute_uc, SPR_FONTS_O_DOUBLE_ACUTE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::o_double_acute, SPR_FONTS_O_DOUBLE_ACUTE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::oe_uc, SPR_FONTS_OE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::oe, SPR_FONTS_OE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::r_caron_uc, SPR_FONTS_R_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::r_caron, SPR_FONTS_R_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_acute_uc, CSChar::s_acute_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::s_acute, CSChar::s_acute - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::s_cedilla_uc, SPR_FONTS_S_CEDILLA_UPPER - SPR_CHAR_START },
{ UnicodeChar::s_cedilla, SPR_FONTS_S_CEDILLA_LOWER - SPR_CHAR_START },
{ UnicodeChar::s_caron_uc, SPR_FONTS_S_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::s_caron, SPR_FONTS_S_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::t_caron_uc, SPR_FONTS_T_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::t_caron, SPR_FONTS_T_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::u_ring_uc, SPR_FONTS_U_RING_UPPER - SPR_CHAR_START },
{ UnicodeChar::u_ring, SPR_FONTS_U_RING_LOWER - SPR_CHAR_START },
{ UnicodeChar::u_double_acute_uc, SPR_FONTS_U_DOUBLE_ACUTE_UPPER - SPR_CHAR_START },
{ UnicodeChar::u_double_acute, SPR_FONTS_U_DOUBLE_ACUTE_LOWER - SPR_CHAR_START },
{ UnicodeChar::w_circumflex_uc, SPR_FONTS_W_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::w_circumflex, SPR_FONTS_W_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::y_circumflex_uc, SPR_FONTS_Y_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::y_circumflex, SPR_FONTS_Y_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::s_cedilla_uc, SPR_FONTS_S_CEDILLA_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_cedilla, SPR_FONTS_S_CEDILLA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_caron_uc, SPR_FONTS_S_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_caron, SPR_FONTS_S_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::t_caron_uc, SPR_FONTS_T_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::t_caron, SPR_FONTS_T_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_ring_uc, SPR_FONTS_U_RING_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_ring, SPR_FONTS_U_RING_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_double_acute_uc, SPR_FONTS_U_DOUBLE_ACUTE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_double_acute, SPR_FONTS_U_DOUBLE_ACUTE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::w_circumflex_uc, SPR_FONTS_W_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::w_circumflex, SPR_FONTS_W_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::y_circumflex_uc, SPR_FONTS_Y_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::y_circumflex, SPR_FONTS_Y_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::z_acute_uc, CSChar::z_acute_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::z_acute, CSChar::z_acute - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::z_dot_uc, CSChar::z_dot_uc - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::z_dot, CSChar::z_dot - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::z_caron_uc, SPR_FONTS_Z_CARON_UPPER - SPR_CHAR_START },
{ UnicodeChar::z_caron, SPR_FONTS_Z_CARON_LOWER - SPR_CHAR_START },
{ UnicodeChar::z_caron_uc, SPR_FONTS_Z_CARON_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::z_caron, SPR_FONTS_Z_CARON_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::f_with_hook_uc, 'F' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::s_comma_uc, SPR_FONTS_S_CEDILLA_UPPER - SPR_CHAR_START }, // No visual difference
{ UnicodeChar::s_comma, SPR_FONTS_S_CEDILLA_LOWER - SPR_CHAR_START }, // Ditto
{ UnicodeChar::t_comma_uc, SPR_FONTS_T_COMMA_UPPER - SPR_CHAR_START },
{ UnicodeChar::t_comma, SPR_FONTS_T_COMMA_LOWER - SPR_CHAR_START },
{ UnicodeChar::s_comma_uc, SPR_FONTS_S_CEDILLA_UPPER - SPR_FONTS_BEGIN }, // No visual difference
{ UnicodeChar::s_comma, SPR_FONTS_S_CEDILLA_LOWER - SPR_FONTS_BEGIN }, // Ditto
{ UnicodeChar::t_comma_uc, SPR_FONTS_T_COMMA_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::t_comma, SPR_FONTS_T_COMMA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::sharp_s_uc, 223 - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::c_circumflex_uc, SPR_FONTS_C_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::c_circumflex, SPR_FONTS_C_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::g_circumflex_uc, SPR_FONTS_G_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::g_circumflex, SPR_FONTS_G_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::h_circumflex_uc, SPR_FONTS_H_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::h_circumflex, SPR_FONTS_H_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::j_circumflex_uc, SPR_FONTS_J_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::j_circumflex, SPR_FONTS_J_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::s_circumflex_uc, SPR_FONTS_S_CIRCUMFLEX_UPPER - SPR_CHAR_START },
{ UnicodeChar::s_circumflex, SPR_FONTS_S_CIRCUMFLEX_LOWER - SPR_CHAR_START },
{ UnicodeChar::u_breve_uc, SPR_FONTS_U_BREVE_UPPER - SPR_CHAR_START },
{ UnicodeChar::u_breve, SPR_FONTS_U_BREVE_LOWER - SPR_CHAR_START },
{ UnicodeChar::c_circumflex_uc, SPR_FONTS_C_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::c_circumflex, SPR_FONTS_C_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::g_circumflex_uc, SPR_FONTS_G_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::g_circumflex, SPR_FONTS_G_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::h_circumflex_uc, SPR_FONTS_H_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::h_circumflex, SPR_FONTS_H_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::j_circumflex_uc, SPR_FONTS_J_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::j_circumflex, SPR_FONTS_J_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_circumflex_uc, SPR_FONTS_S_CIRCUMFLEX_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::s_circumflex, SPR_FONTS_S_CIRCUMFLEX_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_breve_uc, SPR_FONTS_U_BREVE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::u_breve, SPR_FONTS_U_BREVE_LOWER - SPR_FONTS_BEGIN },
// Cyrillic alphabet
{ UnicodeChar::cyrillic_io_uc, 203 - CS_SPRITE_FONT_OFFSET }, // Looks just like Ë
{ UnicodeChar::cyrillic_ukrainian_ie_uc, SPR_FONTS_CYRILLIC_UKRAINIAN_IE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ukrainian_ie_uc, SPR_FONTS_CYRILLIC_UKRAINIAN_IE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_dze_uc, 'S' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_dotted_i_uc, 'I' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_yi_uc, 207 - CS_SPRITE_FONT_OFFSET }, // Looks just like Ï
{ UnicodeChar::cyrillic_je_uc, 'J' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_a_uc, 'A' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_be_uc, SPR_FONTS_CYRILLIC_BE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_be_uc, SPR_FONTS_CYRILLIC_BE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ve_uc, 'B' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_ghe_uc, SPR_FONTS_CYRILLIC_GHE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_de_uc, SPR_FONTS_CYRILLIC_DE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ghe_uc, SPR_FONTS_CYRILLIC_GHE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_de_uc, SPR_FONTS_CYRILLIC_DE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ie_uc, 'E' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_zhe_uc, SPR_FONTS_CYRILLIC_ZHE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ze_uc, SPR_FONTS_CYRILLIC_ZE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_i_uc, SPR_FONTS_CYRILLIC_I_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_short_i_uc, SPR_FONTS_CYRILLIC_SHORT_I_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_zhe_uc, SPR_FONTS_CYRILLIC_ZHE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ze_uc, SPR_FONTS_CYRILLIC_ZE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_i_uc, SPR_FONTS_CYRILLIC_I_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_short_i_uc, SPR_FONTS_CYRILLIC_SHORT_I_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ka_uc, 'K' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_el_uc, SPR_FONTS_CYRILLIC_EL_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_el_uc, SPR_FONTS_CYRILLIC_EL_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_em_uc, 'M' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_en_uc, 'H' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_o_uc, 'O' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_pe_uc, SPR_FONTS_CYRILLIC_PE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_pe_uc, SPR_FONTS_CYRILLIC_PE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_er_uc, 'P' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_es_uc, 'C' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_te_uc, 'T' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_u_uc, SPR_FONTS_CYRILLIC_U_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ef_uc, SPR_FONTS_CYRILLIC_EF_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_u_uc, SPR_FONTS_CYRILLIC_U_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ef_uc, SPR_FONTS_CYRILLIC_EF_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ha_uc, 'X' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_tse_uc, SPR_FONTS_CYRILLIC_TSE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_che_uc, SPR_FONTS_CYRILLIC_CHE_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_sha_uc, SPR_FONTS_CYRILLIC_SHA_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_shcha_uc, SPR_FONTS_CYRILLIC_SHCHA_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_hard_sign_uc, SPR_FONTS_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_yeru_uc, SPR_FONTS_CYRILLIC_YERU_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_soft_sign_uc, SPR_FONTS_CYRILLIC_SOFT_SIGN_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_e_uc, SPR_FONTS_CYRILLIC_E_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_yu_uc, SPR_FONTS_CYRILLIC_YU_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ya_uc, SPR_FONTS_CYRILLIC_YA_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_tse_uc, SPR_FONTS_CYRILLIC_TSE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_che_uc, SPR_FONTS_CYRILLIC_CHE_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_sha_uc, SPR_FONTS_CYRILLIC_SHA_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_shcha_uc, SPR_FONTS_CYRILLIC_SHCHA_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_hard_sign_uc, SPR_FONTS_CYRILLIC_HARD_SIGN_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_yeru_uc, SPR_FONTS_CYRILLIC_YERU_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_soft_sign_uc, SPR_FONTS_CYRILLIC_SOFT_SIGN_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_e_uc, SPR_FONTS_CYRILLIC_E_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_yu_uc, SPR_FONTS_CYRILLIC_YU_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ya_uc, SPR_FONTS_CYRILLIC_YA_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_a, 'a' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_be, SPR_FONTS_CYRILLIC_BE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ve, SPR_FONTS_CYRILLIC_VE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ghe, SPR_FONTS_CYRILLIC_GHE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_de, SPR_FONTS_CYRILLIC_DE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_be, SPR_FONTS_CYRILLIC_BE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ve, SPR_FONTS_CYRILLIC_VE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ghe, SPR_FONTS_CYRILLIC_GHE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_de, SPR_FONTS_CYRILLIC_DE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ie, 'e' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_zhe, SPR_FONTS_CYRILLIC_ZHE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ze, SPR_FONTS_CYRILLIC_ZE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_i, SPR_FONTS_CYRILLIC_I_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_short_i, SPR_FONTS_CYRILLIC_SHORT_I_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ka, SPR_FONTS_CYRILLIC_KA_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_el, SPR_FONTS_CYRILLIC_EL_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_em, SPR_FONTS_CYRILLIC_EM_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_en, SPR_FONTS_CYRILLIC_EN_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_zhe, SPR_FONTS_CYRILLIC_ZHE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ze, SPR_FONTS_CYRILLIC_ZE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_i, SPR_FONTS_CYRILLIC_I_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_short_i, SPR_FONTS_CYRILLIC_SHORT_I_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ka, SPR_FONTS_CYRILLIC_KA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_el, SPR_FONTS_CYRILLIC_EL_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_em, SPR_FONTS_CYRILLIC_EM_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_en, SPR_FONTS_CYRILLIC_EN_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_o, 'o' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_pe, SPR_FONTS_CYRILLIC_PE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_pe, SPR_FONTS_CYRILLIC_PE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_er, 'p' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_es, 'c' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_te, SPR_FONTS_CYRILLIC_TE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_te, SPR_FONTS_CYRILLIC_TE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_u, 'y' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_ef, SPR_FONTS_CYRILLIC_EF_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ef, SPR_FONTS_CYRILLIC_EF_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ha, 'x' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_tse, SPR_FONTS_CYRILLIC_TSE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_che, SPR_FONTS_CYRILLIC_CHE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_sha, SPR_FONTS_CYRILLIC_SHA_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_shcha, SPR_FONTS_CYRILLIC_SHCHA_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_hard_sign, SPR_FONTS_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_yeru, SPR_FONTS_CYRILLIC_YERU_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_soft_sign, SPR_FONTS_CYRILLIC_SOFT_SIGN_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_e, SPR_FONTS_CYRILLIC_E_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_yu, SPR_FONTS_CYRILLIC_YU_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ya, SPR_FONTS_CYRILLIC_YA_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_tse, SPR_FONTS_CYRILLIC_TSE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_che, SPR_FONTS_CYRILLIC_CHE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_sha, SPR_FONTS_CYRILLIC_SHA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_shcha, SPR_FONTS_CYRILLIC_SHCHA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_hard_sign, SPR_FONTS_CYRILLIC_HARD_SIGN_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_yeru, SPR_FONTS_CYRILLIC_YERU_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_soft_sign, SPR_FONTS_CYRILLIC_SOFT_SIGN_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_e, SPR_FONTS_CYRILLIC_E_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_yu, SPR_FONTS_CYRILLIC_YU_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ya, SPR_FONTS_CYRILLIC_YA_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_io, 235 - CS_SPRITE_FONT_OFFSET }, // Looks just like ë
{ UnicodeChar::cyrillic_ukrainian_ie, SPR_FONTS_CYRILLIC_UKRAINIAN_IE_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ukrainian_ie, SPR_FONTS_CYRILLIC_UKRAINIAN_IE_LOWER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_dze, 's' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_dotted_i, 'i' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_yi, 239 - CS_SPRITE_FONT_OFFSET }, // Looks just like ï
{ UnicodeChar::cyrillic_je, SPR_FONTS_J - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ghe_upturn_uc, SPR_FONTS_CYRILLIC_GHE_UPTURN_UPPER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_ghe_upturn, SPR_FONTS_CYRILLIC_GHE_UPTURN_LOWER - SPR_CHAR_START },
{ UnicodeChar::cyrillic_je, 'J' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::cyrillic_ghe_upturn_uc, SPR_FONTS_CYRILLIC_GHE_UPTURN_UPPER - SPR_FONTS_BEGIN },
{ UnicodeChar::cyrillic_ghe_upturn, SPR_FONTS_CYRILLIC_GHE_UPTURN_LOWER - SPR_FONTS_BEGIN },
// Punctuation
{ UnicodeChar::left_brace, SPR_FONTS_LEFT_BRACE - SPR_CHAR_START },
{ UnicodeChar::vertical_bar, SPR_FONTS_VERTICAL_BAR - SPR_CHAR_START },
{ UnicodeChar::right_brace, SPR_FONTS_RIGHT_BRACE - SPR_CHAR_START },
{ UnicodeChar::tilde, SPR_FONTS_TILDE - SPR_CHAR_START },
{ UnicodeChar::left_brace, SPR_FONTS_LEFT_BRACE - SPR_FONTS_BEGIN },
{ UnicodeChar::vertical_bar, SPR_FONTS_VERTICAL_BAR - SPR_FONTS_BEGIN },
{ UnicodeChar::right_brace, SPR_FONTS_RIGHT_BRACE - SPR_FONTS_BEGIN },
{ UnicodeChar::tilde, SPR_FONTS_TILDE - SPR_FONTS_BEGIN },
{ UnicodeChar::non_breaking_space, ' ' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::interpunct, SPR_FONTS_INTERPUNCT - SPR_CHAR_START },
{ UnicodeChar::interpunct, SPR_FONTS_INTERPUNCT - SPR_FONTS_BEGIN },
{ UnicodeChar::multiplication_sign, CSChar::cross - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::en_dash, '-' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::em_dash, '-' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::single_quote_open, '`' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::single_quote_end, '\'' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::single_german_quote_open, ',' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::german_quote_open, SPR_FONTS_GERMAN_OPENQUOTES - SPR_CHAR_START },
{ UnicodeChar::german_quote_open, SPR_FONTS_GERMAN_OPENQUOTES - SPR_FONTS_BEGIN },
{ UnicodeChar::bullet, CSChar::bullet - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::ellipsis, SPR_FONTS_ELLIPSIS - SPR_CHAR_START },
{ UnicodeChar::ellipsis, SPR_FONTS_ELLIPSIS - SPR_FONTS_BEGIN },
{ UnicodeChar::narrow_non_breaking_space, ' ' - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::quote_open, CSChar::quote_open - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::quote_close, CSChar::quote_close - CS_SPRITE_FONT_OFFSET },
// Currency
{ UnicodeChar::guilder, SPR_FONTS_GUILDER_SIGN - SPR_CHAR_START },
{ UnicodeChar::guilder, SPR_FONTS_GUILDER_SIGN - SPR_FONTS_BEGIN },
{ UnicodeChar::euro, CSChar::euro - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::rouble, SPR_FONTS_ROUBLE_SIGN - SPR_CHAR_START },
{ UnicodeChar::rouble, SPR_FONTS_ROUBLE_SIGN - SPR_FONTS_BEGIN },
// Dingbats
{ UnicodeChar::up, CSChar::up - CS_SPRITE_FONT_OFFSET },
@@ -242,7 +239,7 @@ static const std::unordered_map<char32_t, int32_t> codepointOffsetMap = {
// Emoji
{ UnicodeChar::cross, CSChar::cross - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::water, CSChar::water - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::eye, SPR_FONTS_EYE - SPR_CHAR_START },
{ UnicodeChar::eye, SPR_FONTS_EYE - SPR_FONTS_BEGIN },
{ UnicodeChar::road, CSChar::road - CS_SPRITE_FONT_OFFSET },
{ UnicodeChar::railway, CSChar::railway - CS_SPRITE_FONT_OFFSET },
@@ -267,22 +264,6 @@ void FontSpriteInitialiseCharacters()
_biggestCodepointValue = std::max(_biggestCodepointValue, entry.first);
}
for (const auto& fontStyle : FontStyles)
{
int32_t glyphOffset = EnumValue(fontStyle) * kSpriteFontGlyphCount;
for (uint8_t glyphIndex = 0; glyphIndex < kSpriteFontGlyphCount; glyphIndex++)
{
const G1Element* g1 = GfxGetG1Element(glyphIndex + SPR_CHAR_START + glyphOffset);
int32_t width = 0;
if (g1 != nullptr)
{
width = g1->width + (2 * g1->x_offset) - 1;
}
_spriteFontCharacterWidths[EnumValue(fontStyle)][glyphIndex] = static_cast<uint8_t>(width);
}
}
for (const auto& fontStyle : FontStyles)
{
int32_t glyphOffset = EnumValue(fontStyle) * SPR_FONTS_GLYPH_COUNT;
@@ -294,8 +275,7 @@ void FontSpriteInitialiseCharacters()
{
width = g1->width + (2 * g1->x_offset) - 1;
}
_additionalSpriteFontCharacterWidth[EnumValue(fontStyle)][glyphIndex] = static_cast<uint8_t>(width);
_spriteFontCharacterWidths[EnumValue(fontStyle)][glyphIndex] = static_cast<uint8_t>(width);
}
}
@@ -323,19 +303,8 @@ int32_t FontSpriteGetCodepointWidth(FontStyle fontStyle, int32_t codepoint)
{
int32_t glyphIndex = FontSpriteGetCodepointOffset(codepoint);
auto baseFontIndex = EnumValue(fontStyle);
if (glyphIndex >= kSpriteFontGlyphCount)
{
glyphIndex = (SPR_CHAR_START + glyphIndex) - SPR_FONTS_BEGIN;
if (glyphIndex >= static_cast<int32_t>(std::size(_additionalSpriteFontCharacterWidth[baseFontIndex])))
{
LOG_WARNING("Invalid glyph index %u", glyphIndex);
glyphIndex = 0;
}
return _additionalSpriteFontCharacterWidth[baseFontIndex][glyphIndex];
}
if (glyphIndex < 0 || glyphIndex >= static_cast<int32_t>(kSpriteFontGlyphCount))
if (glyphIndex >= static_cast<int32_t>(std::size(_spriteFontCharacterWidths[baseFontIndex])))
{
LOG_WARNING("Invalid glyph index %u", glyphIndex);
glyphIndex = 0;
@@ -345,14 +314,10 @@ int32_t FontSpriteGetCodepointWidth(FontStyle fontStyle, int32_t codepoint)
ImageId FontSpriteGetCodepointSprite(FontStyle fontStyle, int32_t codepoint)
{
int32_t offset = EnumValue(fontStyle) * kSpriteFontGlyphCount;
auto codePointOffset = FontSpriteGetCodepointOffset(codepoint);
if (codePointOffset > kSpriteFontGlyphCount)
{
offset = EnumValue(fontStyle) * SPR_FONTS_GLYPH_COUNT;
}
int32_t offset = EnumValue(fontStyle) * SPR_FONTS_GLYPH_COUNT;
return ImageId(SPR_CHAR_START + offset + codePointOffset, COLOUR_BLACK);
return ImageId(SPR_FONTS_BEGIN + offset + codePointOffset, COLOUR_BLACK);
}
int32_t FontGetLineHeight(FontStyle fontStyle)

View File

@@ -39,7 +39,7 @@ struct DrawScrollText
};
static DrawScrollText _drawScrollTextList[OpenRCT2::kMaxScrollingTextEntries];
static uint8_t _characterBitmaps[kSpriteFontGlyphCount + SPR_FONTS_GLYPH_COUNT][8];
static uint8_t _characterBitmaps[SPR_FONTS_GLYPH_COUNT][8];
static uint32_t _drawSCrollNextIndex = 0;
static std::mutex _scrollingTextMutex;
@@ -48,7 +48,7 @@ static void ScrollingTextSetBitmapForSprite(
static void ScrollingTextSetBitmapForTTF(
std::string_view text, int32_t scroll, uint8_t* bitmap, const int16_t* scrollPositionOffsets, colour_t colour);
static void ScrollingTextInitialiseCharacterBitmaps(uint32_t glyphStart, uint16_t offset, uint16_t count, bool isAntiAliased)
static void ScrollingTextInitialiseCharacterBitmaps(uint32_t glyphStart, uint16_t count)
{
uint8_t drawingSurface[64];
RenderTarget rt;
@@ -68,12 +68,12 @@ static void ScrollingTextInitialiseCharacterBitmaps(uint32_t glyphStart, uint16_
{
val >>= 1;
uint8_t pixel = rt.bits[x + y * 8];
if (pixel == 1 || (isAntiAliased && pixel == 2))
if (pixel == 1)
{
val |= 0x80;
}
}
_characterBitmaps[offset + i][x] = val;
_characterBitmaps[i][x] = val;
}
}
};
@@ -105,19 +105,13 @@ static void ScrollingTextInitialiseScrollingText()
void ScrollingTextInitialiseBitmaps()
{
ScrollingTextInitialiseCharacterBitmaps(SPR_CHAR_START, 0, kSpriteFontGlyphCount, gTinyFontAntiAliased);
ScrollingTextInitialiseCharacterBitmaps(SPR_FONTS_BEGIN, kSpriteFontGlyphCount, SPR_FONTS_GLYPH_COUNT, false);
ScrollingTextInitialiseCharacterBitmaps(SPR_FONTS_BEGIN, SPR_FONTS_GLYPH_COUNT);
ScrollingTextInitialiseScrollingText();
}
static uint8_t* FontSpriteGetCodepointBitmap(int32_t codepoint)
{
auto offset = FontSpriteGetCodepointOffset(codepoint);
if (offset >= kSpriteFontGlyphCount)
{
return _characterBitmaps[offset - (SPR_FONTS_BEGIN - SPR_CHAR_START) + kSpriteFontGlyphCount];
}
return _characterBitmaps[offset];
}