Adopt OpenLoco's UTF-8 handling

This commit is contained in:
Gymnasiast 2018-09-21 20:38:50 +02:00
parent cdcd0b017c
commit 7d7d0aeab5
6 changed files with 412 additions and 676 deletions

View File

@ -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);
}
}

View File

@ -74,325 +74,306 @@ int32_t font_sprite_get_codepoint_offset(int32_t codepoint)
{
switch (codepoint)
{
case FORMAT_ENDQUOTES:
case UnicodeChar::quote_close:
return 34 - 32;
case FORMAT_UP:
case UnicodeChar::up:
return 160 - 32;
case FORMAT_INVERTEDEXCLAMATION:
return 161 - 32;
case FORMAT_POUND:
return 163 - 32;
case FORMAT_YEN:
return 165 - 32;
case FORMAT_COPYRIGHT:
return 169 - 32;
case FORMAT_DOWN:
case UnicodeChar::down:
return 170 - 32;
case FORMAT_LEFTGUILLEMET:
return 171 - 32;
case FORMAT_TICK:
case UnicodeChar::tick:
return 172 - 32;
case FORMAT_CROSS:
case UnicodeChar::cross:
return 173 - 32;
case FORMAT_RIGHT:
case UnicodeChar::right:
return 175 - 32;
case FORMAT_DEGREE:
return 176 - 32;
case FORMAT_SYMBOL_RAILWAY:
case UnicodeChar::railway:
return 177 - 32;
case FORMAT_SQUARED:
return 178 - 32;
case FORMAT_OPENQUOTES:
case UnicodeChar::quote_open:
return 180 - 32;
case FORMAT_EURO:
case UnicodeChar::euro:
return 181 - 32;
case FORMAT_SYMBOL_ROAD:
case UnicodeChar::road:
return 182 - 32;
case FORMAT_SYMBOL_FLAG:
case UnicodeChar::air:
return 183 - 32;
case FORMAT_APPROX:
case UnicodeChar::water:
return 184 - 32;
case FORMAT_POWERNEGATIVEONE:
case UnicodeChar::superscript_minus_one:
return 185 - 32;
case FORMAT_BULLET:
case UnicodeChar::bullet:
return 186 - 32;
case FORMAT_RIGHTGUILLEMET:
return 187 - 32;
case FORMAT_SMALLUP:
case UnicodeChar::small_up:
return 188 - 32;
case FORMAT_SMALLDOWN:
case UnicodeChar::small_down:
return 189 - 32;
case FORMAT_LEFT:
case UnicodeChar::left:
return 190 - 32;
case FORMAT_INVERTEDQUESTION:
return 191 - 32;
case UNICODE_A_OGONEK_UC:
case UnicodeChar::a_ogonek_uc:
return RCT2_A_OGONEK_UC - 32;
case UNICODE_C_ACUTE_UC:
case UnicodeChar::c_acute_uc:
return RCT2_C_ACUTE_UC - 32;
case UNICODE_E_OGONEK_UC:
case UnicodeChar::e_ogonek_uc:
return RCT2_E_OGONEK_UC - 32;
case UNICODE_N_ACUTE_UC:
case UnicodeChar::n_acute_uc:
return RCT2_N_ACUTE_UC - 32;
case UNICODE_L_STROKE_UC:
case UnicodeChar::l_stroke_uc:
return RCT2_L_STROKE_UC - 32;
case UNICODE_S_ACUTE_UC:
case UnicodeChar::s_acute_uc:
return RCT2_S_ACUTE_UC - 32;
case UNICODE_Z_DOT_UC:
case UnicodeChar::z_dot_uc:
return RCT2_Z_DOT_UC - 32;
case UNICODE_Z_ACUTE_UC:
case UnicodeChar::z_acute_uc:
return RCT2_Z_ACUTE_UC - 32;
case UNICODE_A_OGONEK:
case UnicodeChar::a_ogonek:
return RCT2_A_OGONEK - 32;
case UNICODE_C_ACUTE:
case UnicodeChar::c_acute:
return RCT2_C_ACUTE - 32;
case UNICODE_E_OGONEK:
case UnicodeChar::e_ogonek:
return RCT2_E_OGONEK - 32;
case UNICODE_N_ACUTE:
case UnicodeChar::n_acute:
return RCT2_N_ACUTE - 32;
case UNICODE_L_STROKE:
case UnicodeChar::l_stroke:
return RCT2_L_STROKE - 32;
case UNICODE_S_ACUTE:
case UnicodeChar::s_acute:
return RCT2_S_ACUTE - 32;
case UNICODE_Z_DOT:
case UnicodeChar::z_dot:
return RCT2_Z_DOT - 32;
case UNICODE_Z_ACUTE:
case UnicodeChar::z_acute:
return RCT2_Z_ACUTE - 32;
// Render capital sharp-S (ẞ) with lowercase sprite (ß)
case UNICODE_CAPITAL_SHARP_S:
case UnicodeChar::sharp_s_uc:
return 223 - 32;
// Norwegian/Danish
case UNICODE_AE_UC:
case UnicodeChar::ae_uc:
return SPR_G2_AE_UPPER - SPR_CHAR_START;
case UNICODE_O_STROKE_UC:
case UnicodeChar::o_stroke_uc:
return SPR_G2_O_STROKE_UPPER - SPR_CHAR_START;
case UNICODE_AE:
case UnicodeChar::ae:
return SPR_G2_AE_LOWER - SPR_CHAR_START;
case UNICODE_O_STROKE:
case UnicodeChar::o_stroke:
return SPR_G2_O_STROKE_LOWER - SPR_CHAR_START;
case UNICODE_DINGBATS_PLUS:
case UnicodeChar::plus:
return 11;
case UNICODE_DINGBATS_MINUS:
case UnicodeChar::minus:
return 13;
// Cyrillic
case UNICODE_CYRILLIC_A_UC:
case UnicodeChar::cyrillic_a_uc:
return 'A' - 32;
case UNICODE_CYRILLIC_BE_UC:
case UnicodeChar::cyrillic_be_uc:
return SPR_G2_CYRILLIC_BE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_VE_UC:
case UnicodeChar::cyrillic_ve_uc:
return 'B' - 32;
case UNICODE_CYRILLIC_GHE_UC:
case UnicodeChar::cyrillic_ghe_uc:
return SPR_G2_CYRILLIC_GHE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_DE_UC:
case UnicodeChar::cyrillic_de_uc:
return SPR_G2_CYRILLIC_DE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_IE_UC:
case UnicodeChar::cyrillic_ie_uc:
return 'E' - 32;
case UNICODE_CYRILLIC_ZHE_UC:
case UnicodeChar::cyrillic_zhe_uc:
return SPR_G2_CYRILLIC_ZHE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_ZE_UC:
case UnicodeChar::cyrillic_ze_uc:
return SPR_G2_CYRILLIC_ZE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_I_UC:
case UnicodeChar::cyrillic_i_uc:
return SPR_G2_CYRILLIC_I_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHORT_I_UC:
case UnicodeChar::cyrillic_short_i_uc:
return SPR_G2_CYRILLIC_SHORT_I_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_KA_UC:
case UnicodeChar::cyrillic_ka_uc:
return 'K' - 32;
case UNICODE_CYRILLIC_EL_UC:
case UnicodeChar::cyrillic_el_uc:
return SPR_G2_CYRILLIC_EL_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_EM_UC:
case UnicodeChar::cyrillic_em_uc:
return 'M' - 32;
case UNICODE_CYRILLIC_EN_UC:
case UnicodeChar::cyrillic_en_uc:
return 'H' - 32;
case UNICODE_CYRILLIC_O_UC:
case UnicodeChar::cyrillic_o_uc:
return 'O' - 32;
case UNICODE_CYRILLIC_PE_UC:
case UnicodeChar::cyrillic_pe_uc:
return SPR_G2_CYRILLIC_PE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_ER_UC:
case UnicodeChar::cyrillic_er_uc:
return 'P' - 32;
case UNICODE_CYRILLIC_ES_UC:
case UnicodeChar::cyrillic_es_uc:
return 'C' - 32;
case UNICODE_CYRILLIC_TE_UC:
case UnicodeChar::cyrillic_te_uc:
return 'T' - 32;
case UNICODE_CYRILLIC_U_UC:
case UnicodeChar::cyrillic_u_uc:
return SPR_G2_CYRILLIC_U_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_EF_UC:
case UnicodeChar::cyrillic_ef_uc:
return SPR_G2_CYRILLIC_EF_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_HA_UC:
case UnicodeChar::cyrillic_ha_uc:
return 'X' - 32;
case UNICODE_CYRILLIC_TSE_UC:
case UnicodeChar::cyrillic_tse_uc:
return SPR_G2_CYRILLIC_TSE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_CHE_UC:
case UnicodeChar::cyrillic_che_uc:
return SPR_G2_CYRILLIC_CHE_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHA_UC:
case UnicodeChar::cyrillic_sha_uc:
return SPR_G2_CYRILLIC_SHA_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHCHA_UC:
case UnicodeChar::cyrillic_shcha_uc:
return SPR_G2_CYRILLIC_SHCHA_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_HARD_SIGN_UC:
case UnicodeChar::cyrillic_hard_sign_uc:
return SPR_G2_CYRILLIC_HARD_SIGN_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_YERU_UC:
case UnicodeChar::cyrillic_yeru_uc:
return SPR_G2_CYRILLIC_YERU_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SOFT_SIGN_UC:
case UnicodeChar::cyrillic_soft_sign_uc:
return SPR_G2_CYRILLIC_SOFT_SIGN_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_E_UC:
case UnicodeChar::cyrillic_e_uc:
return SPR_G2_CYRILLIC_E_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_YU_UC:
case UnicodeChar::cyrillic_yu_uc:
return SPR_G2_CYRILLIC_YU_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_YA_UC:
case UnicodeChar::cyrillic_ya_uc:
return SPR_G2_CYRILLIC_YA_UPPER - SPR_CHAR_START;
case UNICODE_CYRILLIC_A:
case UnicodeChar::cyrillic_a:
return 'a' - 32;
case UNICODE_CYRILLIC_BE:
case UnicodeChar::cyrillic_be:
return SPR_G2_CYRILLIC_BE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_VE:
case UnicodeChar::cyrillic_ve:
return SPR_G2_CYRILLIC_VE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_GHE:
case UnicodeChar::cyrillic_ghe:
return SPR_G2_CYRILLIC_GHE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_DE:
case UnicodeChar::cyrillic_de:
return SPR_G2_CYRILLIC_DE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_IE:
case UnicodeChar::cyrillic_ie:
return 'e' - 32;
case UNICODE_CYRILLIC_ZHE:
case UnicodeChar::cyrillic_zhe:
return SPR_G2_CYRILLIC_ZHE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_ZE:
case UnicodeChar::cyrillic_ze:
return SPR_G2_CYRILLIC_ZE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_I:
case UnicodeChar::cyrillic_i:
return SPR_G2_CYRILLIC_I_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHORT_I:
case UnicodeChar::cyrillic_short_i:
return SPR_G2_CYRILLIC_SHORT_I_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_KA:
case UnicodeChar::cyrillic_ka:
return SPR_G2_CYRILLIC_KA_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_EL:
case UnicodeChar::cyrillic_el:
return SPR_G2_CYRILLIC_EL_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_EM:
case UnicodeChar::cyrillic_em:
return SPR_G2_CYRILLIC_EM_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_EN:
case UnicodeChar::cyrillic_en:
return SPR_G2_CYRILLIC_EN_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_O:
case UnicodeChar::cyrillic_o:
return 'o' - 32;
case UNICODE_CYRILLIC_PE:
case UnicodeChar::cyrillic_pe:
return SPR_G2_CYRILLIC_PE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_ER:
case UnicodeChar::cyrillic_er:
return 'p' - 32;
case UNICODE_CYRILLIC_ES:
case UnicodeChar::cyrillic_es:
return 'c' - 32;
case UNICODE_CYRILLIC_TE:
case UnicodeChar::cyrillic_te:
return SPR_G2_CYRILLIC_TE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_U:
case UnicodeChar::cyrillic_u:
return 'y' - 32;
case UNICODE_CYRILLIC_EF:
case UnicodeChar::cyrillic_ef:
return SPR_G2_CYRILLIC_EF_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_HA:
case UnicodeChar::cyrillic_ha:
return 'x' - 32;
case UNICODE_CYRILLIC_TSE:
case UnicodeChar::cyrillic_tse:
return SPR_G2_CYRILLIC_TSE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_CHE:
case UnicodeChar::cyrillic_che:
return SPR_G2_CYRILLIC_CHE_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHA:
case UnicodeChar::cyrillic_sha:
return SPR_G2_CYRILLIC_SHA_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SHCHA:
case UnicodeChar::cyrillic_shcha:
return SPR_G2_CYRILLIC_SHCHA_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_HARD_SIGN:
case UnicodeChar::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:
case UnicodeChar::cyrillic_yeru:
return SPR_G2_CYRILLIC_YERU_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_SOFT_SIGN:
case UnicodeChar::cyrillic_soft_sign:
return SPR_G2_CYRILLIC_SOFT_SIGN_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_E:
case UnicodeChar::cyrillic_e:
return SPR_G2_CYRILLIC_E_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_YU:
case UnicodeChar::cyrillic_yu:
return SPR_G2_CYRILLIC_YU_LOWER - SPR_CHAR_START;
case UNICODE_CYRILLIC_YA:
case UnicodeChar::cyrillic_ya:
return SPR_G2_CYRILLIC_YA_LOWER - SPR_CHAR_START;
// Looks just like Ë.
case UNICODE_CYRILLIC_IO_UC:
case UnicodeChar::cyrillic_io_uc:
return 171;
case UNICODE_CYRILLIC_IO:
case UnicodeChar::cyrillic_io:
return 203;
case FORMAT_GERMAN_OPENQUOTES:
case UnicodeChar::german_quote_open:
return SPR_G2_GERMAN_OPENQUOTES - SPR_CHAR_START;
case FORMAT_SINGLE_OPENQUOTE:
case UnicodeChar::single_quote_open:
return 64;
case FORMAT_SINGLE_ENDQUOTE:
case UnicodeChar::single_quote_end:
return 7;
case FORMAT_GERMAN_SINGLE_OPENQUOTE:
case UnicodeChar::single_german_quote_open:
return 12;
case UNICODE_GUILDER_SIGN:
case UnicodeChar::guilder:
return SPR_G2_GUILDER_SIGN - SPR_CHAR_START;
// Turkish
case UNICODE_G_BREVE_UC:
case UnicodeChar::g_breve_uc:
return SPR_G2_G_BREVE_UPPER - SPR_CHAR_START;
case UNICODE_I_WITH_DOT_UC:
case UnicodeChar::i_with_dot_uc:
return SPR_G2_I_WITH_DOT_UPPER - SPR_CHAR_START;
case UNICODE_S_CEDILLA_UC:
case UnicodeChar::s_cedilla_uc:
return SPR_G2_S_CEDILLA_UPPER - SPR_CHAR_START;
case UNICODE_G_BREVE:
case UnicodeChar::g_breve:
return SPR_G2_G_BREVE_LOWER - SPR_CHAR_START;
case UNICODE_I_WITHOUT_DOT:
case UnicodeChar::i_without_dot:
return SPR_G2_I_WITHOUT_DOT_LOWER - SPR_CHAR_START;
case UNICODE_S_CEDILLA:
case UnicodeChar::s_cedilla:
return SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START;
case UNICODE_INTERPUNCT:
case UnicodeChar::interpunct:
return SPR_G2_INTERPUNCT - SPR_CHAR_START;
case UNICODE_ELLIPSIS:
case UnicodeChar::ellipsis:
return SPR_G2_ELLIPSIS - SPR_CHAR_START;
// Romanian
case UNICODE_A_BREVE_UC:
case UnicodeChar::a_breve_uc:
return SPR_G2_A_BREVE_UPPER - SPR_CHAR_START;
case UNICODE_A_BREVE:
case UnicodeChar::a_breve:
// Render as â, there is no visual difference on this scale.
return 194;
case UNICODE_S_COMMA_UC:
case UnicodeChar::s_comma_uc:
// Also no visual difference.
return SPR_G2_S_CEDILLA_UPPER - SPR_CHAR_START;
case UNICODE_S_COMMA:
case UnicodeChar::s_comma:
return SPR_G2_S_CEDILLA_LOWER - SPR_CHAR_START;
case UNICODE_T_COMMA_UC:
case UnicodeChar::t_comma_uc:
return SPR_G2_T_COMMA_UPPER - SPR_CHAR_START;
case UNICODE_T_COMMA:
case UnicodeChar::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:
case UnicodeChar::f_with_hook_uc:
return 'F' - 32;
// Czech
case UNICODE_C_CARON_UC:
case UnicodeChar::c_caron_uc:
return SPR_G2_C_CARON_UPPER - SPR_CHAR_START;
case UNICODE_C_CARON:
case UnicodeChar::c_caron:
return SPR_G2_C_CARON_LOWER - SPR_CHAR_START;
case UNICODE_Y_ACUTE_UC:
case UnicodeChar::y_acute_uc:
return SPR_G2_Y_ACUTE_UPPER - SPR_CHAR_START;
case UNICODE_Y_ACUTE:
case UnicodeChar::y_acute:
return SPR_G2_Y_ACUTE_LOWER - SPR_CHAR_START;
// Hungarian
case UNICODE_O_DOUBLE_ACUTE_UC:
case UnicodeChar::o_double_acute_uc:
return SPR_G2_O_DOUBLE_ACUTE_UPPER - SPR_CHAR_START;
case UNICODE_O_DOUBLE_ACUTE:
case UnicodeChar::o_double_acute:
return SPR_G2_O_DOUBLE_ACUTE_LOWER - SPR_CHAR_START;
case UNICODE_U_DOUBLE_ACUTE_UC:
case UnicodeChar::u_double_acute_uc:
return SPR_G2_U_DOUBLE_ACUTE_UPPER - SPR_CHAR_START;
case UNICODE_U_DOUBLE_ACUTE:
case UnicodeChar::u_double_acute:
return SPR_G2_U_DOUBLE_ACUTE_LOWER - SPR_CHAR_START;
default:
@ -502,93 +483,98 @@ bool font_supports_string_sprite(const utf8* text)
bool supported = false;
switch (codepoint)
{
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:
// Latin alphabet
case UnicodeChar::ae_uc:
case UnicodeChar::o_stroke_uc:
case UnicodeChar::y_acute_uc:
case UnicodeChar::ae:
case UnicodeChar::o_stroke:
case UnicodeChar::y_acute:
case UnicodeChar::a_breve_uc:
case UnicodeChar::a_breve:
case UnicodeChar::a_ogonek_uc:
case UnicodeChar::a_ogonek:
case UnicodeChar::c_acute_uc:
case UnicodeChar::c_acute:
case UnicodeChar::c_caron_uc:
case UnicodeChar::c_caron:
case UnicodeChar::e_ogonek_uc:
case UnicodeChar::e_ogonek:
case UnicodeChar::g_breve_uc:
case UnicodeChar::g_breve:
case UnicodeChar::i_with_dot_uc:
case UnicodeChar::i_without_dot:
case UnicodeChar::l_stroke_uc:
case UnicodeChar::l_stroke:
case UnicodeChar::n_acute_uc:
case UnicodeChar::n_acute:
case UnicodeChar::o_double_acute_uc:
case UnicodeChar::o_double_acute:
case UnicodeChar::s_acute_uc:
case UnicodeChar::s_acute:
case UnicodeChar::s_cedilla_uc:
case UnicodeChar::s_cedilla:
case UnicodeChar::u_double_acute_uc:
case UnicodeChar::u_double_acute:
case UnicodeChar::z_acute_uc:
case UnicodeChar::z_acute:
case UnicodeChar::z_dot_uc:
case UnicodeChar::z_dot:
case UnicodeChar::f_with_hook_uc:
case UnicodeChar::s_comma_uc:
case UnicodeChar::s_comma:
case UnicodeChar::t_comma_uc:
case UnicodeChar::t_comma:
case UnicodeChar::sharp_s_uc:
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:
// Cyrillic alphabet
case UnicodeChar::cyrillic_io_uc:
case UnicodeChar::cyrillic_io:
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:
// Punctuation
case UnicodeChar::leftguillemet:
case UnicodeChar::rightguillemet:
case UnicodeChar::interpunct:
case UnicodeChar::single_quote_open:
case UnicodeChar::single_quote_end:
case UnicodeChar::single_german_quote_open:
case UnicodeChar::german_quote_open:
case UnicodeChar::bullet:
case UnicodeChar::ellipsis:
case UnicodeChar::quote_open:
case UnicodeChar::quote_close:
case UNICODE_CYRILLIC_IO_UC:
case UNICODE_CYRILLIC_IO:
// Currency
case UnicodeChar::guilder:
case UnicodeChar::euro:
case FORMAT_GERMAN_OPENQUOTES:
case FORMAT_SINGLE_OPENQUOTE:
case FORMAT_SINGLE_ENDQUOTE:
case FORMAT_GERMAN_SINGLE_OPENQUOTE:
// Dingbats
case UnicodeChar::up:
case UnicodeChar::small_up:
case UnicodeChar::right:
case UnicodeChar::down:
case UnicodeChar::small_down:
case UnicodeChar::left:
case UnicodeChar::air:
case UnicodeChar::tick:
case UnicodeChar::plus:
case UnicodeChar::minus:
case UNICODE_GUILDER_SIGN:
// Emoji
case UnicodeChar::cross:
case UnicodeChar::variation_selector:
case UnicodeChar::water:
case UnicodeChar::road:
case UnicodeChar::railway:
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:
// Misc
case UnicodeChar::superscript_minus_one:
supported = true;
break;
default:
if ((codepoint >= 32 && codepoint < 256)
|| (codepoint >= UNICODE_CYRILLIC_A_UC && codepoint <= UNICODE_CYRILLIC_YA))
|| (codepoint >= UnicodeChar::cyrillic_a_uc && codepoint <= UnicodeChar::cyrillic_ya))
{
supported = true;
}

View File

@ -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 }
{ RCT2_A_OGONEK_UC, UnicodeChar::a_ogonek_uc },
{ 160, UnicodeChar::up },
{ RCT2_C_ACUTE_UC, UnicodeChar::c_acute_uc },
{ RCT2_E_OGONEK_UC, UnicodeChar::e_ogonek_uc },
{ RCT2_L_STROKE_UC, UnicodeChar::l_stroke_uc },
{ 170, UnicodeChar::down },
{ 172, UnicodeChar::tick },
{ 173, UnicodeChar::cross },
{ 175, UnicodeChar::right },
{ 177, UnicodeChar::railway },
{ 180, UnicodeChar::quote_open },
{ 181, UnicodeChar::euro },
{ 182, UnicodeChar::road },
{ 183, UnicodeChar::air },
{ 184, UnicodeChar::water },
{ 185, UnicodeChar::superscript_minus_one},
{ 186, UnicodeChar::bullet },
{ 188, UnicodeChar::small_up },
{ 189, UnicodeChar::small_down },
{ 190, UnicodeChar::left },
{ RCT2_N_ACUTE_UC, UnicodeChar::n_acute_uc },
{ RCT2_S_ACUTE_UC, UnicodeChar::s_acute_uc },
{ RCT2_Z_ACUTE_UC, UnicodeChar::z_acute_uc },
{ RCT2_Z_DOT_UC, UnicodeChar::z_dot_uc },
{ RCT2_A_OGONEK, UnicodeChar::a_ogonek },
{ RCT2_C_ACUTE, UnicodeChar::c_acute },
{ RCT2_E_OGONEK, UnicodeChar::e_ogonek },
{ RCT2_N_ACUTE, UnicodeChar::n_acute },
{ RCT2_L_STROKE, UnicodeChar::l_stroke },
{ RCT2_S_ACUTE, UnicodeChar::s_acute },
{ RCT2_Z_DOT, UnicodeChar::z_dot },
{ RCT2_Z_ACUTE, UnicodeChar::z_acute },
};
static int32_t encoding_search_compare(const void *pKey, const void *pEntry)

View File

@ -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);

View File

@ -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;

View File

@ -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,45 +93,6 @@ 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
};
@ -158,171 +118,159 @@ enum RCT2Polish
RCT2_Z_ACUTE = 254, // 0xFE
};
enum UnicodePolish
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