⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoding.c

📁 Mrxvt是一个小巧
💻 C
📖 第 1 页 / 共 2 页
字号:
	{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 + -