X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fchar-ucs.h;h=b4699e91f09dd2baf8e09c764d018bf487d596cf;hb=112b4eb6a71cd613a534b4246b4cc024ed9bf22e;hp=3714f5a5edfdee08d96eeac13bd01859a3acb7d4;hpb=f8a03a9ea0345d9026b9bbbe9f4612e963217bca;p=chise%2Fxemacs-chise.git- diff --git a/src/char-ucs.h b/src/char-ucs.h index 3714f5a..b4699e9 100644 --- a/src/char-ucs.h +++ b/src/char-ucs.h @@ -32,7 +32,27 @@ extern Lisp_Object Vchar_attribute_hash_table; #define CHAR_ASCII_P(ch) ((ch) <= 0x7F) + +/************************************************************************/ +/* Exported functions */ +/************************************************************************/ + +extern Lisp_Object Vcharset_ucs; extern Lisp_Object Vcharset_latin_jisx0201; +extern Lisp_Object Vcharset_chinese_big5; +extern Lisp_Object Vcharset_chinese_big5_1; +extern Lisp_Object Vcharset_chinese_big5_2; +extern Lisp_Object Vcharset_japanese_jisx0208; +extern Lisp_Object Vcharset_japanese_jisx0208_1990; +extern Lisp_Object Vcharset_japanese_jisx0212; + +EXFUN (Fget_charset, 1); + +extern Lisp_Object Qucs; + +Lisp_Object put_char_ccs_code_point (Lisp_Object character, + Lisp_Object ccs, Lisp_Object value); +Lisp_Object remove_char_ccs (Lisp_Object character, Lisp_Object ccs); /************************************************************************/ @@ -345,8 +365,19 @@ CHARSET_ENCODING_TABLE (Lisp_Charset* cs) } #define CONVERSION_IDENTICAL 0 -#define CONVERSION_94x60 1 -#define CONVERSION_94x94x60 2 +#define CONVERSION_94 1 +#define CONVERSION_96 2 +#define CONVERSION_94x94 3 +#define CONVERSION_96x96 4 +#define CONVERSION_94x94x94 5 +#define CONVERSION_96x96x96 6 +#define CONVERSION_94x94x94x94 7 +#define CONVERSION_96x96x96x96 8 +#define CONVERSION_94x60 9 +#define CONVERSION_94x94x60 10 +#define CONVERSION_94x94x94x60 11 +#define CONVERSION_BIG5_1 12 +#define CONVERSION_BIG5_2 13 #define XCHARSET_ID(cs) CHARSET_ID (XCHARSET (cs)) #define XCHARSET_NAME(cs) CHARSET_NAME (XCHARSET (cs)) @@ -506,10 +537,6 @@ CHARSET_BY_ATTRIBUTES (int chars, int dimension, int final, int dir) Emchar decode_builtin_char (Lisp_Object charset, int code_point); -extern Lisp_Object Vcharset_chinese_big5; -extern Lisp_Object Vcharset_chinese_big5_1; -extern Lisp_Object Vcharset_chinese_big5_2; - INLINE_HEADER Lisp_Object get_ccs_octet_table (Lisp_Object table, Lisp_Object ccs, int code); INLINE_HEADER Lisp_Object @@ -657,70 +684,18 @@ decoding_table_remove_char (Lisp_Object ccs, int code_point) Emchar load_char_decoding_entry_maybe (Lisp_Object ccs, int code_point); #endif -INLINE_HEADER Emchar -DECODE_DEFINED_CHAR (Lisp_Object charset, int code_point); -INLINE_HEADER Emchar -DECODE_DEFINED_CHAR (Lisp_Object ccs, int code_point) -{ - int dim = XCHARSET_DIMENSION (ccs); - Lisp_Object decoding_table = XCHARSET_DECODING_TABLE (ccs); - - while (dim > 0) - { - dim--; - decoding_table - = get_ccs_octet_table (decoding_table, ccs, - (code_point >> (dim * 8)) & 255); - } - if (CHARP (decoding_table)) - return XCHAR (decoding_table); -#ifdef HAVE_DATABASE - if (EQ (decoding_table, Qunloaded) || - EQ (decoding_table, Qunbound) || - NILP (decoding_table) ) - { - return load_char_decoding_entry_maybe (ccs, code_point); - } -#endif - else - return -1; -} +Emchar decode_defined_char (Lisp_Object charset, int code_point); INLINE_HEADER Emchar DECODE_CHAR (Lisp_Object charset, int code_point); INLINE_HEADER Emchar DECODE_CHAR (Lisp_Object charset, int code_point) { - Emchar char_id = DECODE_DEFINED_CHAR (charset, code_point); + Emchar char_id = decode_defined_char (charset, code_point); if (char_id >= 0) return char_id; - else if (XCHARSET_DIMENSION (charset) == 1) + else return decode_builtin_char (charset, code_point); - else if (EQ (charset, Vcharset_chinese_big5_1)) - { - unsigned int I - = ((code_point >> 8) - 33) * (0xFF - 0xA1) - + ((code_point & 0xFF) - 33); - unsigned char b1 = I / (0xFF - 0xA1 + 0x7F - 0x40) + 0xA1; - unsigned char b2 = I % (0xFF - 0xA1 + 0x7F - 0x40); - - b2 += b2 < 0x3F ? 0x40 : 0x62; - return DECODE_CHAR (Vcharset_chinese_big5, (b1 << 8) | b2); - } - else if (EQ (charset, Vcharset_chinese_big5_2)) - { - unsigned int I - = ((code_point >> 8) - 33) * (0xFF - 0xA1) - + ((code_point & 0xFF) - 33); - unsigned char b1, b2; - - I += (0xFF - 0xA1 + 0x7F - 0x40) * (0xC9 - 0xA1); - b1 = I / (0xFF - 0xA1 + 0x7F - 0x40) + 0xA1; - b2 = I % (0xFF - 0xA1 + 0x7F - 0x40); - b2 += b2 < 0x3F ? 0x40 : 0x62; - return DECODE_CHAR (Vcharset_chinese_big5, (b1 << 8) | b2); - } - return decode_builtin_char (charset, code_point); } /* Return a character whose charset is CHARSET and position-codes @@ -830,21 +805,4 @@ CHAR_TO_CHARC (Emchar ch) return cc; } - -/************************************************************************/ -/* Exported functions */ -/************************************************************************/ - -EXFUN (Fget_charset, 1); - -extern Lisp_Object Qucs; - -extern Lisp_Object Vcharset_japanese_jisx0208; -extern Lisp_Object Vcharset_japanese_jisx0208_1990; -extern Lisp_Object Vcharset_japanese_jisx0212; - -Lisp_Object put_char_ccs_code_point (Lisp_Object character, - Lisp_Object ccs, Lisp_Object value); -Lisp_Object remove_char_ccs (Lisp_Object character, Lisp_Object ccs); - #endif /* INCLUDED_char_ucs_h_ */