mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-10-14 02:17:36 +08:00
support ChinaSea extension for Traditional Chinese TTF output
This commit is contained in:
@@ -33,6 +33,12 @@
|
||||
output is selected for new installations. (Wengier)
|
||||
- Added ability to change floppy images with drive
|
||||
number (0 or 1) only. (Wengier)
|
||||
- Added config option "chinasea" (in [ttf] section)
|
||||
which when set to true allows ChinaSea (中國海字集)
|
||||
extension of the Big5 charset for the Traditional
|
||||
Chinese TTF output (requiring a TTF font supporting
|
||||
the ChinaSea code points). Also moved "gbk" config
|
||||
option from [dosv] to [ttf] section. (Wengier)
|
||||
- Added code to INT 18h emulation (IBM PC mode) to
|
||||
jump to ROM BASIC if the user provided an IBM
|
||||
ROM BASIC image to load. (joncampbell123)
|
||||
|
@@ -692,7 +692,6 @@ pc-98 anex86 font =
|
||||
# fontxdbcs24: FONTX2 file used to rendering SBCS characters (24x24) in DOS/V mode (with V-text and 24-pixel fonts enabled).
|
||||
# For Simplified Chinese DOS/V, loading the HZK24? font file (https://github.com/aguegu/BitmapFont/tree/master/font) is also supported.
|
||||
# For Traditional Chinese DOS/V, loading the STDFONT.24 font file from the ETen Chinese DOS system is also supported.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese DOS/V emulation or TTF output.
|
||||
# yen: Enables the Japanese yen symbol at 5ch if it is found at 7fh in a custom SBCS font for the Japanese DOS/V or JEGA emulation.
|
||||
# del: Maps the undefined del symbol (0x7F) to the next character (0x80) for the Japanese DOS/V and other Japanese mode emulations.
|
||||
# fepcontrol: FEP control API for the DOS/V emulation.
|
||||
@@ -710,7 +709,6 @@ fontxsbcs24 =
|
||||
fontxdbcs =
|
||||
fontxdbcs14 =
|
||||
fontxdbcs24 =
|
||||
gbk = false
|
||||
yen = false
|
||||
del = true
|
||||
fepcontrol = both
|
||||
@@ -1166,6 +1164,8 @@ auxdevice = intellimouse
|
||||
#DOSBOX-X-ADV:# halfwidthkana: If set, DOSBox-X enables half-width Katakana to replace upper ASCII characters for the Japanese code page (932) of a non-PC98 machine type in the TTF output.
|
||||
# blinkc: If set to true, the cursor blinks for the TTF output; setting it to false will turn the blinking off.
|
||||
# You can also change the blinking rate by setting an integer between 1 (fastest) and 7 (slowest), or 0 for no cursor.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese TTF output or DOS/V emulation.
|
||||
# chinasea: Enables the ChinaSea extension (in addition to the standard Big5 charset) for the Traditional Chinese TTF output or DOS/V emulation.
|
||||
# dosvfunc: If set, enables FEP control to function for Japanese DOS/V applications, and changes the blinking of character attributes to high brightness.
|
||||
#DOSBOX-X-ADV-SEE:#
|
||||
#DOSBOX-X-ADV-SEE:# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
|
||||
@@ -1195,6 +1195,8 @@ autodbcs = true
|
||||
#DOSBOX-X-ADV:autoboxdraw = true
|
||||
#DOSBOX-X-ADV:halfwidthkana = true
|
||||
blinkc = true
|
||||
gbk = false
|
||||
chinasea = false
|
||||
dosvfunc = false
|
||||
|
||||
[voodoo]
|
||||
|
@@ -327,7 +327,6 @@ pc-98 anex86 font =
|
||||
# fontxdbcs24: FONTX2 file used to rendering SBCS characters (24x24) in DOS/V mode (with V-text and 24-pixel fonts enabled).
|
||||
# For Simplified Chinese DOS/V, loading the HZK24? font file (https://github.com/aguegu/BitmapFont/tree/master/font) is also supported.
|
||||
# For Traditional Chinese DOS/V, loading the STDFONT.24 font file from the ETen Chinese DOS system is also supported.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese DOS/V emulation or TTF output.
|
||||
# yen: Enables the Japanese yen symbol at 5ch if it is found at 7fh in a custom SBCS font for the Japanese DOS/V or JEGA emulation.
|
||||
# del: Maps the undefined del symbol (0x7F) to the next character (0x80) for the Japanese DOS/V and other Japanese mode emulations.
|
||||
# fepcontrol: FEP control API for the DOS/V emulation.
|
||||
@@ -345,7 +344,6 @@ fontxsbcs24 =
|
||||
fontxdbcs =
|
||||
fontxdbcs14 =
|
||||
fontxdbcs24 =
|
||||
gbk = false
|
||||
yen = false
|
||||
del = true
|
||||
fepcontrol = both
|
||||
@@ -487,6 +485,8 @@ auxdevice = intellimouse
|
||||
# This applies to both the display and printing of these characters (see the [printer] section for details of the latter).
|
||||
# blinkc: If set to true, the cursor blinks for the TTF output; setting it to false will turn the blinking off.
|
||||
# You can also change the blinking rate by setting an integer between 1 (fastest) and 7 (slowest), or 0 for no cursor.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese TTF output or DOS/V emulation.
|
||||
# chinasea: Enables the ChinaSea extension (in addition to the standard Big5 charset) for the Traditional Chinese TTF output or DOS/V emulation.
|
||||
# dosvfunc: If set, enables FEP control to function for Japanese DOS/V applications, and changes the blinking of character attributes to high brightness.
|
||||
#
|
||||
# Advanced options (see full configuration reference file [dosbox-x.reference.full.conf] for more details):
|
||||
@@ -511,6 +511,8 @@ strikeout = false
|
||||
printfont = true
|
||||
autodbcs = true
|
||||
blinkc = true
|
||||
gbk = false
|
||||
chinasea = false
|
||||
dosvfunc = false
|
||||
|
||||
[voodoo]
|
||||
|
@@ -672,7 +672,6 @@ pc-98 show graphics layer on initialize = true
|
||||
# fontxdbcs24: FONTX2 file used to rendering SBCS characters (24x24) in DOS/V mode (with V-text and 24-pixel fonts enabled).
|
||||
# For Simplified Chinese DOS/V, loading the HZK24? font file (https://github.com/aguegu/BitmapFont/tree/master/font) is also supported.
|
||||
# For Traditional Chinese DOS/V, loading the STDFONT.24 font file from the ETen Chinese DOS system is also supported.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese DOS/V emulation or TTF output.
|
||||
# yen: Enables the Japanese yen symbol at 5ch if it is found at 7fh in a custom SBCS font for the Japanese DOS/V or JEGA emulation.
|
||||
# del: Maps the undefined del symbol (0x7F) to the next character (0x80) for the Japanese DOS/V and other Japanese mode emulations.
|
||||
# fepcontrol: FEP control API for the DOS/V emulation.
|
||||
@@ -690,7 +689,6 @@ fontxsbcs24 =
|
||||
fontxdbcs =
|
||||
fontxdbcs14 =
|
||||
fontxdbcs24 =
|
||||
gbk = false
|
||||
yen = false
|
||||
del = true
|
||||
fepcontrol = both
|
||||
@@ -1138,6 +1136,8 @@ auxdevice = intellimouse
|
||||
# halfwidthkana: If set, DOSBox-X enables half-width Katakana to replace upper ASCII characters for the Japanese code page (932) of a non-PC98 machine type in the TTF output.
|
||||
# blinkc: If set to true, the cursor blinks for the TTF output; setting it to false will turn the blinking off.
|
||||
# You can also change the blinking rate by setting an integer between 1 (fastest) and 7 (slowest), or 0 for no cursor.
|
||||
# gbk: Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese TTF output or DOS/V emulation.
|
||||
# chinasea: Enables the ChinaSea extension (in addition to the standard Big5 charset) for the Traditional Chinese TTF output or DOS/V emulation.
|
||||
# dosvfunc: If set, enables FEP control to function for Japanese DOS/V applications, and changes the blinking of character attributes to high brightness.
|
||||
font =
|
||||
fontbold =
|
||||
@@ -1163,6 +1163,8 @@ autodbcs = true
|
||||
autoboxdraw = true
|
||||
halfwidthkana = true
|
||||
blinkc = true
|
||||
gbk = false
|
||||
chinasea = false
|
||||
dosvfunc = false
|
||||
|
||||
[voodoo]
|
||||
|
4428
include/cp950_uni.h
4428
include/cp950_uni.h
File diff suppressed because it is too large
Load Diff
@@ -141,7 +141,7 @@ static host_cnv_char_t cpcnv_ltemp[4096];
|
||||
static uint16_t ldid[256];
|
||||
static std::string ldir[256];
|
||||
static std::string hostname = "";
|
||||
extern bool rsize, morelen, force_sfn, enable_share_exe;
|
||||
extern bool rsize, morelen, force_sfn, enable_share_exe, chinasea;
|
||||
extern bool isDBCSCP(), isKanji1(uint8_t chr), shiftjis_lead_byte(int c);
|
||||
extern int lfn_filefind_handle, freesizecap, file_access_tries;
|
||||
extern unsigned long totalc, freec;
|
||||
@@ -518,6 +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]));
|
||||
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]));
|
||||
@@ -596,6 +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]));
|
||||
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]));
|
||||
@@ -674,6 +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]));
|
||||
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]));
|
||||
@@ -752,6 +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]));
|
||||
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]));
|
||||
|
@@ -139,13 +139,15 @@ extern bool VIDEO_BIOS_always_carry_14_high_font;
|
||||
extern bool VIDEO_BIOS_always_carry_16_high_font;
|
||||
extern bool VIDEO_BIOS_enable_CGA_8x8_second_half;
|
||||
extern bool allow_more_than_640kb, del_flag;
|
||||
extern bool sync_time, enableime, gbk;
|
||||
extern bool sync_time, enableime;
|
||||
extern int freesizecap;
|
||||
extern unsigned int page;
|
||||
|
||||
uint32_t guest_msdos_LoL = 0;
|
||||
uint16_t guest_msdos_mcb_chain = 0;
|
||||
int boothax = BOOTHAX_NONE;
|
||||
bool gbk = false;
|
||||
bool chinasea = false;
|
||||
bool jp_ega = false;
|
||||
bool want_fm_towns = false;
|
||||
|
||||
@@ -1063,7 +1065,9 @@ void DOSBOX_RealInit() {
|
||||
if (IS_DOSV) DOSV_SetConfig(dosv_section);
|
||||
#endif
|
||||
}
|
||||
gbk = dosv_section->Get_bool("gbk");
|
||||
Section_prop *ttf_section = static_cast<Section_prop *>(control->GetSection("ttf"));
|
||||
gbk = ttf_section->Get_bool("gbk");
|
||||
chinasea = ttf_section->Get_bool("chinasea");
|
||||
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) {
|
||||
@@ -2096,10 +2100,6 @@ void DOSBOX_SetupConfigSections(void) {
|
||||
"For Traditional Chinese DOS/V, loading the STDFONT.24 font file from the ETen Chinese DOS system is also supported.");
|
||||
Pstring->SetBasic(true);
|
||||
|
||||
Pbool = secprop->Add_bool("gbk",Property::Changeable::OnlyAtStart,false);
|
||||
Pbool->Set_help("Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese DOS/V emulation or TTF output.");
|
||||
Pbool->SetBasic(true);
|
||||
|
||||
Pbool = secprop->Add_bool("yen",Property::Changeable::OnlyAtStart,false);
|
||||
Pbool->Set_help("Enables the Japanese yen symbol at 5ch if it is found at 7fh in a custom SBCS font for the Japanese DOS/V or JEGA emulation.");
|
||||
Pbool->SetBasic(true);
|
||||
@@ -2790,6 +2790,14 @@ void DOSBOX_SetupConfigSections(void) {
|
||||
"You can also change the blinking rate by setting an integer between 1 (fastest) and 7 (slowest), or 0 for no cursor.");
|
||||
Pstring->SetBasic(true);
|
||||
|
||||
Pbool = secprop->Add_bool("gbk",Property::Changeable::OnlyAtStart,false);
|
||||
Pbool->Set_help("Enables the GBK extension (in addition to the standard GB2312 charset) for the Simplified Chinese TTF output or DOS/V emulation.");
|
||||
Pbool->SetBasic(true);
|
||||
|
||||
Pbool = secprop->Add_bool("chinasea",Property::Changeable::OnlyAtStart,false);
|
||||
Pbool->Set_help("Enables the ChinaSea extension (in addition to the standard Big5 charset) for the Traditional Chinese TTF output or DOS/V emulation.");
|
||||
Pbool->SetBasic(true);
|
||||
|
||||
Pbool = secprop->Add_bool("dosvfunc", Property::Changeable::OnlyAtStart, false);
|
||||
Pbool->Set_help("If set, enables FEP control to function for Japanese DOS/V applications, and changes the blinking of character attributes to high brightness.");
|
||||
Pbool->SetBasic(true);
|
||||
|
@@ -108,8 +108,7 @@ static bool use20pixelfont;
|
||||
extern bool autoboxdraw;
|
||||
extern bool ttf_dosv;
|
||||
#endif
|
||||
|
||||
bool gbk = false;
|
||||
extern bool gbk;
|
||||
bool del_flag = true;
|
||||
bool yen_flag = false;
|
||||
bool jfont_init = false;
|
||||
|
Reference in New Issue
Block a user