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

📄 encoding.c

📁 Mrxvt是一个小巧
💻 C
📖 第 1 页 / 共 2 页
字号:
/*--------------------------------*-C-*--------------------------------------* * File:	  encoding.c *---------------------------------------------------------------------------* * * All portions of code are copyright by their respective author/s. * Copyright (C) 2001	   Tomohiro KUBOTA <kubota@debian.org> * Copyright (C) 2004	   Jingmin Zhou <jimmyzhou@users.sourceforge.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *--------------------------------------------------------------------------*/#include "../config.h"#include "rxvt.h"#ifdef DEBUG_VERBOSE#define DEBUG_LEVEL 1#else #define DEBUG_LEVEL 0#endif#if DEBUG_LEVEL#define DBG_MSG(d,x) if(d <= DEBUG_LEVEL) fprintf x#else#define DBG_MSG(d,x)#endifstruct KNOWN_ENCODINGS {	char*			name;	enum enc_label	method;	void (*func) (unsigned char*, int);};#ifdef MULTICHAR_SETstatic struct KNOWN_ENCODINGS known_encodings[] = {	{"SHIFTJIS",	ENC_SJIS,		rxvt_decode_sjis2jis},	{"SJIS",		ENC_SJIS,		rxvt_decode_sjis2jis},	{"EUC-JISX0213",ENC_SJIS,		rxvt_decode_sjis2jis},	{"EUCJ",		ENC_EUCJ,		rxvt_decode_euc2jis},	{"EUCJP",		ENC_EUCJ,		rxvt_decode_euc2jis},	{"EUC-JP",		ENC_EUCJ,		rxvt_decode_euc2jis},	{"UJIS",		ENC_EUCJ,		rxvt_decode_euc2jis},	{"EUCKR",		ENC_EUCKR,		rxvt_decode_euc2jis},	{"EUC-KR",		ENC_EUCKR,		rxvt_decode_euc2jis},	{"KR",			ENC_EUCKR,		rxvt_decode_dummy},	{"EUCCN",		ENC_GB,			rxvt_decode_euc2jis},	{"EUC-CN",		ENC_GB,			rxvt_decode_euc2jis},	{"GB2312",		ENC_GB,			rxvt_decode_euc2jis},	{"GB",			ENC_GB,			rxvt_decode_euc2jis},	{"GB18030",		ENC_GB18030,	rxvt_decode_gb180302jis},	{"GBK",			ENC_GBK,		rxvt_decode_dummy},	{"BIG5",		ENC_BIG5,		rxvt_decode_dummy},	{"BIGFIVE",		ENC_BIG5,		rxvt_decode_dummy},	{"BIG5HKSCS",	ENC_BIG5,		rxvt_decode_dummy},	{"KOI8R",		ENC_KOI8R,		rxvt_decode_dummy},	{"KOI8-R",		ENC_KOI8R,		rxvt_decode_dummy},	{"KOI8U",		ENC_KOI8U,		rxvt_decode_dummy},	{"KOI8-U",		ENC_KOI8U,		rxvt_decode_dummy},	{"ISO8859-1",	ENC_ISO8859_1,	rxvt_decode_dummy},	{"ISO8859-2",	ENC_ISO8859_2,	rxvt_decode_dummy},	{"ISO8859-3",	ENC_ISO8859_3,	rxvt_decode_dummy},	{"ISO8859-4",	ENC_ISO8859_4,	rxvt_decode_dummy},	{"ISO8859-5",	ENC_ISO8859_5,	rxvt_decode_dummy},	{"ISO8859-6",	ENC_ISO8859_6,	rxvt_decode_dummy},	{"ISO8859-7",	ENC_ISO8859_7,	rxvt_decode_dummy},	{"ISO8859-8",	ENC_ISO8859_8,	rxvt_decode_dummy},	{"ISO8859-9",	ENC_ISO8859_9,	rxvt_decode_dummy},	{"ISO8859-10",	ENC_ISO8859_10,	rxvt_decode_dummy},	{"ISO8859-11",	ENC_ISO8859_11,	rxvt_decode_dummy},	{"ISO8859-12",	ENC_ISO8859_12,	rxvt_decode_dummy},	{"ISO8859-13",	ENC_ISO8859_13,	rxvt_decode_dummy},	{"ISO8859-14",	ENC_ISO8859_14,	rxvt_decode_dummy},	{"ISO8859-15",	ENC_ISO8859_15,	rxvt_decode_dummy},	{"ISO88591",	ENC_ISO8859_1,	rxvt_decode_dummy},	{"ISO88592",	ENC_ISO8859_2,	rxvt_decode_dummy},	{"ISO88593",	ENC_ISO8859_3,	rxvt_decode_dummy},	{"ISO88594",	ENC_ISO8859_4,	rxvt_decode_dummy},	{"ISO88595",	ENC_ISO8859_5,	rxvt_decode_dummy},	{"ISO88596",	ENC_ISO8859_6,	rxvt_decode_dummy},	{"ISO88597",	ENC_ISO8859_7,	rxvt_decode_dummy},	{"ISO88598",	ENC_ISO8859_8,	rxvt_decode_dummy},	{"ISO88599",	ENC_ISO8859_9,	rxvt_decode_dummy},	{"ISO885910",	ENC_ISO8859_10,	rxvt_decode_dummy},	{"ISO885911",	ENC_ISO8859_11,	rxvt_decode_dummy},	{"ISO885912",	ENC_ISO8859_12,	rxvt_decode_dummy},	{"ISO885913",	ENC_ISO8859_13,	rxvt_decode_dummy},	{"ISO885914",	ENC_ISO8859_14,	rxvt_decode_dummy},	{"ISO885915",	ENC_ISO8859_15,	rxvt_decode_dummy},	{"ISO_8859-1",	ENC_ISO8859_1,	rxvt_decode_dummy},	{"ISO_8859-2",	ENC_ISO8859_2,	rxvt_decode_dummy},	{"ISO_8859-3",	ENC_ISO8859_3,	rxvt_decode_dummy},	{"ISO_8859-4",	ENC_ISO8859_4,	rxvt_decode_dummy},	{"ISO_8859-5",	ENC_ISO8859_5,	rxvt_decode_dummy},	{"ISO_8859-6",	ENC_ISO8859_6,	rxvt_decode_dummy},	{"ISO_8859-7",	ENC_ISO8859_7,	rxvt_decode_dummy},	{"ISO_8859-8",	ENC_ISO8859_8,	rxvt_decode_dummy},	{"ISO_8859-9",	ENC_ISO8859_9,	rxvt_decode_dummy},	{"ISO_8859-10",	ENC_ISO8859_10,	rxvt_decode_dummy},	{"ISO_8859-11",	ENC_ISO8859_11,	rxvt_decode_dummy},	{"ISO_8859-12",	ENC_ISO8859_12,	rxvt_decode_dummy},	{"ISO_8859-13",	ENC_ISO8859_13,	rxvt_decode_dummy},	{"ISO_8859-14",	ENC_ISO8859_14,	rxvt_decode_dummy},	{"ISO_8859-15",	ENC_ISO8859_15,	rxvt_decode_dummy},	{"NOENC",		ENC_NOENC,		rxvt_decode_dummy},	{"",			ENC_NOENC,		rxvt_decode_dummy},	{NULL,			-1,				NULL},};#endifstruct NFONT_LIST {	enum enc_label	encoding;	char*			font[MAX_NFONTS];};static struct NFONT_LIST nfont_list[] = {	{ENC_NOENC,		 {NFONT_LIST_NULL}},#ifdef MULTICHAR_SET	{ENC_SJIS,		 {NFONT_LIST_EUCJ}},	{ENC_EUCJ,		 {NFONT_LIST_EUCJ}},	{ENC_GB,		 {NFONT_LIST_GB}},	{ENC_GBK,		 {NFONT_LIST_GBK}},	{ENC_GB18030,	 {NFONT_LIST_GB18030}},	{ENC_BIG5,		 {NFONT_LIST_BIG5}},	{ENC_EUCKR,		 {NFONT_LIST_EUCKR}},#endif	{ENC_KOI8R,		 {NFONT_LIST_KOI8R}},	{ENC_KOI8U,		 {NFONT_LIST_KOI8U}},	{ENC_ISO8859_1,  {NFONT_LIST_NULL}},	{ENC_ISO8859_2,  {NFONT_LIST_NULL}},	{ENC_ISO8859_3,  {NFONT_LIST_NULL}},	{ENC_ISO8859_4,  {NFONT_LIST_NULL}},	{ENC_ISO8859_5,  {NFONT_LIST_NULL}},	{ENC_ISO8859_6,  {NFONT_LIST_NULL}},	{ENC_ISO8859_7,  {NFONT_LIST_NULL}},	{ENC_ISO8859_8,  {NFONT_LIST_NULL}},	{ENC_ISO8859_9,  {NFONT_LIST_NULL}},	{ENC_ISO8859_10, {NFONT_LIST_NULL}},	{ENC_ISO8859_11, {NFONT_LIST_NULL}},	{ENC_ISO8859_12, {NFONT_LIST_NULL}},	{ENC_ISO8859_13, {NFONT_LIST_NULL}},	{ENC_ISO8859_14, {NFONT_LIST_NULL}},	{ENC_ISO8859_15, {NFONT_LIST_NULL}},};static char* isofont[] = {NFONT_LIST_ISO8859X};#ifdef MULTICHAR_SET/* Multicharacter font names, roman fonts sized to match */struct MFONT_LIST {	enum enc_label	encoding;	char*			mfont[MAX_NFONTS];};static struct MFONT_LIST mfont_list[] = {	{ENC_NOENC,		 {MFONT_LIST_NULL}},	{ENC_SJIS,		 {MFONT_LIST_EUCJ}},	{ENC_EUCJ,		 {MFONT_LIST_EUCJ}},	{ENC_GB,		 {MFONT_LIST_GB}},	{ENC_GBK,		 {MFONT_LIST_GBK}},	{ENC_GB18030,	 {MFONT_LIST_GB18030}},	{ENC_BIG5,		 {MFONT_LIST_BIG5}},	{ENC_EUCKR,		 {MFONT_LIST_EUCKR}},	{ENC_KOI8R,		 {MFONT_LIST_NULL}},	{ENC_KOI8U,		 {MFONT_LIST_NULL}},	{ENC_ISO8859_1,  {MFONT_LIST_NULL}},	{ENC_ISO8859_2,  {MFONT_LIST_NULL}},	{ENC_ISO8859_3,  {MFONT_LIST_NULL}},	{ENC_ISO8859_4,  {MFONT_LIST_NULL}},	{ENC_ISO8859_5,  {MFONT_LIST_NULL}},	{ENC_ISO8859_6,  {MFONT_LIST_NULL}},	{ENC_ISO8859_7,  {MFONT_LIST_NULL}},	{ENC_ISO8859_8,  {MFONT_LIST_NULL}},	{ENC_ISO8859_9,  {MFONT_LIST_NULL}},	{ENC_ISO8859_10, {MFONT_LIST_NULL}},	{ENC_ISO8859_11, {MFONT_LIST_NULL}},	{ENC_ISO8859_12, {MFONT_LIST_NULL}},	{ENC_ISO8859_13, {MFONT_LIST_NULL}},	{ENC_ISO8859_14, {MFONT_LIST_NULL}},	{ENC_ISO8859_15, {MFONT_LIST_NULL}},};#endif	/* MULTICHAR_SET */struct FALLBACK_FONT_LIST {	enum enc_label	encoding;	char*			fontname;};struct ENCODING_NAME {	enum enc_label	encoding;	char*			encname;};static struct ENCODING_NAME encoding_name[] = {	{ENC_NOENC,		 "NOENC"},# ifdef MULTICHAR_SET	{ENC_SJIS,		 "SJIS"},	{ENC_EUCJ,		 "EUCJP"},	{ENC_GB,		 "GB2312"},	{ENC_GBK,		 "GBK"},	{ENC_GB18030,	 "GB18030"},	{ENC_BIG5,		 "BIG5"},	{ENC_EUCKR,		 "EUCKR"},# endif	{ENC_KOI8R,		 "KOI8R"},	{ENC_KOI8U,		 "KOI8U"},	{ENC_ISO8859_1,  "ISO8859-1"},	{ENC_ISO8859_2,  "ISO8859-2"},	{ENC_ISO8859_3,  "ISO8859-3"},	{ENC_ISO8859_4,  "ISO8859-4"},	{ENC_ISO8859_5,  "ISO8859-5"},	{ENC_ISO8859_6,  "ISO8859-6"},	{ENC_ISO8859_7,  "ISO8859-7"},	{ENC_ISO8859_8,  "ISO8859-8"},	{ENC_ISO8859_9,  "ISO8859-9"},	{ENC_ISO8859_10, "ISO8859-10"},	{ENC_ISO8859_11, "ISO8859-11"},	{ENC_ISO8859_12, "ISO8859-12"},	{ENC_ISO8859_13, "ISO8859-13"},	{ENC_ISO8859_14, "ISO8859-14"},	{ENC_ISO8859_15, "ISO8859-15"},};#ifdef XFT_SUPPORTstatic struct FALLBACK_FONT_LIST fallback_mfont_list_xft[] = {	{ENC_NOENC,		 DEFAULT_XFT_FONT_NAME},# ifdef MULTICHAR_SET	{ENC_SJIS,		 "Kochi Gothic"},	{ENC_EUCJ,		 "Kochi Gothic"},	{ENC_GB,		 "SimSun"},	{ENC_GBK,		 "SimSun"},	{ENC_GB18030,	 "SimSun"},	{ENC_BIG5,		 "MingLiU"},	{ENC_EUCKR,		 "Luxi Mono"},# endif	{ENC_KOI8R,		 "Courier New"},	{ENC_KOI8U,		 "Courier New"},	{ENC_ISO8859_1,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_2,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_3,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_4,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_5,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_6,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_7,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_8,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_9,  DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_10, DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_11, DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_12, DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_13, DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_14, DEFAULT_XFT_FONT_NAME},	{ENC_ISO8859_15, DEFAULT_XFT_FONT_NAME},};#endif /* XFT_SUPPORT */static struct FALLBACK_FONT_LIST fallback_mfont_list_x11[] = {	{ENC_NOENC,		 "-*-*-*-r-*-*-*-*-*-c-*-iso8859-1"},# ifdef MULTICHAR_SET	{ENC_SJIS,		 "-*-*-*-r-*-*-*-*-*-c-*-jisx0208*-0"},	{ENC_EUCJ,		 "-*-*-*-r-*-*-*-*-*-c-*-jisx0208*-0"},	{ENC_GB,		 "-*-*-*-*-*-*-*-*-*-*-*-*-gb2312*-0"},	{ENC_GBK,		 "-*-*-*-*-*-*-*-*-*-*-*-*-gbk-0"},	{ENC_GB18030,	 "-*-*-*-*-*-*-*-*-*-*-*-*-gb18030*-0"},	{ENC_BIG5,		 "-*-*-*-*-*-*-*-*-*-*-c-*-big5-0"},	{ENC_EUCKR,		 "-*-*-*-*-*-*-*-*-*-*-c-*-ksc5601*-0"},# endif	{ENC_KOI8R,		 "-*-*-*-r-*-*-*-*-*-c-*-koi8-r"},	{ENC_KOI8U,		 "-*-*-*-r-*-*-*-*-*-c-*-koi8-u"},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -