📄 encoding.c
字号:
{ENC_ISO8859_1, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-1"}, {ENC_ISO8859_2, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-2"}, {ENC_ISO8859_3, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-3"}, {ENC_ISO8859_4, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-4"}, {ENC_ISO8859_5, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-5"}, {ENC_ISO8859_6, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-6"}, {ENC_ISO8859_7, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-7"}, {ENC_ISO8859_8, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-8"}, {ENC_ISO8859_9, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-9"}, {ENC_ISO8859_10, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-10"}, {ENC_ISO8859_11, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-11"}, {ENC_ISO8859_12, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-12"}, {ENC_ISO8859_13, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-13"}, {ENC_ISO8859_14, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-14"}, {ENC_ISO8859_15, "-*-*-*-r-*-*-*-*-*-c-*-iso8859-15"},};char** def_fontName;char** def_mfontName;#ifdef MULTICHAR_SET/* EXTPROTO */voidrxvt_decode_euc2jis (unsigned char* str, int len){ register int i; DBG_MSG(2, (stderr, "rxvt_decode_euc2jis (%s : %d)\n", str, len)); for (i = 0; i < len; i++) str[i] &= 0x7F;}/* EXTPROTO */voidrxvt_decode_sjis2jis (unsigned char* str, int len){ register int i; unsigned char *high, *low; DBG_MSG(1, (stderr, "rxvt_decode_sjis2jis\n")); for (i = 0; i < len; i += 2, str += 2) { high = str; low = str + 1; (*high) -= (*high > 0x9F ? 0xB1 : 0x71); *high = (*high) * 2 + 1; if (*low > 0x9E) { *low -= 0x7E; (*high)++; } else { if (*low > 0x7E) (*low)--; *low -= 0x1F; } }}/* EXTPROTO */voidrxvt_decode_gb180302jis (unsigned char* str, int len){ register int i; DBG_MSG(2, (stderr, "rxvt_decode_gb180302jis\n")); for (i = 0; i < len; i++) str[i] &= 0x7F;}/* EXTPROTO */voidrxvt_set_multichar_encoding (rxvt_t* r, const char* str){ struct KNOWN_ENCODINGS* a; assert (NULL != str); DBG_MSG(1,(stderr,"set multichar encoding to %s\n", str)); a = (struct KNOWN_ENCODINGS*) known_encodings; for (; a->name; a++) { if (0 == STRCASECMP (str, a->name)) { r->encoding_method = a->method; r->h->multichar_decode = a->func; break; } } /* not a known encoding method */ if (NULL == a->name) { r->encoding_method = ENC_NOENC; r->h->multichar_decode = rxvt_decode_dummy; }#ifdef XFT_SUPPORT# ifdef HAVE_ICONV_H if ((iconv_t) -1 != r->TermWin.xfticonv) { iconv_close (r->TermWin.xfticonv); r->TermWin.xfticonv = (iconv_t) -1; } /* ** If encoding method is set AND mfont is loaded, open the ** iconv. Otherwise, xfticonv is -1 */ if (ENC_NOENC != r->encoding_method && !(r->Options2 & Opt2_xftNomFont)) r->TermWin.xfticonv = iconv_open ("UTF-8", rxvt_encoding_name(r));# endif#endif}#endif /* MULTICHAR_SET *//* EXTPROTO */voidrxvt_decode_dummy (unsigned char* str, int len){ DBG_MSG(2, (stderr, "rxvt_decode_dummy\n"));}/* EXTPROTO */voidrxvt_set_default_locale (rxvt_t* r){ char* locale;#if defined(HAVE_SETLOCALE) || defined(HAVE_XSETLOCALE) char* lc;#endif locale = getenv ("LC_ALL"); if (NULL == locale) locale = getenv ("LC_CTYPE"); if (NULL == locale) locale = getenv ("LANG"); #if defined(HAVE_SETLOCALE) || defined(HAVE_XSETLOCALE) lc = setlocale(LC_CTYPE, ""); if (NULL == locale) locale = lc;#endif DBG_MSG(1,(stderr,"set default locale to %s\n", locale ? locale : "none")); r->h->locale = locale;}/* EXTPROTO */char*rxvt_encoding_name (rxvt_t* r){ assert (r->encoding_method >= 0); assert (r->encoding_method <= ENC_ISO8859_15); return encoding_name[r->encoding_method].encname;}#ifdef XFT_SUPPORT/* Fallback XFT fonts *//* EXTPROTO */char*rxvt_fallback_mfont_xft (rxvt_t* r){ assert (r->encoding_method >= 0); assert (r->encoding_method <= ENC_ISO8859_15); return fallback_mfont_list_xft[r->encoding_method].fontname;}/* EXTPROTO */voidrxvt_set_default_font_xft (rxvt_t* r){ if ((r->Options & Opt_xft) && (NULL == r->h->rs[Rs_xftfont])) r->h->rs[Rs_xftfont] = DEFAULT_XFT_FONT_NAME;# ifdef MULTICHAR_SET if ((r->Options & Opt_xft) && (NULL == r->h->rs[Rs_xftmfont])) r->h->rs[Rs_xftmfont] = rxvt_fallback_mfont_xft (r);# endif}#endif /* XFT_SUPPORT *//* Fallback X11 fonts *//* EXTPROTO */char*rxvt_fallback_mfont_x11 (rxvt_t* r){ assert (r->encoding_method >= 0); assert (r->encoding_method <= ENC_ISO8859_15); return fallback_mfont_list_x11[r->encoding_method].fontname;}/* EXTPROTO */voidrxvt_set_default_font_x11 (rxvt_t* r){ register int i; DBG_MSG(1,(stderr,"rxvt_set_default_font_x11\n")); /* Set default fonts */ def_fontName = (char**) nfont_list[r->encoding_method].font;#ifdef MULTICHAR_SET switch (r->encoding_method) { case ENC_SJIS : def_mfontName = (char**) mfont_list[ENC_SJIS].mfont; break; case ENC_EUCJ : def_mfontName = (char**) mfont_list[ENC_EUCJ].mfont; break; case ENC_GB : def_mfontName = (char**) mfont_list[ENC_GB].mfont; break; case ENC_GBK : def_mfontName = (char**) mfont_list[ENC_GBK].mfont; break; case ENC_GB18030 : def_mfontName = (char**) mfont_list[ENC_GB18030].mfont; break; case ENC_BIG5 : def_mfontName = (char**) mfont_list[ENC_BIG5].mfont; break; case ENC_EUCKR: def_mfontName = (char**) mfont_list[ENC_EUCKR].mfont; break; default: def_mfontName = (char**) mfont_list[r->encoding_method].mfont; break; } /* Found no mfont, fall back to ISO8859-X font */ if (NULL == def_mfontName[0]) { for (i = 0; i < MAX_NFONTS; i ++) { char* ptr = rxvt_malloc (STRLEN(isofont[i])+4); if (r->encoding_method >= ENC_ISO8859_1 && r->encoding_method <= ENC_ISO8859_15) sprintf (ptr, isofont[i], r->encoding_method - ENC_ISO8859_1 + 1); else sprintf (ptr, isofont[i], 1); def_mfontName[i] = ptr; } }#endif /* Found no font, fall back to ISO8859-X font */ if (NULL == def_fontName[0]) { for (i = 0; i < MAX_NFONTS; i ++) { char* ptr = rxvt_malloc (STRLEN(isofont[i])+4);#ifdef MULTICHAR_SET if (r->encoding_method >= ENC_ISO8859_1 && r->encoding_method <= ENC_ISO8859_15) sprintf (ptr, isofont[i], r->encoding_method - ENC_ISO8859_1 + 1); else#endif sprintf (ptr, isofont[i], 1); def_fontName[i] = ptr; } } /* Overrided by -km option or X resources */ for (i = 0; i < MAX_NFONTS; i ++) { if (NULL == r->h->rs[Rs_font +i]) r->h->rs[Rs_font +i] = def_fontName[i];#ifdef MULTICHAR_SET if (NULL == r->h->rs[Rs_mfont +i]) r->h->rs[Rs_mfont +i] = def_mfontName[i];#endif }}/*----------------------- end-of-file (C source) -----------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -