mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-27 08:45:00 +01:00
Merge pull request #8012 from Gymnasiast/uniloco
Adopt OpenLoco's UTF-8 handling
This commit is contained in:
@@ -930,7 +930,7 @@ static void window_multiplayer_groups_scrollpaint(rct_window* w, rct_drawpixelin
|
||||
{
|
||||
char* lineCh = buffer;
|
||||
lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2);
|
||||
lineCh = utf8_write_codepoint(lineCh, FORMAT_TICK);
|
||||
lineCh = utf8_write_codepoint(lineCh, UnicodeChar::tick);
|
||||
gfx_draw_string(dpi, buffer, COLOUR_BLACK, 0, y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#include "Drawing.h"
|
||||
#include "TTF.h"
|
||||
|
||||
#include <map>
|
||||
|
||||
static constexpr const int32_t SpriteFontLineHeight[FONT_SIZE_COUNT] = { 6, 10, 10 };
|
||||
|
||||
static uint8_t _spriteFontCharacterWidths[FONT_SIZE_COUNT][FONT_SPRITE_GLYPH_COUNT];
|
||||
@@ -26,6 +28,156 @@ static uint8_t _additionalSpriteFontCharacterWidth[FONT_SIZE_COUNT][SPR_G2_GLYPH
|
||||
TTFFontSetDescriptor* gCurrentTTFFontSet;
|
||||
#endif // NO_TTF
|
||||
|
||||
static const std::map<char32_t, int32_t> codepointOffsetMap = {
|
||||
{ UnicodeChar::ae_uc, SPR_G2_AE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::o_stroke_uc, SPR_G2_O_STROKE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::y_acute_uc, SPR_G2_Y_ACUTE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::ae, SPR_G2_AE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::o_stroke, SPR_G2_O_STROKE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::y_acute, SPR_G2_Y_ACUTE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::a_breve_uc, SPR_G2_A_BREVE_UPPER - SPR_CHAR_START },
|
||||
{ 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_G2_C_CARON_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::c_caron, SPR_G2_C_CARON_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::e_ogonek_uc, CSChar::e_ogonek_uc - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::e_ogonek, CSChar::e_ogonek - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::g_breve_uc, SPR_G2_G_BREVE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::g_breve, SPR_G2_G_BREVE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::i_with_dot_uc, SPR_G2_I_WITH_DOT_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::i_without_dot, SPR_G2_I_WITHOUT_DOT_LOWER - SPR_CHAR_START },
|
||||
{ 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::o_double_acute_uc, SPR_G2_O_DOUBLE_ACUTE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::o_double_acute, SPR_G2_O_DOUBLE_ACUTE_LOWER - SPR_CHAR_START },
|
||||
{ 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_G2_S_CEDILLA_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::s_cedilla, SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::u_double_acute_uc, SPR_G2_U_DOUBLE_ACUTE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::u_double_acute, SPR_G2_U_DOUBLE_ACUTE_LOWER - SPR_CHAR_START },
|
||||
{ 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::f_with_hook_uc, 'F' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::s_comma_uc, SPR_G2_S_CEDILLA_UPPER - SPR_CHAR_START }, // No visual difference
|
||||
{ UnicodeChar::s_comma, SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START }, // Ditto
|
||||
{ UnicodeChar::t_comma_uc, SPR_G2_T_COMMA_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::t_comma, SPR_G2_T_COMMA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::sharp_s_uc, 223 - CS_SPRITE_FONT_OFFSET },
|
||||
|
||||
// Cyrillic alphabet
|
||||
{ UnicodeChar::cyrillic_io_uc, 203 - CS_SPRITE_FONT_OFFSET }, // Looks just like Ë
|
||||
{ UnicodeChar::cyrillic_a_uc, 'A' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_be_uc, SPR_G2_CYRILLIC_BE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ve_uc, 'B' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_ghe_uc, SPR_G2_CYRILLIC_GHE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_de_uc, SPR_G2_CYRILLIC_DE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ie_uc, 'E' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_zhe_uc, SPR_G2_CYRILLIC_ZHE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ze_uc, SPR_G2_CYRILLIC_ZE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_i_uc, SPR_G2_CYRILLIC_I_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_short_i_uc, SPR_G2_CYRILLIC_SHORT_I_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ka_uc, 'K' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_el_uc, SPR_G2_CYRILLIC_EL_UPPER - SPR_CHAR_START },
|
||||
{ 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_G2_CYRILLIC_PE_UPPER - SPR_CHAR_START },
|
||||
{ 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_G2_CYRILLIC_U_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ef_uc, SPR_G2_CYRILLIC_EF_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ha_uc, 'X' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_tse_uc, SPR_G2_CYRILLIC_TSE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_che_uc, SPR_G2_CYRILLIC_CHE_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_sha_uc, SPR_G2_CYRILLIC_SHA_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_shcha_uc, SPR_G2_CYRILLIC_SHCHA_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_hard_sign_uc, SPR_G2_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_yeru_uc, SPR_G2_CYRILLIC_YERU_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_soft_sign_uc, SPR_G2_CYRILLIC_SOFT_SIGN_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_e_uc, SPR_G2_CYRILLIC_E_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_yu_uc, SPR_G2_CYRILLIC_YU_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ya_uc, SPR_G2_CYRILLIC_YA_UPPER - SPR_CHAR_START },
|
||||
|
||||
{ UnicodeChar::cyrillic_a, 'a' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_be, SPR_G2_CYRILLIC_BE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ve, SPR_G2_CYRILLIC_VE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ghe, SPR_G2_CYRILLIC_GHE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_de, SPR_G2_CYRILLIC_DE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ie, 'e' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_zhe, SPR_G2_CYRILLIC_ZHE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ze, SPR_G2_CYRILLIC_ZE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_i, SPR_G2_CYRILLIC_I_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_short_i, SPR_G2_CYRILLIC_SHORT_I_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ka, SPR_G2_CYRILLIC_KA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_el, SPR_G2_CYRILLIC_EL_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_em, SPR_G2_CYRILLIC_EM_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_en, SPR_G2_CYRILLIC_EN_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_o, 'o' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_pe, SPR_G2_CYRILLIC_PE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_er, 'p' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_es, 'c' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_te, SPR_G2_CYRILLIC_TE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_u, 'y' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_ef, SPR_G2_CYRILLIC_EF_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ha, 'x' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::cyrillic_tse, SPR_G2_CYRILLIC_TSE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_che, SPR_G2_CYRILLIC_CHE_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_sha, SPR_G2_CYRILLIC_SHA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_shcha, SPR_G2_CYRILLIC_SHCHA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_hard_sign, SPR_G2_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_yeru, SPR_G2_CYRILLIC_YERU_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_soft_sign, SPR_G2_CYRILLIC_SOFT_SIGN_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_e, SPR_G2_CYRILLIC_E_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_yu, SPR_G2_CYRILLIC_YU_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_ya, SPR_G2_CYRILLIC_YA_LOWER - SPR_CHAR_START },
|
||||
{ UnicodeChar::cyrillic_io, 235 - CS_SPRITE_FONT_OFFSET }, // Looks just like ë
|
||||
|
||||
// Punctuation
|
||||
{ UnicodeChar::interpunct, SPR_G2_INTERPUNCT - SPR_CHAR_START },
|
||||
{ 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_G2_GERMAN_OPENQUOTES - SPR_CHAR_START },
|
||||
{ UnicodeChar::bullet, CSChar::bullet - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::ellipsis, SPR_G2_ELLIPSIS - SPR_CHAR_START },
|
||||
{ UnicodeChar::quote_open, CSChar::quote_open - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::quote_close, CSChar::quote_close - CS_SPRITE_FONT_OFFSET },
|
||||
|
||||
// Currency
|
||||
{ UnicodeChar::guilder, SPR_G2_GUILDER_SIGN - SPR_CHAR_START },
|
||||
{ UnicodeChar::euro, CSChar::euro - CS_SPRITE_FONT_OFFSET },
|
||||
|
||||
// Dingbats
|
||||
{ UnicodeChar::up, CSChar::up - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::small_up, CSChar::small_up - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::right, CSChar::right - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::down, CSChar::down - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::small_down, CSChar::small_down - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::left, CSChar::left - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::air, CSChar::air - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::tick, CSChar::tick - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::plus, '+' - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::minus, '-' - CS_SPRITE_FONT_OFFSET },
|
||||
|
||||
// Emoji
|
||||
{ UnicodeChar::cross, CSChar::cross - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::water, CSChar::water - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::road, CSChar::road - CS_SPRITE_FONT_OFFSET },
|
||||
{ UnicodeChar::railway, CSChar::railway - CS_SPRITE_FONT_OFFSET },
|
||||
|
||||
// Misc
|
||||
{ UnicodeChar::superscript_minus_one, CSChar::superscript_minus_one - CS_SPRITE_FONT_OFFSET },
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006C19AC
|
||||
@@ -72,334 +224,14 @@ void font_sprite_initialise_characters()
|
||||
|
||||
int32_t font_sprite_get_codepoint_offset(int32_t codepoint)
|
||||
{
|
||||
switch (codepoint)
|
||||
{
|
||||
case FORMAT_ENDQUOTES:
|
||||
return 34 - 32;
|
||||
auto result = codepointOffsetMap.find(codepoint);
|
||||
if (result != codepointOffsetMap.end())
|
||||
return result->second;
|
||||
|
||||
case FORMAT_UP:
|
||||
return 160 - 32;
|
||||
case FORMAT_INVERTEDEXCLAMATION:
|
||||
return 161 - 32;
|
||||
case FORMAT_POUND:
|
||||
return 163 - 32;
|
||||
if (codepoint < 32 || codepoint >= 256)
|
||||
codepoint = '?';
|
||||
|
||||
case FORMAT_YEN:
|
||||
return 165 - 32;
|
||||
|
||||
case FORMAT_COPYRIGHT:
|
||||
return 169 - 32;
|
||||
case FORMAT_DOWN:
|
||||
return 170 - 32;
|
||||
case FORMAT_LEFTGUILLEMET:
|
||||
return 171 - 32;
|
||||
case FORMAT_TICK:
|
||||
return 172 - 32;
|
||||
case FORMAT_CROSS:
|
||||
return 173 - 32;
|
||||
|
||||
case FORMAT_RIGHT:
|
||||
return 175 - 32;
|
||||
case FORMAT_DEGREE:
|
||||
return 176 - 32;
|
||||
case FORMAT_SYMBOL_RAILWAY:
|
||||
return 177 - 32;
|
||||
case FORMAT_SQUARED:
|
||||
return 178 - 32;
|
||||
|
||||
case FORMAT_OPENQUOTES:
|
||||
return 180 - 32;
|
||||
case FORMAT_EURO:
|
||||
return 181 - 32;
|
||||
case FORMAT_SYMBOL_ROAD:
|
||||
return 182 - 32;
|
||||
case FORMAT_SYMBOL_FLAG:
|
||||
return 183 - 32;
|
||||
case FORMAT_APPROX:
|
||||
return 184 - 32;
|
||||
case FORMAT_POWERNEGATIVEONE:
|
||||
return 185 - 32;
|
||||
case FORMAT_BULLET:
|
||||
return 186 - 32;
|
||||
case FORMAT_RIGHTGUILLEMET:
|
||||
return 187 - 32;
|
||||
case FORMAT_SMALLUP:
|
||||
return 188 - 32;
|
||||
case FORMAT_SMALLDOWN:
|
||||
return 189 - 32;
|
||||
case FORMAT_LEFT:
|
||||
return 190 - 32;
|
||||
case FORMAT_INVERTEDQUESTION:
|
||||
return 191 - 32;
|
||||
|
||||
case UNICODE_A_OGONEK_UC:
|
||||
return RCT2_A_OGONEK_UC - 32;
|
||||
case UNICODE_C_ACUTE_UC:
|
||||
return RCT2_C_ACUTE_UC - 32;
|
||||
case UNICODE_E_OGONEK_UC:
|
||||
return RCT2_E_OGONEK_UC - 32;
|
||||
case UNICODE_N_ACUTE_UC:
|
||||
return RCT2_N_ACUTE_UC - 32;
|
||||
case UNICODE_L_STROKE_UC:
|
||||
return RCT2_L_STROKE_UC - 32;
|
||||
case UNICODE_S_ACUTE_UC:
|
||||
return RCT2_S_ACUTE_UC - 32;
|
||||
case UNICODE_Z_DOT_UC:
|
||||
return RCT2_Z_DOT_UC - 32;
|
||||
case UNICODE_Z_ACUTE_UC:
|
||||
return RCT2_Z_ACUTE_UC - 32;
|
||||
|
||||
case UNICODE_A_OGONEK:
|
||||
return RCT2_A_OGONEK - 32;
|
||||
case UNICODE_C_ACUTE:
|
||||
return RCT2_C_ACUTE - 32;
|
||||
case UNICODE_E_OGONEK:
|
||||
return RCT2_E_OGONEK - 32;
|
||||
case UNICODE_N_ACUTE:
|
||||
return RCT2_N_ACUTE - 32;
|
||||
case UNICODE_L_STROKE:
|
||||
return RCT2_L_STROKE - 32;
|
||||
case UNICODE_S_ACUTE:
|
||||
return RCT2_S_ACUTE - 32;
|
||||
case UNICODE_Z_DOT:
|
||||
return RCT2_Z_DOT - 32;
|
||||
case UNICODE_Z_ACUTE:
|
||||
return RCT2_Z_ACUTE - 32;
|
||||
|
||||
// Render capital sharp-S (ẞ) with lowercase sprite (ß)
|
||||
case UNICODE_CAPITAL_SHARP_S:
|
||||
return 223 - 32;
|
||||
|
||||
// Norwegian/Danish
|
||||
case UNICODE_AE_UC:
|
||||
return SPR_G2_AE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_O_STROKE_UC:
|
||||
return SPR_G2_O_STROKE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_AE:
|
||||
return SPR_G2_AE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_O_STROKE:
|
||||
return SPR_G2_O_STROKE_LOWER - SPR_CHAR_START;
|
||||
|
||||
case UNICODE_DINGBATS_PLUS:
|
||||
return 11;
|
||||
case UNICODE_DINGBATS_MINUS:
|
||||
return 13;
|
||||
|
||||
// Cyrillic
|
||||
case UNICODE_CYRILLIC_A_UC:
|
||||
return 'A' - 32;
|
||||
case UNICODE_CYRILLIC_BE_UC:
|
||||
return SPR_G2_CYRILLIC_BE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_VE_UC:
|
||||
return 'B' - 32;
|
||||
case UNICODE_CYRILLIC_GHE_UC:
|
||||
return SPR_G2_CYRILLIC_GHE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_DE_UC:
|
||||
return SPR_G2_CYRILLIC_DE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_IE_UC:
|
||||
return 'E' - 32;
|
||||
case UNICODE_CYRILLIC_ZHE_UC:
|
||||
return SPR_G2_CYRILLIC_ZHE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_ZE_UC:
|
||||
return SPR_G2_CYRILLIC_ZE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_I_UC:
|
||||
return SPR_G2_CYRILLIC_I_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHORT_I_UC:
|
||||
return SPR_G2_CYRILLIC_SHORT_I_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_KA_UC:
|
||||
return 'K' - 32;
|
||||
case UNICODE_CYRILLIC_EL_UC:
|
||||
return SPR_G2_CYRILLIC_EL_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_EM_UC:
|
||||
return 'M' - 32;
|
||||
case UNICODE_CYRILLIC_EN_UC:
|
||||
return 'H' - 32;
|
||||
case UNICODE_CYRILLIC_O_UC:
|
||||
return 'O' - 32;
|
||||
case UNICODE_CYRILLIC_PE_UC:
|
||||
return SPR_G2_CYRILLIC_PE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_ER_UC:
|
||||
return 'P' - 32;
|
||||
case UNICODE_CYRILLIC_ES_UC:
|
||||
return 'C' - 32;
|
||||
case UNICODE_CYRILLIC_TE_UC:
|
||||
return 'T' - 32;
|
||||
case UNICODE_CYRILLIC_U_UC:
|
||||
return SPR_G2_CYRILLIC_U_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_EF_UC:
|
||||
return SPR_G2_CYRILLIC_EF_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_HA_UC:
|
||||
return 'X' - 32;
|
||||
case UNICODE_CYRILLIC_TSE_UC:
|
||||
return SPR_G2_CYRILLIC_TSE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_CHE_UC:
|
||||
return SPR_G2_CYRILLIC_CHE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHA_UC:
|
||||
return SPR_G2_CYRILLIC_SHA_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHCHA_UC:
|
||||
return SPR_G2_CYRILLIC_SHCHA_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_HARD_SIGN_UC:
|
||||
return SPR_G2_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YERU_UC:
|
||||
return SPR_G2_CYRILLIC_YERU_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SOFT_SIGN_UC:
|
||||
return SPR_G2_CYRILLIC_SOFT_SIGN_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_E_UC:
|
||||
return SPR_G2_CYRILLIC_E_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YU_UC:
|
||||
return SPR_G2_CYRILLIC_YU_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YA_UC:
|
||||
return SPR_G2_CYRILLIC_YA_UPPER - SPR_CHAR_START;
|
||||
|
||||
case UNICODE_CYRILLIC_A:
|
||||
return 'a' - 32;
|
||||
case UNICODE_CYRILLIC_BE:
|
||||
return SPR_G2_CYRILLIC_BE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_VE:
|
||||
return SPR_G2_CYRILLIC_VE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_GHE:
|
||||
return SPR_G2_CYRILLIC_GHE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_DE:
|
||||
return SPR_G2_CYRILLIC_DE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_IE:
|
||||
return 'e' - 32;
|
||||
case UNICODE_CYRILLIC_ZHE:
|
||||
return SPR_G2_CYRILLIC_ZHE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_ZE:
|
||||
return SPR_G2_CYRILLIC_ZE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_I:
|
||||
return SPR_G2_CYRILLIC_I_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHORT_I:
|
||||
return SPR_G2_CYRILLIC_SHORT_I_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_KA:
|
||||
return SPR_G2_CYRILLIC_KA_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_EL:
|
||||
return SPR_G2_CYRILLIC_EL_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_EM:
|
||||
return SPR_G2_CYRILLIC_EM_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_EN:
|
||||
return SPR_G2_CYRILLIC_EN_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_O:
|
||||
return 'o' - 32;
|
||||
case UNICODE_CYRILLIC_PE:
|
||||
return SPR_G2_CYRILLIC_PE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_ER:
|
||||
return 'p' - 32;
|
||||
case UNICODE_CYRILLIC_ES:
|
||||
return 'c' - 32;
|
||||
case UNICODE_CYRILLIC_TE:
|
||||
return SPR_G2_CYRILLIC_TE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_U:
|
||||
return 'y' - 32;
|
||||
case UNICODE_CYRILLIC_EF:
|
||||
return SPR_G2_CYRILLIC_EF_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_HA:
|
||||
return 'x' - 32;
|
||||
case UNICODE_CYRILLIC_TSE:
|
||||
return SPR_G2_CYRILLIC_TSE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_CHE:
|
||||
return SPR_G2_CYRILLIC_CHE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHA:
|
||||
return SPR_G2_CYRILLIC_SHA_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SHCHA:
|
||||
return SPR_G2_CYRILLIC_SHCHA_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_HARD_SIGN:
|
||||
// Not a typo, there is no glyph, use the upper case variant.
|
||||
return SPR_G2_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YERU:
|
||||
return SPR_G2_CYRILLIC_YERU_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_SOFT_SIGN:
|
||||
return SPR_G2_CYRILLIC_SOFT_SIGN_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_E:
|
||||
return SPR_G2_CYRILLIC_E_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YU:
|
||||
return SPR_G2_CYRILLIC_YU_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_CYRILLIC_YA:
|
||||
return SPR_G2_CYRILLIC_YA_LOWER - SPR_CHAR_START;
|
||||
|
||||
// Looks just like Ë.
|
||||
case UNICODE_CYRILLIC_IO_UC:
|
||||
return 171;
|
||||
case UNICODE_CYRILLIC_IO:
|
||||
return 203;
|
||||
|
||||
case FORMAT_GERMAN_OPENQUOTES:
|
||||
return SPR_G2_GERMAN_OPENQUOTES - SPR_CHAR_START;
|
||||
|
||||
case FORMAT_SINGLE_OPENQUOTE:
|
||||
return 64;
|
||||
case FORMAT_SINGLE_ENDQUOTE:
|
||||
return 7;
|
||||
case FORMAT_GERMAN_SINGLE_OPENQUOTE:
|
||||
return 12;
|
||||
|
||||
case UNICODE_GUILDER_SIGN:
|
||||
return SPR_G2_GUILDER_SIGN - SPR_CHAR_START;
|
||||
|
||||
// Turkish
|
||||
case UNICODE_G_BREVE_UC:
|
||||
return SPR_G2_G_BREVE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_I_WITH_DOT_UC:
|
||||
return SPR_G2_I_WITH_DOT_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_S_CEDILLA_UC:
|
||||
return SPR_G2_S_CEDILLA_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_G_BREVE:
|
||||
return SPR_G2_G_BREVE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_I_WITHOUT_DOT:
|
||||
return SPR_G2_I_WITHOUT_DOT_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_S_CEDILLA:
|
||||
return SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START;
|
||||
|
||||
case UNICODE_INTERPUNCT:
|
||||
return SPR_G2_INTERPUNCT - SPR_CHAR_START;
|
||||
case UNICODE_ELLIPSIS:
|
||||
return SPR_G2_ELLIPSIS - SPR_CHAR_START;
|
||||
|
||||
// Romanian
|
||||
case UNICODE_A_BREVE_UC:
|
||||
return SPR_G2_A_BREVE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_A_BREVE:
|
||||
// Render as â, there is no visual difference on this scale.
|
||||
return 194;
|
||||
case UNICODE_S_COMMA_UC:
|
||||
// Also no visual difference.
|
||||
return SPR_G2_S_CEDILLA_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_S_COMMA:
|
||||
return SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_T_COMMA_UC:
|
||||
return SPR_G2_T_COMMA_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_T_COMMA:
|
||||
return SPR_G2_T_COMMA_LOWER - SPR_CHAR_START;
|
||||
|
||||
// This is to catch capitalised versions of the guilder sign
|
||||
case UNICODE_F_WITH_HOOK_UC:
|
||||
return 'F' - 32;
|
||||
|
||||
// Czech
|
||||
case UNICODE_C_CARON_UC:
|
||||
return SPR_G2_C_CARON_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_C_CARON:
|
||||
return SPR_G2_C_CARON_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_Y_ACUTE_UC:
|
||||
return SPR_G2_Y_ACUTE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_Y_ACUTE:
|
||||
return SPR_G2_Y_ACUTE_LOWER - SPR_CHAR_START;
|
||||
|
||||
// Hungarian
|
||||
case UNICODE_O_DOUBLE_ACUTE_UC:
|
||||
return SPR_G2_O_DOUBLE_ACUTE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_O_DOUBLE_ACUTE:
|
||||
return SPR_G2_O_DOUBLE_ACUTE_LOWER - SPR_CHAR_START;
|
||||
case UNICODE_U_DOUBLE_ACUTE_UC:
|
||||
return SPR_G2_U_DOUBLE_ACUTE_UPPER - SPR_CHAR_START;
|
||||
case UNICODE_U_DOUBLE_ACUTE:
|
||||
return SPR_G2_U_DOUBLE_ACUTE_LOWER - SPR_CHAR_START;
|
||||
|
||||
default:
|
||||
if (codepoint < 32 || codepoint >= 256)
|
||||
codepoint = '?';
|
||||
return codepoint - 32;
|
||||
}
|
||||
return codepoint - 32;
|
||||
}
|
||||
|
||||
int32_t font_sprite_get_codepoint_width(uint16_t fontSpriteBase, int32_t codepoint)
|
||||
@@ -500,101 +332,17 @@ bool font_supports_string_sprite(const utf8* text)
|
||||
while ((codepoint = utf8_get_next(src, &src)) != 0)
|
||||
{
|
||||
bool supported = false;
|
||||
switch (codepoint)
|
||||
|
||||
if ((codepoint >= 32 && codepoint < 256)
|
||||
|| (codepoint >= UnicodeChar::cyrillic_a_uc && codepoint <= UnicodeChar::cyrillic_ya))
|
||||
{
|
||||
case FORMAT_ENDQUOTES:
|
||||
case FORMAT_UP:
|
||||
case FORMAT_INVERTEDEXCLAMATION:
|
||||
case FORMAT_POUND:
|
||||
case FORMAT_YEN:
|
||||
case FORMAT_COPYRIGHT:
|
||||
case FORMAT_DOWN:
|
||||
case FORMAT_LEFTGUILLEMET:
|
||||
case FORMAT_TICK:
|
||||
case FORMAT_CROSS:
|
||||
case FORMAT_RIGHT:
|
||||
case FORMAT_DEGREE:
|
||||
case FORMAT_SYMBOL_RAILWAY:
|
||||
case FORMAT_SQUARED:
|
||||
case FORMAT_OPENQUOTES:
|
||||
case FORMAT_EURO:
|
||||
case FORMAT_SYMBOL_ROAD:
|
||||
case FORMAT_SYMBOL_FLAG:
|
||||
case FORMAT_APPROX:
|
||||
case FORMAT_POWERNEGATIVEONE:
|
||||
case FORMAT_BULLET:
|
||||
case FORMAT_RIGHTGUILLEMET:
|
||||
case FORMAT_SMALLUP:
|
||||
case FORMAT_SMALLDOWN:
|
||||
case FORMAT_LEFT:
|
||||
case FORMAT_INVERTEDQUESTION:
|
||||
|
||||
case UNICODE_A_OGONEK_UC:
|
||||
case UNICODE_C_ACUTE_UC:
|
||||
case UNICODE_E_OGONEK_UC:
|
||||
case UNICODE_N_ACUTE_UC:
|
||||
case UNICODE_L_STROKE_UC:
|
||||
case UNICODE_S_ACUTE_UC:
|
||||
case UNICODE_Z_DOT_UC:
|
||||
case UNICODE_Z_ACUTE_UC:
|
||||
|
||||
case UNICODE_A_OGONEK:
|
||||
case UNICODE_C_ACUTE:
|
||||
case UNICODE_E_OGONEK:
|
||||
case UNICODE_N_ACUTE:
|
||||
case UNICODE_L_STROKE:
|
||||
case UNICODE_S_ACUTE:
|
||||
case UNICODE_Z_DOT:
|
||||
case UNICODE_Z_ACUTE:
|
||||
|
||||
case UNICODE_CYRILLIC_IO_UC:
|
||||
case UNICODE_CYRILLIC_IO:
|
||||
|
||||
case FORMAT_GERMAN_OPENQUOTES:
|
||||
case FORMAT_SINGLE_OPENQUOTE:
|
||||
case FORMAT_SINGLE_ENDQUOTE:
|
||||
case FORMAT_GERMAN_SINGLE_OPENQUOTE:
|
||||
|
||||
case UNICODE_GUILDER_SIGN:
|
||||
|
||||
case UNICODE_G_BREVE_UC:
|
||||
case UNICODE_I_WITH_DOT_UC:
|
||||
case UNICODE_S_CEDILLA_UC:
|
||||
case UNICODE_G_BREVE:
|
||||
case UNICODE_I_WITHOUT_DOT:
|
||||
case UNICODE_S_CEDILLA:
|
||||
|
||||
case UNICODE_INTERPUNCT:
|
||||
case UNICODE_ELLIPSIS:
|
||||
|
||||
case UNICODE_A_BREVE_UC:
|
||||
case UNICODE_A_BREVE:
|
||||
case UNICODE_S_COMMA_UC:
|
||||
case UNICODE_S_COMMA:
|
||||
case UNICODE_T_COMMA_UC:
|
||||
case UNICODE_T_COMMA:
|
||||
|
||||
case UNICODE_C_CARON_UC:
|
||||
case UNICODE_C_CARON:
|
||||
case UNICODE_Y_ACUTE_UC:
|
||||
case UNICODE_Y_ACUTE:
|
||||
|
||||
case UNICODE_O_DOUBLE_ACUTE_UC:
|
||||
case UNICODE_O_DOUBLE_ACUTE:
|
||||
case UNICODE_U_DOUBLE_ACUTE_UC:
|
||||
case UNICODE_U_DOUBLE_ACUTE:
|
||||
|
||||
supported = true;
|
||||
break;
|
||||
default:
|
||||
if ((codepoint >= 32 && codepoint < 256)
|
||||
|| (codepoint >= UNICODE_CYRILLIC_A_UC && codepoint <= UNICODE_CYRILLIC_YA))
|
||||
{
|
||||
supported = true;
|
||||
}
|
||||
break;
|
||||
supported = true;
|
||||
}
|
||||
|
||||
auto result = codepointOffsetMap.find(codepoint);
|
||||
if (result != codepointOffsetMap.end())
|
||||
supported = true;
|
||||
|
||||
if (!supported)
|
||||
{
|
||||
return false;
|
||||
|
||||
@@ -15,13 +15,10 @@
|
||||
#include <cstdlib>
|
||||
|
||||
// clang-format off
|
||||
const encoding_convert_entry RCT2ToUnicodeTable[256] =
|
||||
const encoding_convert_entry RCT2ToUnicodeTable[] =
|
||||
{
|
||||
{ 0, 0 },
|
||||
{ 1, FORMAT_MOVE_X },
|
||||
{ 2, FORMAT_ADJUST_PALETTE },
|
||||
{ 3, 3 },
|
||||
{ 4, 4 },
|
||||
{ 5, FORMAT_NEWLINE },
|
||||
{ 6, FORMAT_NEWLINE_SMALLER },
|
||||
{ 7, FORMAT_TINYFONT },
|
||||
@@ -33,113 +30,8 @@ const encoding_convert_entry RCT2ToUnicodeTable[256] =
|
||||
{ 13, FORMAT_WINDOW_COLOUR_1 },
|
||||
{ 14, FORMAT_WINDOW_COLOUR_2 },
|
||||
{ 15, FORMAT_WINDOW_COLOUR_3 },
|
||||
{ 16, 16 },
|
||||
{ 17, FORMAT_NEWLINE_X_Y },
|
||||
{ 18, 18 },
|
||||
{ 19, 19 },
|
||||
{ 20, 20 },
|
||||
{ 21, 21 },
|
||||
{ 22, 22 },
|
||||
{ 23, FORMAT_INLINE_SPRITE },
|
||||
{ 24, 24 },
|
||||
{ 25, 25 },
|
||||
{ 26, 26 },
|
||||
{ 27, 27 },
|
||||
{ 28, 28 },
|
||||
{ 29, 29 },
|
||||
{ 30, 30 },
|
||||
{ 31, 31 },
|
||||
{ 32, 32 },
|
||||
{ 33, 33 },
|
||||
{ 34, 34 },
|
||||
{ 35, 35 },
|
||||
{ 36, 36 },
|
||||
{ 37, 37 },
|
||||
{ 38, 38 },
|
||||
{ 39, 39 },
|
||||
{ 40, 40 },
|
||||
{ 41, 41 },
|
||||
{ 42, 42 },
|
||||
{ 43, 43 },
|
||||
{ 44, 44 },
|
||||
{ 45, 45 },
|
||||
{ 46, 46 },
|
||||
{ 47, 47 },
|
||||
{ 48, 48 },
|
||||
{ 49, 49 },
|
||||
{ 50, 50 },
|
||||
{ 51, 51 },
|
||||
{ 52, 52 },
|
||||
{ 53, 53 },
|
||||
{ 54, 54 },
|
||||
{ 55, 55 },
|
||||
{ 56, 56 },
|
||||
{ 57, 57 },
|
||||
{ 58, 58 },
|
||||
{ 59, 59 },
|
||||
{ 60, 60 },
|
||||
{ 61, 61 },
|
||||
{ 62, 62 },
|
||||
{ 63, 63 },
|
||||
{ 64, 64 },
|
||||
{ 65, 65 },
|
||||
{ 66, 66 },
|
||||
{ 67, 67 },
|
||||
{ 68, 68 },
|
||||
{ 69, 69 },
|
||||
{ 70, 70 },
|
||||
{ 71, 71 },
|
||||
{ 72, 72 },
|
||||
{ 73, 73 },
|
||||
{ 74, 74 },
|
||||
{ 75, 75 },
|
||||
{ 76, 76 },
|
||||
{ 77, 77 },
|
||||
{ 78, 78 },
|
||||
{ 79, 79 },
|
||||
{ 80, 80 },
|
||||
{ 81, 81 },
|
||||
{ 82, 82 },
|
||||
{ 83, 83 },
|
||||
{ 84, 84 },
|
||||
{ 85, 85 },
|
||||
{ 86, 86 },
|
||||
{ 87, 87 },
|
||||
{ 88, 88 },
|
||||
{ 89, 89 },
|
||||
{ 90, 90 },
|
||||
{ 91, 91 },
|
||||
{ 92, 92 },
|
||||
{ 93, 93 },
|
||||
{ 94, 94 },
|
||||
{ 95, 95 },
|
||||
{ 96, 96 },
|
||||
{ 97, 97 },
|
||||
{ 98, 98 },
|
||||
{ 99, 99 },
|
||||
{ 100, 100 },
|
||||
{ 101, 101 },
|
||||
{ 102, 102 },
|
||||
{ 103, 103 },
|
||||
{ 104, 104 },
|
||||
{ 105, 105 },
|
||||
{ 106, 106 },
|
||||
{ 107, 107 },
|
||||
{ 108, 108 },
|
||||
{ 109, 109 },
|
||||
{ 110, 110 },
|
||||
{ 111, 111 },
|
||||
{ 112, 112 },
|
||||
{ 113, 113 },
|
||||
{ 114, 114 },
|
||||
{ 115, 115 },
|
||||
{ 116, 116 },
|
||||
{ 117, 117 },
|
||||
{ 118, 118 },
|
||||
{ 119, 119 },
|
||||
{ 120, 120 },
|
||||
{ 121, 121 },
|
||||
{ 122, 122 },
|
||||
{ 123, FORMAT_COMMA32 },
|
||||
{ 124, FORMAT_INT32 },
|
||||
{ 125, FORMAT_COMMA2DP32 },
|
||||
@@ -173,106 +65,38 @@ const encoding_convert_entry RCT2ToUnicodeTable[256] =
|
||||
{ 153, FORMAT_LIGHTPINK },
|
||||
{ 154, FORMAT_PEARLAQUA },
|
||||
{ 155, FORMAT_PALESILVER },
|
||||
{ 156, 156 },
|
||||
{ 157, 157 },
|
||||
{ 158, 158 },
|
||||
{ RCT2_A_OGONEK_UC, UNICODE_A_OGONEK_UC },
|
||||
{ 160, FORMAT_UP },
|
||||
{ 161, FORMAT_INVERTEDEXCLAMATION },
|
||||
{ RCT2_C_ACUTE_UC, UNICODE_C_ACUTE_UC },
|
||||
{ 163, FORMAT_POUND },
|
||||
{ 164, 164 },
|
||||
{ 165, FORMAT_YEN },
|
||||
{ RCT2_E_OGONEK_UC, UNICODE_E_OGONEK_UC },
|
||||
{ RCT2_L_STROKE_UC, UNICODE_L_STROKE_UC },
|
||||
{ 168, 168 },
|
||||
{ 169, FORMAT_COPYRIGHT },
|
||||
{ 170, FORMAT_DOWN },
|
||||
{ 171, FORMAT_LEFTGUILLEMET },
|
||||
{ 172, FORMAT_TICK },
|
||||
{ 173, FORMAT_CROSS },
|
||||
{ 174, 174 },
|
||||
{ 175, FORMAT_RIGHT },
|
||||
{ 176, FORMAT_DEGREE },
|
||||
{ 177, FORMAT_SYMBOL_RAILWAY },
|
||||
{ 178, FORMAT_SQUARED },
|
||||
{ 179, 179 },
|
||||
{ 180, FORMAT_OPENQUOTES },
|
||||
{ 181, FORMAT_EURO },
|
||||
{ 182, FORMAT_SYMBOL_ROAD },
|
||||
{ 183, FORMAT_SYMBOL_FLAG },
|
||||
{ 184, FORMAT_APPROX },
|
||||
{ 185, FORMAT_POWERNEGATIVEONE },
|
||||
{ 186, FORMAT_BULLET },
|
||||
{ 187, FORMAT_RIGHTGUILLEMET },
|
||||
{ 188, FORMAT_SMALLUP },
|
||||
{ 189, FORMAT_SMALLDOWN },
|
||||
{ 190, FORMAT_LEFT },
|
||||
{ 191, FORMAT_INVERTEDQUESTION },
|
||||
{ 192, 192 },
|
||||
{ 193, 193 },
|
||||
{ 194, 194 },
|
||||
{ 195, 195 },
|
||||
{ 196, 196 },
|
||||
{ 197, 197 },
|
||||
{ RCT2_N_ACUTE_UC, UNICODE_N_ACUTE_UC },
|
||||
{ 199, 199 },
|
||||
{ 200, 200 },
|
||||
{ 201, 201 },
|
||||
{ 202, 202 },
|
||||
{ 203, 203 },
|
||||
{ 204, 204 },
|
||||
{ 205, 205 },
|
||||
{ 206, 206 },
|
||||
{ 207, 207 },
|
||||
{ RCT2_S_ACUTE_UC, UNICODE_S_ACUTE_UC },
|
||||
{ 209, 209 },
|
||||
{ 210, 210 },
|
||||
{ 211, 211 },
|
||||
{ 212, 212 },
|
||||
{ 213, 213 },
|
||||
{ 214, 214 },
|
||||
{ RCT2_Z_ACUTE_UC, UNICODE_Z_ACUTE_UC },
|
||||
{ RCT2_Z_DOT_UC, UNICODE_Z_DOT_UC },
|
||||
{ 217, 217 },
|
||||
{ 218, 218 },
|
||||
{ 219, 219 },
|
||||
{ 220, 220 },
|
||||
{ RCT2_A_OGONEK, UNICODE_A_OGONEK },
|
||||
{ RCT2_C_ACUTE, UNICODE_C_ACUTE },
|
||||
{ 223, 223 },
|
||||
{ 224, 224 },
|
||||
{ 225, 225 },
|
||||
{ 226, 226 },
|
||||
{ 227, 227 },
|
||||
{ 228, 228 },
|
||||
{ 229, 229 },
|
||||
{ RCT2_E_OGONEK, UNICODE_E_OGONEK },
|
||||
{ 231, 231 },
|
||||
{ 232, 232 },
|
||||
{ 233, 233 },
|
||||
{ 234, 234 },
|
||||
{ 235, 235 },
|
||||
{ 236, 236 },
|
||||
{ 237, 237 },
|
||||
{ 238, 238 },
|
||||
{ 239, 239 },
|
||||
{ RCT2_N_ACUTE, UNICODE_N_ACUTE },
|
||||
{ 241, 241 },
|
||||
{ 242, 242 },
|
||||
{ 243, 243 },
|
||||
{ 244, 244 },
|
||||
{ 245, 245 },
|
||||
{ 246, 246 },
|
||||
{ RCT2_L_STROKE, UNICODE_L_STROKE },
|
||||
{ RCT2_S_ACUTE, UNICODE_S_ACUTE },
|
||||
{ 249, 249 },
|
||||
{ 250, 250 },
|
||||
{ 251, 251 },
|
||||
{ 252, 252 },
|
||||
{ RCT2_Z_DOT, UNICODE_Z_DOT },
|
||||
{ RCT2_Z_ACUTE, UNICODE_Z_ACUTE },
|
||||
{ 255, 255 }
|
||||
{ CSChar::a_ogonek_uc, UnicodeChar::a_ogonek_uc },
|
||||
{ CSChar::up, UnicodeChar::up },
|
||||
{ CSChar::c_acute_uc, UnicodeChar::c_acute_uc },
|
||||
{ CSChar::e_ogonek_uc, UnicodeChar::e_ogonek_uc },
|
||||
{ CSChar::l_stroke_uc, UnicodeChar::l_stroke_uc },
|
||||
{ CSChar::down, UnicodeChar::down },
|
||||
{ CSChar::tick, UnicodeChar::tick },
|
||||
{ CSChar::cross, UnicodeChar::cross },
|
||||
{ CSChar::right, UnicodeChar::right },
|
||||
{ CSChar::railway, UnicodeChar::railway },
|
||||
{ CSChar::quote_open, UnicodeChar::quote_open },
|
||||
{ CSChar::euro, UnicodeChar::euro },
|
||||
{ CSChar::road, UnicodeChar::road },
|
||||
{ CSChar::air, UnicodeChar::air },
|
||||
{ CSChar::water, UnicodeChar::water },
|
||||
{ CSChar::superscript_minus_one, UnicodeChar::superscript_minus_one},
|
||||
{ CSChar::bullet, UnicodeChar::bullet },
|
||||
{ CSChar::small_up, UnicodeChar::small_up },
|
||||
{ CSChar::small_down, UnicodeChar::small_down },
|
||||
{ CSChar::left, UnicodeChar::left },
|
||||
{ CSChar::n_acute_uc, UnicodeChar::n_acute_uc },
|
||||
{ CSChar::s_acute_uc, UnicodeChar::s_acute_uc },
|
||||
{ CSChar::z_acute_uc, UnicodeChar::z_acute_uc },
|
||||
{ CSChar::z_dot_uc, UnicodeChar::z_dot_uc },
|
||||
{ CSChar::a_ogonek, UnicodeChar::a_ogonek },
|
||||
{ CSChar::c_acute, UnicodeChar::c_acute },
|
||||
{ CSChar::e_ogonek, UnicodeChar::e_ogonek },
|
||||
{ CSChar::n_acute, UnicodeChar::n_acute },
|
||||
{ CSChar::l_stroke, UnicodeChar::l_stroke },
|
||||
{ CSChar::s_acute, UnicodeChar::s_acute },
|
||||
{ CSChar::z_dot, UnicodeChar::z_dot },
|
||||
{ CSChar::z_acute, UnicodeChar::z_acute },
|
||||
};
|
||||
|
||||
static int32_t encoding_search_compare(const void *pKey, const void *pEntry)
|
||||
|
||||
@@ -17,7 +17,7 @@ struct encoding_convert_entry
|
||||
uint32_t unicode;
|
||||
};
|
||||
|
||||
extern const encoding_convert_entry RCT2ToUnicodeTable[256];
|
||||
extern const encoding_convert_entry RCT2ToUnicodeTable[];
|
||||
|
||||
wchar_t encoding_convert_rct2_to_unicode(wchar_t rct2str);
|
||||
uint32_t encoding_convert_unicode_to_rct2(uint32_t unicode);
|
||||
|
||||
@@ -38,7 +38,6 @@ static constexpr const format_code_token format_code_tokens[] = {
|
||||
{ FORMAT_WINDOW_COLOUR_3, "WINDOW_COLOUR_3" },
|
||||
{ FORMAT_NEWLINE_X_Y, "NEWLINE_X_Y" },
|
||||
{ FORMAT_INLINE_SPRITE, "INLINE_SPRITE" },
|
||||
{ FORMAT_ENDQUOTES, "ENDQUOTES" },
|
||||
{ FORMAT_COMMA32, "COMMA32" },
|
||||
{ FORMAT_INT32, "INT32" },
|
||||
{ FORMAT_COMMA2DP32, "COMMA2DP32" },
|
||||
@@ -72,27 +71,6 @@ static constexpr const format_code_token format_code_tokens[] = {
|
||||
{ FORMAT_LIGHTPINK, "LIGHTPINK" },
|
||||
{ FORMAT_PEARLAQUA, "PEARLAQUA" },
|
||||
{ FORMAT_PALESILVER, "PALESILVER" },
|
||||
{ FORMAT_UP, "UP" },
|
||||
{ FORMAT_POUND, "POUND" },
|
||||
{ FORMAT_YEN, "YEN" },
|
||||
{ FORMAT_COPYRIGHT, "COPYRIGHT" },
|
||||
{ FORMAT_DOWN, "DOWN" },
|
||||
{ FORMAT_LEFTGUILLEMET, "LEFTGUILLEMET" },
|
||||
{ FORMAT_TICK, "TICK" },
|
||||
{ FORMAT_CROSS, "CROSS" },
|
||||
{ FORMAT_RIGHT, "RIGHT" },
|
||||
{ FORMAT_DEGREE, "DEGREE" },
|
||||
{ FORMAT_SQUARED, "SQUARED" },
|
||||
{ FORMAT_OPENQUOTES, "OPENQUOTES" },
|
||||
{ FORMAT_EURO, "EURO" },
|
||||
{ FORMAT_APPROX, "APPROX" },
|
||||
{ FORMAT_POWERNEGATIVEONE, "POWERNEGATIVEONE" },
|
||||
{ FORMAT_BULLET, "BULLET" },
|
||||
{ FORMAT_RIGHTGUILLEMET, "RIGHTGUILLEMET" },
|
||||
{ FORMAT_SMALLUP, "SMALLUP" },
|
||||
{ FORMAT_SMALLDOWN, "SMALLDOWN" },
|
||||
{ FORMAT_LEFT, "LEFT" },
|
||||
{ FORMAT_INVERTEDQUESTION, "INVERTEDQUESTION" },
|
||||
{ FORMAT_COMMA1DP16, "COMMA1DP16" }
|
||||
};
|
||||
// clang-format on
|
||||
@@ -121,21 +99,21 @@ bool utf8_should_use_sprite_for_codepoint(int32_t codepoint)
|
||||
{
|
||||
switch (codepoint)
|
||||
{
|
||||
case FORMAT_UP:
|
||||
case FORMAT_DOWN:
|
||||
case FORMAT_LEFTGUILLEMET:
|
||||
case FORMAT_TICK:
|
||||
case FORMAT_CROSS:
|
||||
case FORMAT_RIGHT:
|
||||
case FORMAT_RIGHTGUILLEMET:
|
||||
case FORMAT_SMALLUP:
|
||||
case FORMAT_SMALLDOWN:
|
||||
case FORMAT_LEFT:
|
||||
case FORMAT_OPENQUOTES:
|
||||
case FORMAT_ENDQUOTES:
|
||||
case FORMAT_GERMAN_OPENQUOTES:
|
||||
case UNICODE_DINGBATS_PLUS:
|
||||
case UNICODE_DINGBATS_MINUS:
|
||||
case UnicodeChar::up:
|
||||
case UnicodeChar::down:
|
||||
case UnicodeChar::leftguillemet:
|
||||
case UnicodeChar::tick:
|
||||
case UnicodeChar::cross:
|
||||
case UnicodeChar::right:
|
||||
case UnicodeChar::rightguillemet:
|
||||
case UnicodeChar::small_up:
|
||||
case UnicodeChar::small_down:
|
||||
case UnicodeChar::left:
|
||||
case UnicodeChar::quote_open:
|
||||
case UnicodeChar::quote_close:
|
||||
case UnicodeChar::german_quote_open:
|
||||
case UnicodeChar::plus:
|
||||
case UnicodeChar::minus:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef _FORMAT_CODES_H_
|
||||
#define _FORMAT_CODES_H_
|
||||
#pragma once
|
||||
|
||||
#include "../common.h"
|
||||
|
||||
@@ -94,235 +93,207 @@ enum
|
||||
FORMAT_PALESILVER,
|
||||
FORMAT_COLOUR_CODE_END = FORMAT_PALESILVER,
|
||||
|
||||
// Extra non-ASCII characters
|
||||
FORMAT_INVERTEDEXCLAMATION = 161,
|
||||
FORMAT_POUND = 163,
|
||||
FORMAT_YEN = 165,
|
||||
FORMAT_COPYRIGHT = 169,
|
||||
FORMAT_LEFTGUILLEMET = 171,
|
||||
FORMAT_DEGREE = 176,
|
||||
FORMAT_SQUARED = 178,
|
||||
FORMAT_RIGHTGUILLEMET = 187,
|
||||
FORMAT_INVERTEDQUESTION = 191,
|
||||
|
||||
FORMAT_SINGLE_OPENQUOTE = 8216,
|
||||
FORMAT_SINGLE_ENDQUOTE = 8217,
|
||||
FORMAT_GERMAN_SINGLE_OPENQUOTE = 8218,
|
||||
FORMAT_OPENQUOTES = 8220,
|
||||
FORMAT_ENDQUOTES = 8221,
|
||||
FORMAT_GERMAN_OPENQUOTES = 8222,
|
||||
|
||||
FORMAT_BULLET = 8226,
|
||||
FORMAT_POWERNEGATIVEONE = 8315,
|
||||
FORMAT_EURO = 8364,
|
||||
|
||||
FORMAT_APPROX = 8776,
|
||||
|
||||
FORMAT_UP = 9650,
|
||||
FORMAT_RIGHT = 9654,
|
||||
FORMAT_DOWN = 9660,
|
||||
FORMAT_LEFT = 9664,
|
||||
|
||||
FORMAT_SMALLUP = 9652,
|
||||
FORMAT_SMALLDOWN = 9662,
|
||||
|
||||
FORMAT_TICK = 10003,
|
||||
FORMAT_CROSS = 0x274C,
|
||||
|
||||
FORMAT_SYMBOL_RAILWAY = 128740,
|
||||
FORMAT_SYMBOL_ROAD = 128739,
|
||||
FORMAT_SYMBOL_FLAG = 128681,
|
||||
|
||||
// Format codes that need suitable Unicode allocations
|
||||
FORMAT_COMMA1DP16 = 20004
|
||||
};
|
||||
|
||||
enum RCT2Polish
|
||||
constexpr uint8_t CS_SPRITE_FONT_OFFSET = 32;
|
||||
|
||||
namespace CSChar
|
||||
{
|
||||
RCT2_A_OGONEK_UC = 159, // 0x9F
|
||||
RCT2_C_ACUTE_UC = 162, // 0xA2
|
||||
RCT2_E_OGONEK_UC = 166, // 0xA6
|
||||
RCT2_N_ACUTE_UC = 198, // 0xC6
|
||||
RCT2_L_STROKE_UC = 167, // 0xA7
|
||||
RCT2_S_ACUTE_UC = 208, // 0xD0
|
||||
RCT2_Z_DOT_UC = 216, // 0xD8
|
||||
RCT2_Z_ACUTE_UC = 215, // 0xD7
|
||||
constexpr char32_t quote_close = 0x22;
|
||||
|
||||
RCT2_A_OGONEK = 221, // 0xDD
|
||||
RCT2_C_ACUTE = 222, // 0xDE
|
||||
RCT2_E_OGONEK = 230, // 0xE6
|
||||
RCT2_N_ACUTE = 240, // 0xF0
|
||||
RCT2_L_STROKE = 247, // 0xF7
|
||||
RCT2_S_ACUTE = 248, // 0xF8
|
||||
RCT2_Z_DOT = 253, // 0xFD
|
||||
RCT2_Z_ACUTE = 254, // 0xFE
|
||||
};
|
||||
constexpr char32_t a_ogonek_uc = 0x9F;
|
||||
constexpr char32_t up = 0xA0;
|
||||
|
||||
enum UnicodePolish
|
||||
constexpr char32_t c_acute_uc = 0xA2;
|
||||
constexpr char32_t e_ogonek_uc = 0xA6;
|
||||
constexpr char32_t l_stroke_uc = 0xA7;
|
||||
|
||||
constexpr char32_t down = 0xAA;
|
||||
constexpr char32_t tick = 0xAC;
|
||||
constexpr char32_t cross = 0xAD;
|
||||
constexpr char32_t right = 0xAF;
|
||||
constexpr char32_t railway = 0xB1;
|
||||
constexpr char32_t quote_open = 0xB4;
|
||||
constexpr char32_t euro = 0xB5;
|
||||
constexpr char32_t road = 0xB6;
|
||||
constexpr char32_t air = 0xB7;
|
||||
constexpr char32_t water = 0xB8;
|
||||
constexpr char32_t superscript_minus_one = 0xB9;
|
||||
constexpr char32_t bullet = 0xBA;
|
||||
constexpr char32_t small_up = 0xBC;
|
||||
constexpr char32_t small_down = 0xBD;
|
||||
constexpr char32_t left = 0xBE;
|
||||
|
||||
constexpr char32_t n_acute_uc = 0xC6;
|
||||
constexpr char32_t s_acute_uc = 0xD0;
|
||||
constexpr char32_t z_acute_uc = 0xD7;
|
||||
constexpr char32_t z_dot_uc = 0xD8;
|
||||
constexpr char32_t a_ogonek = 0xDD;
|
||||
constexpr char32_t c_acute = 0xDE;
|
||||
constexpr char32_t e_ogonek = 0xE6;
|
||||
constexpr char32_t n_acute = 0xF0;
|
||||
constexpr char32_t l_stroke = 0xF7;
|
||||
constexpr char32_t s_acute = 0xF8;
|
||||
constexpr char32_t z_acute = 0xFE;
|
||||
|
||||
constexpr char32_t z_dot = 0xFD;
|
||||
} // namespace CSChar
|
||||
|
||||
namespace UnicodeChar
|
||||
{
|
||||
UNICODE_A_OGONEK_UC = 260,
|
||||
UNICODE_C_ACUTE_UC = 262,
|
||||
UNICODE_E_OGONEK_UC = 280,
|
||||
UNICODE_N_ACUTE_UC = 323,
|
||||
UNICODE_L_STROKE_UC = 321,
|
||||
UNICODE_S_ACUTE_UC = 346,
|
||||
UNICODE_Z_DOT_UC = 379,
|
||||
UNICODE_Z_ACUTE_UC = 377,
|
||||
// Latin alphabet
|
||||
constexpr char32_t ae_uc = 0xC6;
|
||||
constexpr char32_t o_stroke_uc = 0xD8;
|
||||
constexpr char32_t y_acute_uc = 0xDD;
|
||||
constexpr char32_t ae = 0xE6;
|
||||
constexpr char32_t o_stroke = 0xF8;
|
||||
constexpr char32_t y_acute = 0xFD;
|
||||
constexpr char32_t a_breve_uc = 0x102;
|
||||
constexpr char32_t a_breve = 0x103;
|
||||
constexpr char32_t a_ogonek_uc = 0x104;
|
||||
constexpr char32_t a_ogonek = 0x105;
|
||||
constexpr char32_t c_acute_uc = 0x106;
|
||||
constexpr char32_t c_acute = 0x107;
|
||||
constexpr char32_t c_caron_uc = 0x10C;
|
||||
constexpr char32_t c_caron = 0x10D;
|
||||
constexpr char32_t e_ogonek_uc = 0x118;
|
||||
constexpr char32_t e_ogonek = 0x119;
|
||||
constexpr char32_t g_breve_uc = 0x11E;
|
||||
constexpr char32_t g_breve = 0x11F;
|
||||
constexpr char32_t i_with_dot_uc = 0x130;
|
||||
constexpr char32_t i_without_dot = 0x131;
|
||||
constexpr char32_t l_stroke_uc = 0x141;
|
||||
constexpr char32_t l_stroke = 0x142;
|
||||
constexpr char32_t n_acute_uc = 0x143;
|
||||
constexpr char32_t n_acute = 0x144;
|
||||
constexpr char32_t o_double_acute_uc = 0x150;
|
||||
constexpr char32_t o_double_acute = 0x151;
|
||||
constexpr char32_t s_acute_uc = 0x15A;
|
||||
constexpr char32_t s_acute = 0x15B;
|
||||
constexpr char32_t s_cedilla_uc = 0x15E;
|
||||
constexpr char32_t s_cedilla = 0x15F;
|
||||
constexpr char32_t u_double_acute_uc = 0x170;
|
||||
constexpr char32_t u_double_acute = 0x171;
|
||||
constexpr char32_t z_acute_uc = 0x179;
|
||||
constexpr char32_t z_acute = 0x17A;
|
||||
constexpr char32_t z_dot_uc = 0x17B;
|
||||
constexpr char32_t z_dot = 0x17C;
|
||||
constexpr char32_t f_with_hook_uc = 0x191;
|
||||
constexpr char32_t s_comma_uc = 0x218;
|
||||
constexpr char32_t s_comma = 0x219;
|
||||
constexpr char32_t t_comma_uc = 0x21A;
|
||||
constexpr char32_t t_comma = 0x21B;
|
||||
constexpr char32_t sharp_s_uc = 0x1E9E;
|
||||
|
||||
UNICODE_A_OGONEK = 261,
|
||||
UNICODE_C_ACUTE = 263,
|
||||
UNICODE_E_OGONEK = 281,
|
||||
UNICODE_N_ACUTE = 324,
|
||||
UNICODE_L_STROKE = 322,
|
||||
UNICODE_S_ACUTE = 347,
|
||||
UNICODE_Z_DOT = 380,
|
||||
UNICODE_Z_ACUTE = 378,
|
||||
};
|
||||
// Cyrillic alphabet
|
||||
constexpr char32_t cyrillic_io_uc = 0x401;
|
||||
constexpr char32_t cyrillic_a_uc = 0x410;
|
||||
constexpr char32_t cyrillic_be_uc = 0x411;
|
||||
constexpr char32_t cyrillic_ve_uc = 0x412;
|
||||
constexpr char32_t cyrillic_ghe_uc = 0x413;
|
||||
constexpr char32_t cyrillic_de_uc = 0x414;
|
||||
constexpr char32_t cyrillic_ie_uc = 0x415;
|
||||
constexpr char32_t cyrillic_zhe_uc = 0x416;
|
||||
constexpr char32_t cyrillic_ze_uc = 0x417;
|
||||
constexpr char32_t cyrillic_i_uc = 0x418;
|
||||
constexpr char32_t cyrillic_short_i_uc = 0x419;
|
||||
constexpr char32_t cyrillic_ka_uc = 0x41A;
|
||||
constexpr char32_t cyrillic_el_uc = 0x41B;
|
||||
constexpr char32_t cyrillic_em_uc = 0x41C;
|
||||
constexpr char32_t cyrillic_en_uc = 0x41D;
|
||||
constexpr char32_t cyrillic_o_uc = 0x41E;
|
||||
constexpr char32_t cyrillic_pe_uc = 0x41F;
|
||||
constexpr char32_t cyrillic_er_uc = 0x420;
|
||||
constexpr char32_t cyrillic_es_uc = 0x421;
|
||||
constexpr char32_t cyrillic_te_uc = 0x422;
|
||||
constexpr char32_t cyrillic_u_uc = 0x423;
|
||||
constexpr char32_t cyrillic_ef_uc = 0x424;
|
||||
constexpr char32_t cyrillic_ha_uc = 0x425;
|
||||
constexpr char32_t cyrillic_tse_uc = 0x426;
|
||||
constexpr char32_t cyrillic_che_uc = 0x427;
|
||||
constexpr char32_t cyrillic_sha_uc = 0x428;
|
||||
constexpr char32_t cyrillic_shcha_uc = 0x429;
|
||||
constexpr char32_t cyrillic_hard_sign_uc = 0x42A;
|
||||
constexpr char32_t cyrillic_yeru_uc = 0x42B;
|
||||
constexpr char32_t cyrillic_soft_sign_uc = 0x42C;
|
||||
constexpr char32_t cyrillic_e_uc = 0x42D;
|
||||
constexpr char32_t cyrillic_yu_uc = 0x42E;
|
||||
constexpr char32_t cyrillic_ya_uc = 0x42F;
|
||||
|
||||
enum UnicodeCatalan
|
||||
{
|
||||
UNICODE_INTERPUNCT = 183,
|
||||
};
|
||||
constexpr char32_t cyrillic_a = 0x430;
|
||||
constexpr char32_t cyrillic_be = 0x431;
|
||||
constexpr char32_t cyrillic_ve = 0x432;
|
||||
constexpr char32_t cyrillic_ghe = 0x433;
|
||||
constexpr char32_t cyrillic_de = 0x434;
|
||||
constexpr char32_t cyrillic_ie = 0x435;
|
||||
constexpr char32_t cyrillic_zhe = 0x436;
|
||||
constexpr char32_t cyrillic_ze = 0x437;
|
||||
constexpr char32_t cyrillic_i = 0x438;
|
||||
constexpr char32_t cyrillic_short_i = 0x439;
|
||||
constexpr char32_t cyrillic_ka = 0x43A;
|
||||
constexpr char32_t cyrillic_el = 0x43B;
|
||||
constexpr char32_t cyrillic_em = 0x43C;
|
||||
constexpr char32_t cyrillic_en = 0x43D;
|
||||
constexpr char32_t cyrillic_o = 0x43E;
|
||||
constexpr char32_t cyrillic_pe = 0x43F;
|
||||
constexpr char32_t cyrillic_er = 0x440;
|
||||
constexpr char32_t cyrillic_es = 0x441;
|
||||
constexpr char32_t cyrillic_te = 0x442;
|
||||
constexpr char32_t cyrillic_u = 0x443;
|
||||
constexpr char32_t cyrillic_ef = 0x444;
|
||||
constexpr char32_t cyrillic_ha = 0x445;
|
||||
constexpr char32_t cyrillic_tse = 0x446;
|
||||
constexpr char32_t cyrillic_che = 0x447;
|
||||
constexpr char32_t cyrillic_sha = 0x448;
|
||||
constexpr char32_t cyrillic_shcha = 0x449;
|
||||
constexpr char32_t cyrillic_hard_sign = 0x44A;
|
||||
constexpr char32_t cyrillic_yeru = 0x44B;
|
||||
constexpr char32_t cyrillic_soft_sign = 0x44C;
|
||||
constexpr char32_t cyrillic_e = 0x44D;
|
||||
constexpr char32_t cyrillic_yu = 0x44E;
|
||||
constexpr char32_t cyrillic_ya = 0x44F;
|
||||
|
||||
enum UnicodeGerman
|
||||
{
|
||||
UNICODE_CAPITAL_SHARP_S = 0x1E9E,
|
||||
};
|
||||
constexpr char32_t cyrillic_io = 0x451;
|
||||
|
||||
enum UnicodeNorwegianDanish
|
||||
{
|
||||
UNICODE_AE_UC = 198,
|
||||
UNICODE_O_STROKE_UC = 216,
|
||||
UNICODE_AE = 230,
|
||||
UNICODE_O_STROKE = 248,
|
||||
};
|
||||
// Punctuation
|
||||
constexpr char32_t leftguillemet = 0xAB;
|
||||
constexpr char32_t rightguillemet = 0xBB;
|
||||
constexpr char32_t interpunct = 0x49F;
|
||||
constexpr char32_t single_quote_open = 0x2018;
|
||||
constexpr char32_t single_quote_end = 0x2019;
|
||||
constexpr char32_t single_german_quote_open = 0x201A;
|
||||
constexpr char32_t german_quote_open = 0x201E;
|
||||
constexpr char32_t bullet = 0x2022;
|
||||
constexpr char32_t ellipsis = 0x2026;
|
||||
constexpr char32_t quote_open = 0x201C;
|
||||
constexpr char32_t quote_close = 0x201D;
|
||||
|
||||
enum UnicodeCyrillic
|
||||
{
|
||||
UNICODE_CYRILLIC_A_UC = 1040,
|
||||
UNICODE_CYRILLIC_BE_UC = 1041,
|
||||
UNICODE_CYRILLIC_VE_UC = 1042,
|
||||
UNICODE_CYRILLIC_GHE_UC = 1043,
|
||||
UNICODE_CYRILLIC_DE_UC = 1044,
|
||||
UNICODE_CYRILLIC_IE_UC = 1045,
|
||||
UNICODE_CYRILLIC_ZHE_UC = 1046,
|
||||
UNICODE_CYRILLIC_ZE_UC = 1047,
|
||||
UNICODE_CYRILLIC_I_UC = 1048,
|
||||
UNICODE_CYRILLIC_SHORT_I_UC = 1049,
|
||||
UNICODE_CYRILLIC_KA_UC = 1050,
|
||||
UNICODE_CYRILLIC_EL_UC = 1051,
|
||||
UNICODE_CYRILLIC_EM_UC = 1052,
|
||||
UNICODE_CYRILLIC_EN_UC = 1053,
|
||||
UNICODE_CYRILLIC_O_UC = 1054,
|
||||
UNICODE_CYRILLIC_PE_UC = 1055,
|
||||
UNICODE_CYRILLIC_ER_UC = 1056,
|
||||
UNICODE_CYRILLIC_ES_UC = 1057,
|
||||
UNICODE_CYRILLIC_TE_UC = 1058,
|
||||
UNICODE_CYRILLIC_U_UC = 1059,
|
||||
UNICODE_CYRILLIC_EF_UC = 1060,
|
||||
UNICODE_CYRILLIC_HA_UC = 1061,
|
||||
UNICODE_CYRILLIC_TSE_UC = 1062,
|
||||
UNICODE_CYRILLIC_CHE_UC = 1063,
|
||||
UNICODE_CYRILLIC_SHA_UC = 1064,
|
||||
UNICODE_CYRILLIC_SHCHA_UC = 1065,
|
||||
UNICODE_CYRILLIC_HARD_SIGN_UC = 1066,
|
||||
UNICODE_CYRILLIC_YERU_UC = 1067,
|
||||
UNICODE_CYRILLIC_SOFT_SIGN_UC = 1068,
|
||||
UNICODE_CYRILLIC_E_UC = 1069,
|
||||
UNICODE_CYRILLIC_YU_UC = 1070,
|
||||
UNICODE_CYRILLIC_YA_UC = 1071,
|
||||
// Currency
|
||||
constexpr char32_t guilder = 0x192;
|
||||
constexpr char32_t euro = 0x20AC;
|
||||
|
||||
UNICODE_CYRILLIC_A = 1072,
|
||||
UNICODE_CYRILLIC_BE = 1073,
|
||||
UNICODE_CYRILLIC_VE = 1074,
|
||||
UNICODE_CYRILLIC_GHE = 1075,
|
||||
UNICODE_CYRILLIC_DE = 1076,
|
||||
UNICODE_CYRILLIC_IE = 1077,
|
||||
UNICODE_CYRILLIC_ZHE = 1078,
|
||||
UNICODE_CYRILLIC_ZE = 1079,
|
||||
UNICODE_CYRILLIC_I = 1080,
|
||||
UNICODE_CYRILLIC_SHORT_I = 1081,
|
||||
UNICODE_CYRILLIC_KA = 1082,
|
||||
UNICODE_CYRILLIC_EL = 1083,
|
||||
UNICODE_CYRILLIC_EM = 1084,
|
||||
UNICODE_CYRILLIC_EN = 1085,
|
||||
UNICODE_CYRILLIC_O = 1086,
|
||||
UNICODE_CYRILLIC_PE = 1087,
|
||||
UNICODE_CYRILLIC_ER = 1088,
|
||||
UNICODE_CYRILLIC_ES = 1089,
|
||||
UNICODE_CYRILLIC_TE = 1090,
|
||||
UNICODE_CYRILLIC_U = 1091,
|
||||
UNICODE_CYRILLIC_EF = 1092,
|
||||
UNICODE_CYRILLIC_HA = 1093,
|
||||
UNICODE_CYRILLIC_TSE = 1094,
|
||||
UNICODE_CYRILLIC_CHE = 1095,
|
||||
UNICODE_CYRILLIC_SHA = 1096,
|
||||
UNICODE_CYRILLIC_SHCHA = 1097,
|
||||
UNICODE_CYRILLIC_HARD_SIGN = 1098,
|
||||
UNICODE_CYRILLIC_YERU = 1099,
|
||||
UNICODE_CYRILLIC_SOFT_SIGN = 1100,
|
||||
UNICODE_CYRILLIC_E = 1101,
|
||||
UNICODE_CYRILLIC_YU = 1102,
|
||||
UNICODE_CYRILLIC_YA = 1103,
|
||||
// Dingbats
|
||||
constexpr char32_t up = 0x25B2;
|
||||
constexpr char32_t small_up = 0x25B4;
|
||||
constexpr char32_t right = 0x25B6;
|
||||
constexpr char32_t down = 0x25BC;
|
||||
constexpr char32_t small_down = 0x25BE;
|
||||
constexpr char32_t left = 0x25C0;
|
||||
constexpr char32_t air = 0x2601;
|
||||
constexpr char32_t tick = 0x2713;
|
||||
constexpr char32_t plus = 0x2795;
|
||||
constexpr char32_t minus = 0x2796;
|
||||
|
||||
UNICODE_CYRILLIC_IO_UC = 1025,
|
||||
UNICODE_CYRILLIC_IO = 1105,
|
||||
// Emoji
|
||||
constexpr char32_t cross = 0x274C;
|
||||
constexpr char32_t variation_selector = 0xFE0F;
|
||||
constexpr char32_t water = 0x1F30A;
|
||||
constexpr char32_t road = 0x1F6E3;
|
||||
constexpr char32_t railway = 0x1F6E4;
|
||||
|
||||
};
|
||||
// Misc
|
||||
constexpr char32_t superscript_minus_one = 0x207B;
|
||||
|
||||
enum UnicodeTurkish
|
||||
{
|
||||
UNICODE_G_BREVE_UC = 286,
|
||||
UNICODE_G_BREVE = 287,
|
||||
UNICODE_I_WITH_DOT_UC = 304,
|
||||
UNICODE_I_WITHOUT_DOT = 305,
|
||||
UNICODE_S_CEDILLA_UC = 350,
|
||||
UNICODE_S_CEDILLA = 351,
|
||||
};
|
||||
|
||||
enum UnicodeRomanian
|
||||
{
|
||||
UNICODE_A_BREVE_UC = 258,
|
||||
UNICODE_A_BREVE = 259,
|
||||
UNICODE_S_COMMA_UC = 536,
|
||||
UNICODE_S_COMMA = 537,
|
||||
UNICODE_T_COMMA_UC = 538,
|
||||
UNICODE_T_COMMA = 539,
|
||||
};
|
||||
|
||||
enum UnicodeDingbats
|
||||
{
|
||||
UNICODE_DINGBATS_PLUS = 0x2795,
|
||||
UNICODE_DINGBATS_MINUS = 0x2796,
|
||||
};
|
||||
|
||||
enum UnicodeCurrency
|
||||
{
|
||||
UNICODE_GUILDER_SIGN = 402,
|
||||
|
||||
// Not a currency sign, but the guilder sign will be capitalised to this.
|
||||
UNICODE_F_WITH_HOOK_UC = 401,
|
||||
};
|
||||
|
||||
enum UnicodePunctuation
|
||||
{
|
||||
UNICODE_ELLIPSIS = 8230,
|
||||
};
|
||||
|
||||
enum UnicodeCzech
|
||||
{
|
||||
UNICODE_C_CARON_UC = 268,
|
||||
UNICODE_C_CARON = 269,
|
||||
UNICODE_Y_ACUTE_UC = 221,
|
||||
UNICODE_Y_ACUTE = 253,
|
||||
};
|
||||
|
||||
enum UnicodeHungarian
|
||||
{
|
||||
UNICODE_O_DOUBLE_ACUTE_UC = 336,
|
||||
UNICODE_O_DOUBLE_ACUTE = 337,
|
||||
UNICODE_U_DOUBLE_ACUTE_UC = 368,
|
||||
UNICODE_U_DOUBLE_ACUTE = 369,
|
||||
};
|
||||
|
||||
#endif
|
||||
}; // namespace UnicodeChar
|
||||
|
||||
Reference in New Issue
Block a user