auto-make standard CP950 table from the extended table

This commit is contained in:
Wengier
2021-11-15 02:12:39 -05:00
parent 4ada3ccf76
commit 9f2028336e
3 changed files with 1060 additions and 3390 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -518,7 +518,7 @@ bool CodePageHostToGuestUTF16(char *d/*CROSS_LEN*/,const uint16_t *s/*CROSS_LEN*
case 949:
return String_HOST_TO_DBCS_UTF16<uint16_t>(d,s,cp949_to_unicode_hitbl,cp949_to_unicode_raw,sizeof(cp949_to_unicode_raw)/sizeof(cp949_to_unicode_raw[0]));
case 950:
if (chinasea) return String_HOST_TO_DBCS_UTF16<uint16_t>(d,s,cp950sea_to_unicode_hitbl,cp950sea_to_unicode_raw,sizeof(cp950sea_to_unicode_raw)/sizeof(cp950sea_to_unicode_raw[0]));
if (chinasea) return String_HOST_TO_DBCS_UTF16<uint16_t>(d,s,cp950ext_to_unicode_hitbl,cp950ext_to_unicode_raw,sizeof(cp950ext_to_unicode_raw)/sizeof(cp950ext_to_unicode_raw[0]));
return String_HOST_TO_DBCS_UTF16<uint16_t>(d,s,cp950_to_unicode_hitbl,cp950_to_unicode_raw,sizeof(cp950_to_unicode_raw)/sizeof(cp950_to_unicode_raw[0]));
case 1250:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp1250_to_unicode,sizeof(cp1250_to_unicode)/sizeof(cp1250_to_unicode[0]));
@@ -597,7 +597,7 @@ bool CodePageHostToGuestUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
case 949:
return String_HOST_TO_DBCS_UTF8<uint16_t>(d,s,cp949_to_unicode_hitbl,cp949_to_unicode_raw,sizeof(cp949_to_unicode_raw)/sizeof(cp949_to_unicode_raw[0]));
case 950:
if (chinasea) return String_HOST_TO_DBCS_UTF8<uint16_t>(d,s,cp950sea_to_unicode_hitbl,cp950sea_to_unicode_raw,sizeof(cp950sea_to_unicode_raw)/sizeof(cp950sea_to_unicode_raw[0]));
if (chinasea) return String_HOST_TO_DBCS_UTF8<uint16_t>(d,s,cp950ext_to_unicode_hitbl,cp950ext_to_unicode_raw,sizeof(cp950ext_to_unicode_raw)/sizeof(cp950ext_to_unicode_raw[0]));
return String_HOST_TO_DBCS_UTF8<uint16_t>(d,s,cp950_to_unicode_hitbl,cp950_to_unicode_raw,sizeof(cp950_to_unicode_raw)/sizeof(cp950_to_unicode_raw[0]));
case 1250:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp1250_to_unicode,sizeof(cp1250_to_unicode)/sizeof(cp1250_to_unicode[0]));
@@ -676,7 +676,7 @@ bool CodePageGuestToHostUTF16(uint16_t *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*
case 949:
return String_DBCS_TO_HOST_UTF16<uint16_t>(d,s,cp949_to_unicode_hitbl,cp949_to_unicode_raw,sizeof(cp949_to_unicode_raw)/sizeof(cp949_to_unicode_raw[0]));
case 950:
if (chinasea) return String_DBCS_TO_HOST_UTF16<uint16_t>(d,s,cp950sea_to_unicode_hitbl,cp950sea_to_unicode_raw,sizeof(cp950sea_to_unicode_raw)/sizeof(cp950sea_to_unicode_raw[0]));
if (chinasea) return String_DBCS_TO_HOST_UTF16<uint16_t>(d,s,cp950ext_to_unicode_hitbl,cp950ext_to_unicode_raw,sizeof(cp950ext_to_unicode_raw)/sizeof(cp950ext_to_unicode_raw[0]));
return String_DBCS_TO_HOST_UTF16<uint16_t>(d,s,cp950_to_unicode_hitbl,cp950_to_unicode_raw,sizeof(cp950_to_unicode_raw)/sizeof(cp950_to_unicode_raw[0]));
case 1250:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp1250_to_unicode,sizeof(cp1250_to_unicode)/sizeof(cp1250_to_unicode[0]));
@@ -755,7 +755,7 @@ bool CodePageGuestToHostUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
case 949:
return String_DBCS_TO_HOST_UTF8<uint16_t>(d,s,cp949_to_unicode_hitbl,cp949_to_unicode_raw,sizeof(cp949_to_unicode_raw)/sizeof(cp949_to_unicode_raw[0]));
case 950:
if (chinasea) return String_DBCS_TO_HOST_UTF8<uint16_t>(d,s,cp950sea_to_unicode_hitbl,cp950sea_to_unicode_raw,sizeof(cp950sea_to_unicode_raw)/sizeof(cp950sea_to_unicode_raw[0]));
if (chinasea) return String_DBCS_TO_HOST_UTF8<uint16_t>(d,s,cp950ext_to_unicode_hitbl,cp950ext_to_unicode_raw,sizeof(cp950ext_to_unicode_raw)/sizeof(cp950ext_to_unicode_raw[0]));
return String_DBCS_TO_HOST_UTF8<uint16_t>(d,s,cp950_to_unicode_hitbl,cp950_to_unicode_raw,sizeof(cp950_to_unicode_raw)/sizeof(cp950_to_unicode_raw[0]));
case 1250:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp1250_to_unicode,sizeof(cp1250_to_unicode)/sizeof(cp1250_to_unicode[0]));

View File

@@ -210,7 +210,7 @@ static uint32_t Ticks = 0;
extern double rtdelta;
static LoopHandler* loop;
void increaseticks();
void increaseticks(), makestdcp950table();
/* The whole load of startups for all the subfunctions */
void MEM_Init(Section *);
@@ -1068,6 +1068,7 @@ void DOSBOX_RealInit() {
Section_prop *ttf_section = static_cast<Section_prop *>(control->GetSection("ttf"));
gbk = ttf_section->Get_bool("gbk");
chinasea = ttf_section->Get_bool("chinasea");
if (!chinasea) makestdcp950table();
dos.loaded_codepage = cp;
#if (defined(WIN32) && !defined(HX_DOS) || defined(LINUX) && C_X11) && !defined(C_SDL2) && defined(SDL_DOSBOX_X_SPECIAL)
if (enableime && !control->opt_silent) {