mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-22 01:45:19 +01:00
public: add functions to convert from Unicode codepoints into CP1251 or CP1252
This commit is contained in:
parent
2e0fc3e4c1
commit
a084dea07c
@ -205,3 +205,42 @@ size_t Q_UTF16ToUTF8( char *dst, size_t dstsize, const uint16_t *src, size_t src
|
||||
|
||||
return dsti;
|
||||
}
|
||||
|
||||
static uint16_t table_cp1251[64] = {
|
||||
0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
|
||||
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x007F, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
|
||||
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
|
||||
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
|
||||
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457
|
||||
};
|
||||
|
||||
uint32_t Q_UnicodeToCP1251( uint32_t uc )
|
||||
{
|
||||
size_t i;
|
||||
|
||||
if( uc < 0x80 )
|
||||
return uc;
|
||||
|
||||
if( uc >= 0x0410 && uc <= 0x042F )
|
||||
return uc - 0x410 + 0xC0;
|
||||
|
||||
if( uc >= 0x0430 && uc <= 0x044F )
|
||||
return uc - 0x430 + 0xE0;
|
||||
|
||||
for( i = 0; i < sizeof( table_cp1251 ) / sizeof( table_cp1251[0] ); i++ )
|
||||
{
|
||||
if( uc == (uint32_t)table_cp1251[i] )
|
||||
return i + 0x80;
|
||||
}
|
||||
|
||||
return '?';
|
||||
}
|
||||
|
||||
uint32_t Q_UnicodeToCP1252( uint32_t uc )
|
||||
{
|
||||
// this is NOT valid way to convert Unicode codepoint back to CP1252!!!
|
||||
return uc < 0xFF ? uc : '?';
|
||||
}
|
||||
|
@ -37,4 +37,8 @@ size_t Q_UTF8Length( const char *s );
|
||||
// srcsize in byte pairs
|
||||
size_t Q_UTF16ToUTF8( char *dst, size_t dstsize, const uint16_t *src, size_t srcsize );
|
||||
|
||||
// function to convert Unicode codepoints into CP1251 or CP1252
|
||||
uint32_t Q_UnicodeToCP1251( uint32_t uc );
|
||||
uint32_t Q_UnicodeToCP1252( uint32_t uc );
|
||||
|
||||
#endif // UTFLIB_H
|
||||
|
Loading…
Reference in New Issue
Block a user