📄 encoding.c
字号:
/*--------------------------------*-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> * Copyright (C) 2007 Jehan Hysseo <hysseo@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"struct 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}, {"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"}, {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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -