X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fchar-ucs.h;h=cdba83cac7817266db1b95c1f90b82312dac95c0;hb=42eafc01555847a001964e6702d22191f5392531;hp=7b62001750136524a142dc46e3825b32506c7236;hpb=f6634654b550172efe4a493fe131f0b408822c28;p=chise%2Fxemacs-chise.git.1 diff --git a/src/char-ucs.h b/src/char-ucs.h index 7b62001..cdba83c 100644 --- a/src/char-ucs.h +++ b/src/char-ucs.h @@ -1,5 +1,5 @@ /* Header for UCS-4 character representation. - Copyright (C) 1999,2000,2001,2002,2003 MORIOKA Tomohiko + Copyright (C) 1999,2000,2001,2002,2003,2004 MORIOKA Tomohiko This file is part of XEmacs. @@ -703,6 +703,30 @@ encode_char_1 (Emchar ch, Lisp_Object* charset) return encode_builtin_char_1 (ch, charset); } +INLINE_HEADER int encode_char_2 (Emchar ch, Lisp_Object* charset); +INLINE_HEADER int +encode_char_2 (Emchar ch, Lisp_Object* charset) +{ + Lisp_Object charsets = Vdefault_coded_charset_priority_list; + + while (!NILP (charsets)) + { + *charset = Ffind_charset (Fcar (charsets)); + if ( !NILP (*charset) + && (XCHARSET_DIMENSION (*charset) <= 2) ) + { + int code_point = charset_code_point (*charset, ch, 0); + + if (code_point >= 0) + return code_point; + } + charsets = Fcdr (charsets); + } + + /* otherwise --- maybe for bootstrap */ + return encode_builtin_char_1 (ch, charset); +} + #define ENCODE_CHAR(ch, charset) encode_char_1 (ch, &(charset)) INLINE_HEADER void @@ -761,7 +785,7 @@ CHAR_TO_CHARC (Emchar ch) { Charc cc; - cc.code_point = encode_char_1 (ch, &cc.charset); + cc.code_point = encode_char_2 (ch, &cc.charset); return cc; }