X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/dea851d6311b95ec981b9f8af1dc644b5dd2487a..d3cb5465f5c608f1edb1edd56290d4fbcec2bb55:/unicode.c diff --git a/unicode.c b/unicode.c index 1cafcc18..4703425b 100644 --- a/unicode.c +++ b/unicode.c @@ -74,6 +74,12 @@ void init_ucs_tables(void) /* Collect OEMCP ucs table */ get_unitab(CP_OEMCP, unitab_oemcp, 1); + /* Collect CP437 ucs table for SCO acs */ + if (cfg.vtmode == VT_OEMANSI || cfg.vtmode == VT_XWINDOWS) + memcpy(unitab_scoacs, unitab_oemcp, sizeof(unitab_scoacs)); + else + get_unitab(437, unitab_scoacs, 1); + /* Collect line set ucs table */ if (line_codepage == font_codepage && (dbcs_screenfont || cfg.vtmode == VT_POORMAN)) { @@ -143,7 +149,11 @@ void init_ucs_tables(void) unitab_ctrl[i] = 0xFF; /* Generate line->screen direct conversion links. */ + if (cfg.vtmode == VT_OEMANSI || cfg.vtmode == VT_XWINDOWS) + link_font(unitab_scoacs, unitab_oemcp, ATTR_OEMCP); + link_font(unitab_line, unitab_font, ATTR_ACP); + link_font(unitab_scoacs, unitab_font, ATTR_ACP); link_font(unitab_xterm, unitab_font, ATTR_ACP); if (cfg.vtmode == VT_OEMANSI || cfg.vtmode == VT_XWINDOWS) { @@ -153,6 +163,8 @@ void init_ucs_tables(void) /* Last chance, if !unicode then try poorman links. */ if (cfg.vtmode != VT_UNICODE) { + static char poorman_scoacs[] = + "CueaaaaceeeiiiAAE**ooouuyOUc$YPsaiounNao?++**!<>###||||++||++++++--|-+||++--|-+----++++++++##||#aBTPEsyt******EN=+><++-=... n2* "; static char poorman_latin1[] = " !cL.Y|S\"Ca<--R~o+23'u|.,1o>///?AAAAAAACEEEEIIIIDNOOOOOxOUUUUYPBaaaaaaaceeeeiiiionooooo/ouuuuypy"; static char poorman_vt100[] = "*#****o~**+++++-----++++|****L."; @@ -167,6 +179,10 @@ void init_ucs_tables(void) if (!DIRECT_FONT(unitab_xterm[i])) unitab_xterm[i] = (WCHAR) (ATTR_ACP + poorman_vt100[i - 96]); + for(i=128;i<256;i++) + if (!DIRECT_FONT(unitab_scoacs[i])) + unitab_scoacs[i] = + (WCHAR) (ATTR_ACP + poorman_scoacs[i - 128]); } }