diff src/charset.c @ 20720:f084bb8d535f

(min_composite_char): New variable. (Vcharacter_unification_table_vector): New variable. (syms_of_charset): Declare it as a Lisp symbol. Declare a Lisp variable min-composite-char. (unify_char): Delete unnecessary codes.
author Kenichi Handa <handa@m17n.org>
date Thu, 22 Jan 1998 01:26:45 +0000
parents a949dc65fbea
children cf404f800d2c
line wrap: on
line diff
--- a/src/charset.c	Thu Jan 22 01:26:45 1998 +0000
+++ b/src/charset.c	Thu Jan 22 01:26:45 1998 +0000
@@ -60,6 +60,8 @@
 int charset_big5_1;		/* Big5 Level 1 (Chinese Traditional) */
 int charset_big5_2;		/* Big5 Level 2 (Chinese Traditional) */
 
+int min_composite_char;
+
 Lisp_Object Qcharset_table;
 
 /* A char-table containing information of each character set.  */
@@ -72,6 +74,10 @@
 /* A list of charset symbols ever defined.  */
 Lisp_Object Vcharset_list;
 
+/* Vector of unification table ever defined.
+   An ID of a unification table is an index of this vector.  */
+Lisp_Object Vcharacter_unification_table_vector;
+
 /* Tables used by macros BYTES_BY_CHAR_HEAD and WIDTH_BY_CHAR_HEAD.  */
 int bytes_by_char_head[256];
 int width_by_char_head[256];
@@ -265,8 +271,6 @@
   if (dimension != CHARSET_DIMENSION (charset))
     /* We can't make such a character because of dimension mismatch.  */
     return c;
-  if (!alt_c1) alt_c1 = c1;
-  if (!alt_c2) alt_c2 = c2;
   return MAKE_CHAR (alt_charset, c1, c2);
 }
 
@@ -444,7 +448,7 @@
       if (width == 1)
 	from = LEADING_CODE_EXT_21, to = LEADING_CODE_EXT_22;
       else
-	from = LEADING_CODE_EXT_22, to = LEADING_CODE_EXT_MAX - 1;
+	from = LEADING_CODE_EXT_22, to = LEADING_CODE_EXT_MAX + 1;
     }
 
   for (charset = from; charset < to; charset++)
@@ -1102,10 +1106,7 @@
       unsigned char *str;
 
       if (!INTEGERP (args[i]))
-	{
-	  free (buf);
-	  CHECK_NUMBER (args[i], 0);
-	}
+	CHECK_NUMBER (args[i], 0);
       c = XINT (args[i]);
       len = CHAR_STRING (c, p, str);
       if (p != str)
@@ -1668,6 +1669,12 @@
     "List of charsets ever defined.");
   Vcharset_list = Fcons (Qascii, Qnil);
 
+  DEFVAR_LISP ("character-unification-table-vector",
+	       &Vcharacter_unification_table_vector,
+    "Vector of cons cell of a symbol and unification table ever defined.\n\
+An ID of a unification table is an index of this vector.");
+  Vcharacter_unification_table_vector = Fmake_vector (make_number (16), Qnil);
+
   DEFVAR_INT ("leading-code-composition", &leading_code_composition,
     "Leading-code of composite characters.");
   leading_code_composition = LEADING_CODE_COMPOSITION;
@@ -1694,6 +1701,10 @@
 to convert a Latin-1 or similar 8-bit character code to the corresponding\n\
 Emacs character code.");
   nonascii_insert_offset = 0;
+
+  DEFVAR_INT ("min-composite-char", &min_composite_char,
+    "Minimum character code of a composite character.");
+  min_composite_char = MIN_CHAR_COMPOSITION;
 }
 
 #endif /* emacs */