comparison src/mule-charset.c @ 3659:98af8a976fc3

[xemacs-hg @ 2006-11-05 22:31:31 by aidan] Support specifying fonts for particular character sets in Mule; support translation to ISO 10646-1 for Mule character sets without an otherwise matching font; move to a vector of X11-charset-X11-registry instead of a regex for the charset-registry property.
author aidan
date Sun, 05 Nov 2006 22:31:46 +0000
parents d1754e7f0cea
children b880e45ea63b
comparison
equal deleted inserted replaced
3658:0db1aaedbbef 3659:98af8a976fc3
33 #include "device.h" 33 #include "device.h"
34 #include "faces.h" 34 #include "faces.h"
35 #include "lstream.h" 35 #include "lstream.h"
36 #include "mule-ccl.h" 36 #include "mule-ccl.h"
37 #include "objects.h" 37 #include "objects.h"
38 #include "specifier.h"
38 39
39 /* The various pre-defined charsets. */ 40 /* The various pre-defined charsets. */
40 41
41 Lisp_Object Vcharset_ascii; 42 Lisp_Object Vcharset_ascii;
42 Lisp_Object Vcharset_control_1; 43 Lisp_Object Vcharset_control_1;
77 }; 78 };
78 79
79 Lisp_Object Qcharsetp; 80 Lisp_Object Qcharsetp;
80 81
81 /* Qdoc_string, Qdimension, Qchars defined in general.c */ 82 /* Qdoc_string, Qdimension, Qchars defined in general.c */
82 Lisp_Object Qregistry, Qfinal, Qgraphic; 83 Lisp_Object Qregistries, Qfinal, Qgraphic, Qregistry;
83 Lisp_Object Qdirection; 84 Lisp_Object Qdirection;
84 Lisp_Object Qreverse_direction_charset; 85 Lisp_Object Qreverse_direction_charset;
85 Lisp_Object Qshort_name, Qlong_name; 86 Lisp_Object Qshort_name, Qlong_name;
86 87
87 Lisp_Object Qfrom_unicode, Qto_unicode; 88 Lisp_Object Qfrom_unicode, Qto_unicode;
126 Lisp_Charset *cs = XCHARSET (obj); 127 Lisp_Charset *cs = XCHARSET (obj);
127 128
128 mark_object (cs->short_name); 129 mark_object (cs->short_name);
129 mark_object (cs->long_name); 130 mark_object (cs->long_name);
130 mark_object (cs->doc_string); 131 mark_object (cs->doc_string);
131 mark_object (cs->registry); 132 mark_object (cs->registries);
132 mark_object (cs->ccl_program); 133 mark_object (cs->ccl_program);
133 return cs->name; 134 return cs->name;
134 } 135 }
135 136
136 static void 137 static void
156 CHARSET_DIRECTION (cs) == CHARSET_LEFT_TO_RIGHT ? "l2r" : 157 CHARSET_DIRECTION (cs) == CHARSET_LEFT_TO_RIGHT ? "l2r" :
157 "r2l", 158 "r2l",
158 CHARSET_COLUMNS (cs), 159 CHARSET_COLUMNS (cs),
159 CHARSET_GRAPHIC (cs), 160 CHARSET_GRAPHIC (cs),
160 CHARSET_FINAL (cs)); 161 CHARSET_FINAL (cs));
161 print_internal (CHARSET_REGISTRY (cs), printcharfun, 0); 162 print_internal (CHARSET_REGISTRIES (cs), printcharfun, 0);
162 write_fmt_string (printcharfun, " 0x%x>", cs->header.uid); 163 write_fmt_string (printcharfun, " 0x%x>", cs->header.uid);
163 } 164 }
164 165
165 static const struct memory_description charset_description[] = { 166 static const struct memory_description charset_description[] = {
166 { XD_INT, offsetof (Lisp_Charset, dimension) }, 167 { XD_INT, offsetof (Lisp_Charset, dimension) },
167 { XD_INT, offsetof (Lisp_Charset, from_unicode_levels) }, 168 { XD_INT, offsetof (Lisp_Charset, from_unicode_levels) },
168 { XD_LISP_OBJECT, offsetof (Lisp_Charset, name) }, 169 { XD_LISP_OBJECT, offsetof (Lisp_Charset, name) },
169 { XD_LISP_OBJECT, offsetof (Lisp_Charset, doc_string) }, 170 { XD_LISP_OBJECT, offsetof (Lisp_Charset, doc_string) },
170 { XD_LISP_OBJECT, offsetof (Lisp_Charset, registry) }, 171 { XD_LISP_OBJECT, offsetof (Lisp_Charset, registries) },
171 { XD_LISP_OBJECT, offsetof (Lisp_Charset, short_name) }, 172 { XD_LISP_OBJECT, offsetof (Lisp_Charset, short_name) },
172 { XD_LISP_OBJECT, offsetof (Lisp_Charset, long_name) }, 173 { XD_LISP_OBJECT, offsetof (Lisp_Charset, long_name) },
173 { XD_LISP_OBJECT, offsetof (Lisp_Charset, reverse_direction_charset) }, 174 { XD_LISP_OBJECT, offsetof (Lisp_Charset, reverse_direction_charset) },
174 { XD_LISP_OBJECT, offsetof (Lisp_Charset, ccl_program) }, 175 { XD_LISP_OBJECT, offsetof (Lisp_Charset, ccl_program) },
175 { XD_UNION, offsetof (Lisp_Charset, to_unicode_table), 176 { XD_UNION, offsetof (Lisp_Charset, to_unicode_table),
237 CHARSET_TYPE (cs) = type; 238 CHARSET_TYPE (cs) = type;
238 CHARSET_COLUMNS (cs) = columns; 239 CHARSET_COLUMNS (cs) = columns;
239 CHARSET_GRAPHIC (cs) = graphic; 240 CHARSET_GRAPHIC (cs) = graphic;
240 CHARSET_FINAL (cs) = final; 241 CHARSET_FINAL (cs) = final;
241 CHARSET_DOC_STRING (cs) = doc; 242 CHARSET_DOC_STRING (cs) = doc;
242 CHARSET_REGISTRY (cs) = reg; 243 CHECK_VECTOR(reg);
244 CHARSET_REGISTRIES (cs) = reg;
243 CHARSET_ENCODE_AS_UTF_8 (cs) = encode_as_utf_8 ? 1 : 0; 245 CHARSET_ENCODE_AS_UTF_8 (cs) = encode_as_utf_8 ? 1 : 0;
244 CHARSET_CCL_PROGRAM (cs) = Qnil; 246 CHARSET_CCL_PROGRAM (cs) = Qnil;
245 CHARSET_REVERSE_DIRECTION_CHARSET (cs) = Qnil; 247 CHARSET_REVERSE_DIRECTION_CHARSET (cs) = Qnil;
246 248
247 CHARSET_DIMENSION (cs) = (CHARSET_TYPE (cs) == CHARSET_TYPE_94 || 249 CHARSET_DIMENSION (cs) = (CHARSET_TYPE (cs) == CHARSET_TYPE_94 ||
269 assert (NILP (Fgethash (name, Vcharset_hash_table, Qnil))); 271 assert (NILP (Fgethash (name, Vcharset_hash_table, Qnil)));
270 Fputhash (name, obj, Vcharset_hash_table); 272 Fputhash (name, obj, Vcharset_hash_table);
271 } 273 }
272 274
273 recalculate_unicode_precedence (); 275 recalculate_unicode_precedence ();
276 setup_charset_initial_specifier_tags (obj);
277
274 return obj; 278 return obj;
275 } 279 }
276 280
277 static int 281 static int
278 get_unallocated_leading_byte (int dimension) 282 get_unallocated_leading_byte (int dimension)
417 PROPS is a property list, describing the specific nature of the 421 PROPS is a property list, describing the specific nature of the
418 character set. Recognized properties are: 422 character set. Recognized properties are:
419 423
420 `short-name' Short version of the charset name (ex: Latin-1) 424 `short-name' Short version of the charset name (ex: Latin-1)
421 `long-name' Long version of the charset name (ex: ISO8859-1 (Latin-1)) 425 `long-name' Long version of the charset name (ex: ISO8859-1 (Latin-1))
422 `registry' A regular expression matching the font registry field for 426 `registries' A vector of possible XLFD REGISTRY-ENCODING combinations for
423 this character set. 427 this character set. Note that this is not a regular expression.
424 `dimension' Number of octets used to index a character in this charset. 428 `dimension' Number of octets used to index a character in this charset.
425 Either 1 or 2. Defaults to 1. 429 Either 1 or 2. Defaults to 1.
426 `columns' Number of columns used to display a character in this charset. 430 `columns' Number of columns used to display a character in this charset.
427 Only used in TTY mode. (Under X, the actual width of a 431 Only used in TTY mode. (Under X, the actual width of a
428 character can be derived from the font used to display the 432 character can be derived from the font used to display the
466 { 470 {
467 int id, dimension = 1, chars = 94, graphic = 0, columns = -1; 471 int id, dimension = 1, chars = 94, graphic = 0, columns = -1;
468 Ibyte final = 0; 472 Ibyte final = 0;
469 int direction = CHARSET_LEFT_TO_RIGHT; 473 int direction = CHARSET_LEFT_TO_RIGHT;
470 int type; 474 int type;
471 Lisp_Object registry = Qnil; 475 Lisp_Object registries = Qnil;
472 Lisp_Object charset = Qnil; 476 Lisp_Object charset = Qnil;
473 Lisp_Object ccl_program = Qnil; 477 Lisp_Object ccl_program = Qnil;
474 Lisp_Object short_name = Qnil, long_name = Qnil; 478 Lisp_Object short_name = Qnil, long_name = Qnil;
475 int encode_as_utf_8 = 0; 479 int encode_as_utf_8 = 0;
476 Lisp_Object existing_charset; 480 Lisp_Object existing_charset;
536 graphic = XINT (value); 540 graphic = XINT (value);
537 if (graphic < 0 || graphic > 1) 541 if (graphic < 0 || graphic > 1)
538 invalid_constant ("Invalid value for `graphic'", value); 542 invalid_constant ("Invalid value for `graphic'", value);
539 } 543 }
540 544
545 else if (EQ (keyword, Qregistries))
546 {
547 CHECK_VECTOR (value);
548 registries = value;
549 }
550
541 else if (EQ (keyword, Qregistry)) 551 else if (EQ (keyword, Qregistry))
542 { 552 {
553 Lisp_Object quoted_registry;
554
543 CHECK_STRING (value); 555 CHECK_STRING (value);
544 registry = value; 556 quoted_registry = Fregexp_quote(value);
557 if (strcmp(XSTRING_DATA(quoted_registry),
558 XSTRING_DATA(value)))
559 {
560 warn_when_safe
561 (Qregistry, Qwarning,
562 "Regexps no longer allowed for charset-registry. "
563 "Treating %s as string", XSTRING_DATA(value));
564 }
565 registries = vector1(value);
545 } 566 }
546 567
547 else if (EQ (keyword, Qdirection)) 568 else if (EQ (keyword, Qdirection))
548 { 569 {
549 if (EQ (value, Ql2r)) 570 if (EQ (value, Ql2r))
611 qxesprintf (tempname, "___temporary___%d__", id); 632 qxesprintf (tempname, "___temporary___%d__", id);
612 name = intern_int (tempname); 633 name = intern_int (tempname);
613 } 634 }
614 if (NILP (doc_string)) 635 if (NILP (doc_string))
615 doc_string = build_string (""); 636 doc_string = build_string ("");
616 if (NILP (registry)) 637 if (NILP (registries))
617 registry = build_string (""); 638 registries = make_vector(0, Qnil);
618 if (NILP (short_name)) 639 if (NILP (short_name))
619 short_name = XSYMBOL (name)->name; 640 short_name = XSYMBOL (name)->name;
620 if (NILP (long_name)) 641 if (NILP (long_name))
621 long_name = doc_string; 642 long_name = doc_string;
622 if (columns == -1) 643 if (columns == -1)
623 columns = dimension; 644 columns = dimension;
624 645
625 charset = make_charset (id, name, dimension + 2, type, columns, graphic, 646 charset = make_charset (id, name, dimension + 2, type, columns, graphic,
626 final, direction, short_name, long_name, 647 final, direction, short_name, long_name,
627 doc_string, registry, !NILP (existing_charset), 648 doc_string, registries, !NILP (existing_charset),
628 encode_as_utf_8); 649 encode_as_utf_8);
629 650
630 XCHARSET (charset)->temporary = temporary; 651 XCHARSET (charset)->temporary = temporary;
631 if (!NILP (ccl_program)) 652 if (!NILP (ccl_program))
632 XCHARSET_CCL_PROGRAM (charset) = ccl_program; 653 XCHARSET_CCL_PROGRAM (charset) = ccl_program;
655 { 676 {
656 Lisp_Object new_charset = Qnil; 677 Lisp_Object new_charset = Qnil;
657 int id, dimension, columns, graphic, encode_as_utf_8; 678 int id, dimension, columns, graphic, encode_as_utf_8;
658 Ibyte final; 679 Ibyte final;
659 int direction, type; 680 int direction, type;
660 Lisp_Object registry, doc_string, short_name, long_name; 681 Lisp_Object registries, doc_string, short_name, long_name;
661 Lisp_Charset *cs; 682 Lisp_Charset *cs;
662 683
663 charset = Fget_charset (charset); 684 charset = Fget_charset (charset);
664 if (!NILP (XCHARSET_REVERSE_DIRECTION_CHARSET (charset))) 685 if (!NILP (XCHARSET_REVERSE_DIRECTION_CHARSET (charset)))
665 invalid_operation ("Charset already has reverse-direction charset", 686 invalid_operation ("Charset already has reverse-direction charset",
682 if (CHARSET_DIRECTION (cs) == CHARSET_RIGHT_TO_LEFT) 703 if (CHARSET_DIRECTION (cs) == CHARSET_RIGHT_TO_LEFT)
683 direction = CHARSET_LEFT_TO_RIGHT; 704 direction = CHARSET_LEFT_TO_RIGHT;
684 doc_string = CHARSET_DOC_STRING (cs); 705 doc_string = CHARSET_DOC_STRING (cs);
685 short_name = CHARSET_SHORT_NAME (cs); 706 short_name = CHARSET_SHORT_NAME (cs);
686 long_name = CHARSET_LONG_NAME (cs); 707 long_name = CHARSET_LONG_NAME (cs);
687 registry = CHARSET_REGISTRY (cs); 708 registries = CHARSET_REGISTRIES (cs);
688 encode_as_utf_8 = CHARSET_ENCODE_AS_UTF_8 (cs); 709 encode_as_utf_8 = CHARSET_ENCODE_AS_UTF_8 (cs);
689 710
690 new_charset = make_charset (id, new_name, dimension + 2, type, columns, 711 new_charset = make_charset (id, new_name, dimension + 2, type, columns,
691 graphic, final, direction, short_name, long_name, 712 graphic, final, direction, short_name, long_name,
692 doc_string, registry, 0, encode_as_utf_8); 713 doc_string, registries, 0, encode_as_utf_8);
693 714
694 CHARSET_REVERSE_DIRECTION_CHARSET (cs) = new_charset; 715 CHARSET_REVERSE_DIRECTION_CHARSET (cs) = new_charset;
695 XCHARSET_REVERSE_DIRECTION_CHARSET (new_charset) = charset; 716 XCHARSET_REVERSE_DIRECTION_CHARSET (new_charset) = charset;
696 717
697 return new_charset; 718 return new_charset;
818 if (EQ (prop, Qdimension)) return make_int (CHARSET_DIMENSION (cs)); 839 if (EQ (prop, Qdimension)) return make_int (CHARSET_DIMENSION (cs));
819 if (EQ (prop, Qcolumns)) return make_int (CHARSET_COLUMNS (cs)); 840 if (EQ (prop, Qcolumns)) return make_int (CHARSET_COLUMNS (cs));
820 if (EQ (prop, Qgraphic)) return make_int (CHARSET_GRAPHIC (cs)); 841 if (EQ (prop, Qgraphic)) return make_int (CHARSET_GRAPHIC (cs));
821 if (EQ (prop, Qfinal)) return make_char (CHARSET_FINAL (cs)); 842 if (EQ (prop, Qfinal)) return make_char (CHARSET_FINAL (cs));
822 if (EQ (prop, Qchars)) return make_int (CHARSET_CHARS (cs)); 843 if (EQ (prop, Qchars)) return make_int (CHARSET_CHARS (cs));
823 if (EQ (prop, Qregistry)) return CHARSET_REGISTRY (cs); 844 if (EQ (prop, Qregistries)) return CHARSET_REGISTRIES (cs);
824 if (EQ (prop, Qencode_as_utf_8)) 845 if (EQ (prop, Qencode_as_utf_8))
825 return CHARSET_ENCODE_AS_UTF_8 (cs) ? Qt : Qnil; 846 return CHARSET_ENCODE_AS_UTF_8 (cs) ? Qt : Qnil;
826 if (EQ (prop, Qccl_program)) return CHARSET_CCL_PROGRAM (cs); 847 if (EQ (prop, Qccl_program)) return CHARSET_CCL_PROGRAM (cs);
827 if (EQ (prop, Qdirection)) 848 if (EQ (prop, Qdirection))
828 return CHARSET_DIRECTION (cs) == CHARSET_LEFT_TO_RIGHT ? Ql2r : Qr2l; 849 return CHARSET_DIRECTION (cs) == CHARSET_LEFT_TO_RIGHT ? Ql2r : Qr2l;
860 XCHARSET_CCL_PROGRAM (charset) = ccl_program; 881 XCHARSET_CCL_PROGRAM (charset) = ccl_program;
861 face_property_was_changed (Vdefault_face, Qfont, Qglobal); 882 face_property_was_changed (Vdefault_face, Qfont, Qglobal);
862 return Qnil; 883 return Qnil;
863 } 884 }
864 885
865 /* Japanese folks may want to (set-charset-registry 'ascii "jisx0201") */ 886 DEFUN ("set-charset-registries", Fset_charset_registries, 2, 2, 0, /*
866 DEFUN ("set-charset-registry", Fset_charset_registry, 2, 2, 0, /* 887 Set the `registries' property of CHARSET to REGISTRIES.
867 Set the `registry' property of CHARSET to REGISTRY. 888
868 */ 889 REGISTRIES is an ordered vector of strings that describe the X11
869 (charset, registry)) 890 CHARSET_REGISTRY and the CHARSET_ENCODINGs appropriate for this charset.
870 { 891 Separate each registry from the corresponding encoding with a dash. The
892 strings are not regular expressions, in contrast to the old behavior of
893 the `charset-registry' property.
894
895 One reason to call this function might be if you're in Japan and you'd
896 prefer the backslash to display as a Yen sign; the corresponding syntax
897 would be:
898
899 (set-charset-registries 'ascii ["jisx0201.1976-0"])
900
901 */
902 (charset, registries))
903 {
904 int i;
871 charset = Fget_charset (charset); 905 charset = Fget_charset (charset);
872 CHECK_STRING (registry); 906 CHECK_VECTOR (registries);
873 XCHARSET_REGISTRY (charset) = registry; 907
908 for (i = 0; i < XVECTOR_LENGTH(registries); ++i)
909 {
910 CHECK_STRING (XVECTOR_DATA(registries)[i]);
911 if (NULL == qxestrchr(XSTRING_DATA(XVECTOR_DATA(registries)[i]), '-'))
912 {
913 invalid_argument("Not an X11 REGISTRY-ENCODING combination",
914 XVECTOR_DATA(registries)[i]);
915 }
916 }
917
918 XCHARSET_REGISTRIES (charset) = registries;
874 invalidate_charset_font_caches (charset); 919 invalidate_charset_font_caches (charset);
875 face_property_was_changed (Vdefault_face, Qfont, Qglobal); 920 face_property_was_changed (Vdefault_face, Qfont, Qglobal);
876 return Qnil; 921 return Qnil;
877 } 922 }
878 923
965 DEFSUBR (Fcharset_description); 1010 DEFSUBR (Fcharset_description);
966 DEFSUBR (Fcharset_dimension); 1011 DEFSUBR (Fcharset_dimension);
967 DEFSUBR (Fcharset_property); 1012 DEFSUBR (Fcharset_property);
968 DEFSUBR (Fcharset_id); 1013 DEFSUBR (Fcharset_id);
969 DEFSUBR (Fset_charset_ccl_program); 1014 DEFSUBR (Fset_charset_ccl_program);
970 DEFSUBR (Fset_charset_registry); 1015 DEFSUBR (Fset_charset_registries);
971 1016
972 #ifdef MEMORY_USAGE_STATS 1017 #ifdef MEMORY_USAGE_STATS
973 DEFSUBR (Fcharset_memory_usage); 1018 DEFSUBR (Fcharset_memory_usage);
974 #endif 1019 #endif
975 1020
976 DEFSYMBOL (Qcharsetp); 1021 DEFSYMBOL (Qcharsetp);
977 DEFSYMBOL (Qregistry); 1022 DEFSYMBOL (Qregistries);
978 DEFSYMBOL (Qfinal); 1023 DEFSYMBOL (Qfinal);
979 DEFSYMBOL (Qgraphic); 1024 DEFSYMBOL (Qgraphic);
1025 DEFSYMBOL (Qregistry);
980 DEFSYMBOL (Qdirection); 1026 DEFSYMBOL (Qdirection);
981 DEFSYMBOL (Qreverse_direction_charset); 1027 DEFSYMBOL (Qreverse_direction_charset);
982 DEFSYMBOL (Qshort_name); 1028 DEFSYMBOL (Qshort_name);
983 DEFSYMBOL (Qlong_name); 1029 DEFSYMBOL (Qlong_name);
984 1030
1054 CHARSET_TYPE_94, 1, 0, 'B', 1100 CHARSET_TYPE_94, 1, 0, 'B',
1055 CHARSET_LEFT_TO_RIGHT, 1101 CHARSET_LEFT_TO_RIGHT,
1056 build_string ("ASCII"), 1102 build_string ("ASCII"),
1057 build_msg_string ("ASCII"), 1103 build_msg_string ("ASCII"),
1058 build_msg_string ("ASCII (ISO646 IRV)"), 1104 build_msg_string ("ASCII (ISO646 IRV)"),
1059 build_string ("\\(iso8859-[0-9]*\\|-ascii\\)"), 0, 0); 1105 vector1(build_string("iso8859-1")), 0, 0);
1060 staticpro (&Vcharset_control_1); 1106 staticpro (&Vcharset_control_1);
1061 Vcharset_control_1 = 1107 Vcharset_control_1 =
1062 make_charset (LEADING_BYTE_CONTROL_1, Qcontrol_1, 2, 1108 make_charset (LEADING_BYTE_CONTROL_1, Qcontrol_1, 2,
1063 CHARSET_TYPE_94, 1, 1, 0, 1109 CHARSET_TYPE_94, 1, 1, 0,
1064 CHARSET_LEFT_TO_RIGHT, 1110 CHARSET_LEFT_TO_RIGHT,
1065 build_string ("C1"), 1111 build_string ("C1"),
1066 build_msg_string ("Control characters"), 1112 build_msg_string ("Control characters"),
1067 build_msg_string ("Control characters 128-191"), 1113 build_msg_string ("Control characters 128-191"),
1068 build_string (""), 0, 0); 1114 vector1(build_string("iso8859-1")), 0, 0);
1069 staticpro (&Vcharset_latin_iso8859_1); 1115 staticpro (&Vcharset_latin_iso8859_1);
1070 Vcharset_latin_iso8859_1 = 1116 Vcharset_latin_iso8859_1 =
1071 make_charset (LEADING_BYTE_LATIN_ISO8859_1, Qlatin_iso8859_1, 2, 1117 make_charset (LEADING_BYTE_LATIN_ISO8859_1, Qlatin_iso8859_1, 2,
1072 CHARSET_TYPE_96, 1, 1, 'A', 1118 CHARSET_TYPE_96, 1, 1, 'A',
1073 CHARSET_LEFT_TO_RIGHT, 1119 CHARSET_LEFT_TO_RIGHT,
1074 build_string ("Latin-1"), 1120 build_string ("Latin-1"),
1075 build_msg_string ("ISO8859-1 (Latin-1)"), 1121 build_msg_string ("ISO8859-1 (Latin-1)"),
1076 build_msg_string ("ISO8859-1 (Latin-1)"), 1122 build_msg_string ("ISO8859-1 (Latin-1)"),
1077 build_string ("iso8859-1"), 0, 0); 1123 vector1(build_string("iso8859-1")), 0, 0);
1078 staticpro (&Vcharset_latin_iso8859_2); 1124 staticpro (&Vcharset_latin_iso8859_2);
1079 Vcharset_latin_iso8859_2 = 1125 Vcharset_latin_iso8859_2 =
1080 make_charset (LEADING_BYTE_LATIN_ISO8859_2, Qlatin_iso8859_2, 2, 1126 make_charset (LEADING_BYTE_LATIN_ISO8859_2, Qlatin_iso8859_2, 2,
1081 CHARSET_TYPE_96, 1, 1, 'B', 1127 CHARSET_TYPE_96, 1, 1, 'B',
1082 CHARSET_LEFT_TO_RIGHT, 1128 CHARSET_LEFT_TO_RIGHT,
1083 build_string ("Latin-2"), 1129 build_string ("Latin-2"),
1084 build_msg_string ("ISO8859-2 (Latin-2)"), 1130 build_msg_string ("ISO8859-2 (Latin-2)"),
1085 build_msg_string ("ISO8859-2 (Latin-2)"), 1131 build_msg_string ("ISO8859-2 (Latin-2)"),
1086 build_string ("iso8859-2"), 0, 0); 1132 vector1(build_string("iso8859-2")), 0, 0);
1087 staticpro (&Vcharset_latin_iso8859_3); 1133 staticpro (&Vcharset_latin_iso8859_3);
1088 Vcharset_latin_iso8859_3 = 1134 Vcharset_latin_iso8859_3 =
1089 make_charset (LEADING_BYTE_LATIN_ISO8859_3, Qlatin_iso8859_3, 2, 1135 make_charset (LEADING_BYTE_LATIN_ISO8859_3, Qlatin_iso8859_3, 2,
1090 CHARSET_TYPE_96, 1, 1, 'C', 1136 CHARSET_TYPE_96, 1, 1, 'C',
1091 CHARSET_LEFT_TO_RIGHT, 1137 CHARSET_LEFT_TO_RIGHT,
1092 build_string ("Latin-3"), 1138 build_string ("Latin-3"),
1093 build_msg_string ("ISO8859-3 (Latin-3)"), 1139 build_msg_string ("ISO8859-3 (Latin-3)"),
1094 build_msg_string ("ISO8859-3 (Latin-3)"), 1140 build_msg_string ("ISO8859-3 (Latin-3)"),
1095 build_string ("iso8859-3"), 0, 0); 1141 vector1(build_string("iso8859-3")), 0, 0);
1096 staticpro (&Vcharset_latin_iso8859_4); 1142 staticpro (&Vcharset_latin_iso8859_4);
1097 Vcharset_latin_iso8859_4 = 1143 Vcharset_latin_iso8859_4 =
1098 make_charset (LEADING_BYTE_LATIN_ISO8859_4, Qlatin_iso8859_4, 2, 1144 make_charset (LEADING_BYTE_LATIN_ISO8859_4, Qlatin_iso8859_4, 2,
1099 CHARSET_TYPE_96, 1, 1, 'D', 1145 CHARSET_TYPE_96, 1, 1, 'D',
1100 CHARSET_LEFT_TO_RIGHT, 1146 CHARSET_LEFT_TO_RIGHT,
1101 build_string ("Latin-4"), 1147 build_string ("Latin-4"),
1102 build_msg_string ("ISO8859-4 (Latin-4)"), 1148 build_msg_string ("ISO8859-4 (Latin-4)"),
1103 build_msg_string ("ISO8859-4 (Latin-4)"), 1149 build_msg_string ("ISO8859-4 (Latin-4)"),
1104 build_string ("iso8859-4"), 0, 0); 1150 vector1(build_string("iso8859-2")), 0, 0);
1105 staticpro (&Vcharset_thai_tis620); 1151 staticpro (&Vcharset_thai_tis620);
1106 Vcharset_thai_tis620 = 1152 Vcharset_thai_tis620 =
1107 make_charset (LEADING_BYTE_THAI_TIS620, Qthai_tis620, 2, 1153 make_charset (LEADING_BYTE_THAI_TIS620, Qthai_tis620, 2,
1108 CHARSET_TYPE_96, 1, 1, 'T', 1154 CHARSET_TYPE_96, 1, 1, 'T',
1109 CHARSET_LEFT_TO_RIGHT, 1155 CHARSET_LEFT_TO_RIGHT,
1110 build_string ("TIS620"), 1156 build_string ("TIS620"),
1111 build_msg_string ("TIS620 (Thai)"), 1157 build_msg_string ("TIS620 (Thai)"),
1112 build_msg_string ("TIS620.2529 (Thai)"), 1158 build_msg_string ("TIS620.2529 (Thai)"),
1113 build_string ("tis620"), 0, 0); 1159 vector1(build_string("tis620.2529-1")), 0, 0);
1114 staticpro (&Vcharset_greek_iso8859_7); 1160 staticpro (&Vcharset_greek_iso8859_7);
1115 Vcharset_greek_iso8859_7 = 1161 Vcharset_greek_iso8859_7 =
1116 make_charset (LEADING_BYTE_GREEK_ISO8859_7, Qgreek_iso8859_7, 2, 1162 make_charset (LEADING_BYTE_GREEK_ISO8859_7, Qgreek_iso8859_7, 2,
1117 CHARSET_TYPE_96, 1, 1, 'F', 1163 CHARSET_TYPE_96, 1, 1, 'F',
1118 CHARSET_LEFT_TO_RIGHT, 1164 CHARSET_LEFT_TO_RIGHT,
1119 build_string ("ISO8859-7"), 1165 build_string ("ISO8859-7"),
1120 build_msg_string ("ISO8859-7 (Greek)"), 1166 build_msg_string ("ISO8859-7 (Greek)"),
1121 build_msg_string ("ISO8859-7 (Greek)"), 1167 build_msg_string ("ISO8859-7 (Greek)"),
1122 build_string ("iso8859-7"), 0, 0); 1168 vector1(build_string("iso8859-7")), 0, 0);
1123 staticpro (&Vcharset_arabic_iso8859_6); 1169 staticpro (&Vcharset_arabic_iso8859_6);
1124 Vcharset_arabic_iso8859_6 = 1170 Vcharset_arabic_iso8859_6 =
1125 make_charset (LEADING_BYTE_ARABIC_ISO8859_6, Qarabic_iso8859_6, 2, 1171 make_charset (LEADING_BYTE_ARABIC_ISO8859_6, Qarabic_iso8859_6, 2,
1126 CHARSET_TYPE_96, 1, 1, 'G', 1172 CHARSET_TYPE_96, 1, 1, 'G',
1127 CHARSET_RIGHT_TO_LEFT, 1173 CHARSET_RIGHT_TO_LEFT,
1128 build_string ("ISO8859-6"), 1174 build_string ("ISO8859-6"),
1129 build_msg_string ("ISO8859-6 (Arabic)"), 1175 build_msg_string ("ISO8859-6 (Arabic)"),
1130 build_msg_string ("ISO8859-6 (Arabic)"), 1176 build_msg_string ("ISO8859-6 (Arabic)"),
1131 build_string ("iso8859-6"), 0, 0); 1177 vector1(build_string ("iso8859-6")), 0, 0);
1132 staticpro (&Vcharset_hebrew_iso8859_8); 1178 staticpro (&Vcharset_hebrew_iso8859_8);
1133 Vcharset_hebrew_iso8859_8 = 1179 Vcharset_hebrew_iso8859_8 =
1134 make_charset (LEADING_BYTE_HEBREW_ISO8859_8, Qhebrew_iso8859_8, 2, 1180 make_charset (LEADING_BYTE_HEBREW_ISO8859_8, Qhebrew_iso8859_8, 2,
1135 CHARSET_TYPE_96, 1, 1, 'H', 1181 CHARSET_TYPE_96, 1, 1, 'H',
1136 CHARSET_RIGHT_TO_LEFT, 1182 CHARSET_RIGHT_TO_LEFT,
1137 build_string ("ISO8859-8"), 1183 build_string ("ISO8859-8"),
1138 build_msg_string ("ISO8859-8 (Hebrew)"), 1184 build_msg_string ("ISO8859-8 (Hebrew)"),
1139 build_msg_string ("ISO8859-8 (Hebrew)"), 1185 build_msg_string ("ISO8859-8 (Hebrew)"),
1140 build_string ("iso8859-8"), 0, 0); 1186 vector1(build_string ("iso8859-8")), 0, 0);
1141 staticpro (&Vcharset_katakana_jisx0201); 1187 staticpro (&Vcharset_katakana_jisx0201);
1142 Vcharset_katakana_jisx0201 = 1188 Vcharset_katakana_jisx0201 =
1143 make_charset (LEADING_BYTE_KATAKANA_JISX0201, Qkatakana_jisx0201, 2, 1189 make_charset (LEADING_BYTE_KATAKANA_JISX0201, Qkatakana_jisx0201, 2,
1144 CHARSET_TYPE_94, 1, 1, 'I', 1190 CHARSET_TYPE_94, 1, 1, 'I',
1145 CHARSET_LEFT_TO_RIGHT, 1191 CHARSET_LEFT_TO_RIGHT,
1146 build_string ("JISX0201 Kana"), 1192 build_string ("JISX0201 Kana"),
1147 build_msg_string ("JISX0201.1976 (Japanese Kana)"), 1193 build_msg_string ("JISX0201.1976 (Japanese Kana)"),
1148 build_msg_string ("JISX0201.1976 Japanese Kana"), 1194 build_msg_string ("JISX0201.1976 Japanese Kana"),
1149 build_string ("jisx0201.1976"), 0, 0); 1195 vector1(build_string ("jisx0201.1976-0")), 0, 0);
1150 staticpro (&Vcharset_latin_jisx0201); 1196 staticpro (&Vcharset_latin_jisx0201);
1151 Vcharset_latin_jisx0201 = 1197 Vcharset_latin_jisx0201 =
1152 make_charset (LEADING_BYTE_LATIN_JISX0201, Qlatin_jisx0201, 2, 1198 make_charset (LEADING_BYTE_LATIN_JISX0201, Qlatin_jisx0201, 2,
1153 CHARSET_TYPE_94, 1, 0, 'J', 1199 CHARSET_TYPE_94, 1, 0, 'J',
1154 CHARSET_LEFT_TO_RIGHT, 1200 CHARSET_LEFT_TO_RIGHT,
1155 build_string ("JISX0201 Roman"), 1201 build_string ("JISX0201 Roman"),
1156 build_msg_string ("JISX0201.1976 (Japanese Roman)"), 1202 build_msg_string ("JISX0201.1976 (Japanese Roman)"),
1157 build_msg_string ("JISX0201.1976 Japanese Roman"), 1203 build_msg_string ("JISX0201.1976 Japanese Roman"),
1158 build_string ("jisx0201.1976"), 0, 0); 1204 vector1(build_string ("jisx0201.1976-0")), 0, 0);
1159 staticpro (&Vcharset_cyrillic_iso8859_5); 1205 staticpro (&Vcharset_cyrillic_iso8859_5);
1160 Vcharset_cyrillic_iso8859_5 = 1206 Vcharset_cyrillic_iso8859_5 =
1161 make_charset (LEADING_BYTE_CYRILLIC_ISO8859_5, Qcyrillic_iso8859_5, 2, 1207 make_charset (LEADING_BYTE_CYRILLIC_ISO8859_5, Qcyrillic_iso8859_5, 2,
1162 CHARSET_TYPE_96, 1, 1, 'L', 1208 CHARSET_TYPE_96, 1, 1, 'L',
1163 CHARSET_LEFT_TO_RIGHT, 1209 CHARSET_LEFT_TO_RIGHT,
1164 build_string ("ISO8859-5"), 1210 build_string ("ISO8859-5"),
1165 build_msg_string ("ISO8859-5 (Cyrillic)"), 1211 build_msg_string ("ISO8859-5 (Cyrillic)"),
1166 build_msg_string ("ISO8859-5 (Cyrillic)"), 1212 build_msg_string ("ISO8859-5 (Cyrillic)"),
1167 build_string ("iso8859-5"), 0, 0); 1213 vector1(build_string ("iso8859-5")), 0, 0);
1168 staticpro (&Vcharset_latin_iso8859_9); 1214 staticpro (&Vcharset_latin_iso8859_9);
1169 Vcharset_latin_iso8859_9 = 1215 Vcharset_latin_iso8859_9 =
1170 make_charset (LEADING_BYTE_LATIN_ISO8859_9, Qlatin_iso8859_9, 2, 1216 make_charset (LEADING_BYTE_LATIN_ISO8859_9, Qlatin_iso8859_9, 2,
1171 CHARSET_TYPE_96, 1, 1, 'M', 1217 CHARSET_TYPE_96, 1, 1, 'M',
1172 CHARSET_LEFT_TO_RIGHT, 1218 CHARSET_LEFT_TO_RIGHT,
1173 build_string ("Latin-5"), 1219 build_string ("Latin-5"),
1174 build_msg_string ("ISO8859-9 (Latin-5)"), 1220 build_msg_string ("ISO8859-9 (Latin-5)"),
1175 build_msg_string ("ISO8859-9 (Latin-5)"), 1221 build_msg_string ("ISO8859-9 (Latin-5)"),
1176 build_string ("iso8859-9"), 0, 0); 1222 vector1(build_string ("iso8859-9")), 0, 0);
1177 staticpro (&Vcharset_latin_iso8859_15); 1223 staticpro (&Vcharset_latin_iso8859_15);
1178 Vcharset_latin_iso8859_15 = 1224 Vcharset_latin_iso8859_15 =
1179 make_charset (LEADING_BYTE_LATIN_ISO8859_15, Qlatin_iso8859_15, 2, 1225 make_charset (LEADING_BYTE_LATIN_ISO8859_15, Qlatin_iso8859_15, 2,
1180 CHARSET_TYPE_96, 1, 1, 'b', 1226 CHARSET_TYPE_96, 1, 1, 'b',
1181 CHARSET_LEFT_TO_RIGHT, 1227 CHARSET_LEFT_TO_RIGHT,
1182 build_string ("Latin-9"), 1228 build_string ("Latin-9"),
1183 build_msg_string ("ISO8859-15 (Latin-9)"), 1229 build_msg_string ("ISO8859-15 (Latin-9)"),
1184 build_msg_string ("ISO8859-15 (Latin-9)"), 1230 build_msg_string ("ISO8859-15 (Latin-9)"),
1185 build_string ("iso8859-15"), 0, 0); 1231 vector1(build_string ("iso8859-15")), 0, 0);
1186 staticpro (&Vcharset_japanese_jisx0208_1978); 1232 staticpro (&Vcharset_japanese_jisx0208_1978);
1187 Vcharset_japanese_jisx0208_1978 = 1233 Vcharset_japanese_jisx0208_1978 =
1188 make_charset (LEADING_BYTE_JAPANESE_JISX0208_1978, Qjapanese_jisx0208_1978, 3, 1234 make_charset (LEADING_BYTE_JAPANESE_JISX0208_1978, Qjapanese_jisx0208_1978, 3,
1189 CHARSET_TYPE_94X94, 2, 0, '@', 1235 CHARSET_TYPE_94X94, 2, 0, '@',
1190 CHARSET_LEFT_TO_RIGHT, 1236 CHARSET_LEFT_TO_RIGHT,
1191 build_string ("JISX0208.1978"), 1237 build_string ("JISX0208.1978"),
1192 build_msg_string ("JISX0208.1978 (Japanese)"), 1238 build_msg_string ("JISX0208.1978 (Japanese)"),
1193 build_msg_string 1239 build_msg_string
1194 ("JISX0208.1978 Japanese Kanji (so called \"old JIS\")"), 1240 ("JISX0208.1978 Japanese Kanji (so called \"old JIS\")"),
1195 build_string ("\\(jisx0208\\|jisc6226\\)\\.1978"), 0, 0); 1241 vector2(build_string("jisx0208.1978-0"),
1242 build_string("jisc6226.1978-0")), 0, 0);
1196 staticpro (&Vcharset_chinese_gb2312); 1243 staticpro (&Vcharset_chinese_gb2312);
1197 Vcharset_chinese_gb2312 = 1244 Vcharset_chinese_gb2312 =
1198 make_charset (LEADING_BYTE_CHINESE_GB2312, Qchinese_gb2312, 3, 1245 make_charset (LEADING_BYTE_CHINESE_GB2312, Qchinese_gb2312, 3,
1199 CHARSET_TYPE_94X94, 2, 0, 'A', 1246 CHARSET_TYPE_94X94, 2, 0, 'A',
1200 CHARSET_LEFT_TO_RIGHT, 1247 CHARSET_LEFT_TO_RIGHT,
1201 build_string ("GB2312"), 1248 build_string ("GB2312"),
1202 build_msg_string ("GB2312)"), 1249 build_msg_string ("GB2312)"),
1203 build_msg_string ("GB2312 Chinese simplified"), 1250 build_msg_string ("GB2312 Chinese simplified"),
1204 build_string ("gb2312"), 0, 0); 1251 vector2(build_string("gb2312.1980-0"),
1252 build_string("gb2312.80&gb8565.88-0")), 0, 0);
1205 staticpro (&Vcharset_japanese_jisx0208); 1253 staticpro (&Vcharset_japanese_jisx0208);
1206 Vcharset_japanese_jisx0208 = 1254 Vcharset_japanese_jisx0208 =
1207 make_charset (LEADING_BYTE_JAPANESE_JISX0208, Qjapanese_jisx0208, 3, 1255 make_charset (LEADING_BYTE_JAPANESE_JISX0208, Qjapanese_jisx0208, 3,
1208 CHARSET_TYPE_94X94, 2, 0, 'B', 1256 CHARSET_TYPE_94X94, 2, 0, 'B',
1209 CHARSET_LEFT_TO_RIGHT, 1257 CHARSET_LEFT_TO_RIGHT,
1210 build_string ("JISX0208"), 1258 build_string ("JISX0208"),
1211 build_msg_string ("JISX0208.1983/1990 (Japanese)"), 1259 build_msg_string ("JISX0208.1983/1990 (Japanese)"),
1212 build_msg_string ("JISX0208.1983/1990 Japanese Kanji"), 1260 build_msg_string ("JISX0208.1983/1990 Japanese Kanji"),
1213 build_string ("jisx0208.19\\(83\\|90\\)"), 0, 0); 1261 vector2(build_string("jisx0208.1983-0"),
1262 build_string("jisx0208.1990-0")), 0, 0);
1214 staticpro (&Vcharset_korean_ksc5601); 1263 staticpro (&Vcharset_korean_ksc5601);
1215 Vcharset_korean_ksc5601 = 1264 Vcharset_korean_ksc5601 =
1216 make_charset (LEADING_BYTE_KOREAN_KSC5601, Qkorean_ksc5601, 3, 1265 make_charset (LEADING_BYTE_KOREAN_KSC5601, Qkorean_ksc5601, 3,
1217 CHARSET_TYPE_94X94, 2, 0, 'C', 1266 CHARSET_TYPE_94X94, 2, 0, 'C',
1218 CHARSET_LEFT_TO_RIGHT, 1267 CHARSET_LEFT_TO_RIGHT,
1219 build_string ("KSC5601"), 1268 build_string ("KSC5601"),
1220 build_msg_string ("KSC5601 (Korean"), 1269 build_msg_string ("KSC5601 (Korean"),
1221 build_msg_string ("KSC5601 Korean Hangul and Hanja"), 1270 build_msg_string ("KSC5601 Korean Hangul and Hanja"),
1222 build_string ("ksc5601"), 0, 0); 1271 vector1(build_string("ksc5601.1987-0")), 0, 0);
1223 staticpro (&Vcharset_japanese_jisx0212); 1272 staticpro (&Vcharset_japanese_jisx0212);
1224 Vcharset_japanese_jisx0212 = 1273 Vcharset_japanese_jisx0212 =
1225 make_charset (LEADING_BYTE_JAPANESE_JISX0212, Qjapanese_jisx0212, 3, 1274 make_charset (LEADING_BYTE_JAPANESE_JISX0212, Qjapanese_jisx0212, 3,
1226 CHARSET_TYPE_94X94, 2, 0, 'D', 1275 CHARSET_TYPE_94X94, 2, 0, 'D',
1227 CHARSET_LEFT_TO_RIGHT, 1276 CHARSET_LEFT_TO_RIGHT,
1228 build_string ("JISX0212"), 1277 build_string ("JISX0212"),
1229 build_msg_string ("JISX0212 (Japanese)"), 1278 build_msg_string ("JISX0212 (Japanese)"),
1230 build_msg_string ("JISX0212 Japanese Supplement"), 1279 build_msg_string ("JISX0212 Japanese Supplement"),
1231 build_string ("jisx0212"), 0, 0); 1280 vector1(build_string("jisx0212.1990-0")), 0, 0);
1232 1281
1233 #define CHINESE_CNS_PLANE_RE(n) "cns11643[.-]\\(.*[.-]\\)?" n "$" 1282 #define CHINESE_CNS_PLANE(n) "cns11643.1992-" n
1234 staticpro (&Vcharset_chinese_cns11643_1); 1283 staticpro (&Vcharset_chinese_cns11643_1);
1235 Vcharset_chinese_cns11643_1 = 1284 Vcharset_chinese_cns11643_1 =
1236 make_charset (LEADING_BYTE_CHINESE_CNS11643_1, Qchinese_cns11643_1, 3, 1285 make_charset (LEADING_BYTE_CHINESE_CNS11643_1, Qchinese_cns11643_1, 3,
1237 CHARSET_TYPE_94X94, 2, 0, 'G', 1286 CHARSET_TYPE_94X94, 2, 0, 'G',
1238 CHARSET_LEFT_TO_RIGHT, 1287 CHARSET_LEFT_TO_RIGHT,
1239 build_string ("CNS11643-1"), 1288 build_string ("CNS11643-1"),
1240 build_msg_string ("CNS11643-1 (Chinese traditional)"), 1289 build_msg_string ("CNS11643-1 (Chinese traditional)"),
1241 build_msg_string 1290 build_msg_string
1242 ("CNS 11643 Plane 1 Chinese traditional"), 1291 ("CNS 11643 Plane 1 Chinese traditional"),
1243 build_string (CHINESE_CNS_PLANE_RE("1")), 0, 0); 1292 vector1(build_string (CHINESE_CNS_PLANE("1"))), 0, 0);
1244 staticpro (&Vcharset_chinese_cns11643_2); 1293 staticpro (&Vcharset_chinese_cns11643_2);
1245 Vcharset_chinese_cns11643_2 = 1294 Vcharset_chinese_cns11643_2 =
1246 make_charset (LEADING_BYTE_CHINESE_CNS11643_2, Qchinese_cns11643_2, 3, 1295 make_charset (LEADING_BYTE_CHINESE_CNS11643_2, Qchinese_cns11643_2, 3,
1247 CHARSET_TYPE_94X94, 2, 0, 'H', 1296 CHARSET_TYPE_94X94, 2, 0, 'H',
1248 CHARSET_LEFT_TO_RIGHT, 1297 CHARSET_LEFT_TO_RIGHT,
1249 build_string ("CNS11643-2"), 1298 build_string ("CNS11643-2"),
1250 build_msg_string ("CNS11643-2 (Chinese traditional)"), 1299 build_msg_string ("CNS11643-2 (Chinese traditional)"),
1251 build_msg_string 1300 build_msg_string
1252 ("CNS 11643 Plane 2 Chinese traditional"), 1301 ("CNS 11643 Plane 2 Chinese traditional"),
1253 build_string (CHINESE_CNS_PLANE_RE("2")), 0, 0); 1302 vector1(build_string (CHINESE_CNS_PLANE("2"))), 0, 0);
1254 staticpro (&Vcharset_chinese_big5_1); 1303 staticpro (&Vcharset_chinese_big5_1);
1255 Vcharset_chinese_big5_1 = 1304 Vcharset_chinese_big5_1 =
1256 make_charset (LEADING_BYTE_CHINESE_BIG5_1, Qchinese_big5_1, 3, 1305 make_charset (LEADING_BYTE_CHINESE_BIG5_1, Qchinese_big5_1, 3,
1257 CHARSET_TYPE_94X94, 2, 0, '0', 1306 CHARSET_TYPE_94X94, 2, 0, '0',
1258 CHARSET_LEFT_TO_RIGHT, 1307 CHARSET_LEFT_TO_RIGHT,
1259 build_string ("Big5"), 1308 build_string ("Big5"),
1260 build_msg_string ("Big5 (Level-1)"), 1309 build_msg_string ("Big5 (Level-1)"),
1261 build_msg_string 1310 build_msg_string
1262 ("Big5 Level-1 Chinese traditional"), 1311 ("Big5 Level-1 Chinese traditional"),
1263 build_string ("big5"), 0, 0); 1312 vector1(build_string ("big5.eten-0")), 0, 0);
1264 staticpro (&Vcharset_chinese_big5_2); 1313 staticpro (&Vcharset_chinese_big5_2);
1265 Vcharset_chinese_big5_2 = 1314 Vcharset_chinese_big5_2 =
1266 make_charset (LEADING_BYTE_CHINESE_BIG5_2, Qchinese_big5_2, 3, 1315 make_charset (LEADING_BYTE_CHINESE_BIG5_2, Qchinese_big5_2, 3,
1267 CHARSET_TYPE_94X94, 2, 0, '1', 1316 CHARSET_TYPE_94X94, 2, 0, '1',
1268 CHARSET_LEFT_TO_RIGHT, 1317 CHARSET_LEFT_TO_RIGHT,
1269 build_string ("Big5"), 1318 build_string ("Big5"),
1270 build_msg_string ("Big5 (Level-2)"), 1319 build_msg_string ("Big5 (Level-2)"),
1271 build_msg_string 1320 build_msg_string
1272 ("Big5 Level-2 Chinese traditional"), 1321 ("Big5 Level-2 Chinese traditional"),
1273 build_string ("big5"), 0, 0); 1322 vector1(build_string ("big5.eten-0")), 0, 0);
1274 1323
1275 1324
1276 #ifdef ENABLE_COMPOSITE_CHARS 1325 #ifdef ENABLE_COMPOSITE_CHARS
1277 /* #### For simplicity, we put composite chars into a 96x96 charset. 1326 /* #### For simplicity, we put composite chars into a 96x96 charset.
1278 This is going to lead to problems because you can run out of 1327 This is going to lead to problems because you can run out of
1283 CHARSET_TYPE_96X96, 2, 0, 0, 1332 CHARSET_TYPE_96X96, 2, 0, 0,
1284 CHARSET_LEFT_TO_RIGHT, 1333 CHARSET_LEFT_TO_RIGHT,
1285 build_string ("Composite"), 1334 build_string ("Composite"),
1286 build_msg_string ("Composite characters"), 1335 build_msg_string ("Composite characters"),
1287 build_msg_string ("Composite characters"), 1336 build_msg_string ("Composite characters"),
1288 build_string (""), 0, 0); 1337 vector1(build_string ("")), 0, 0);
1289 #else 1338 #else
1290 /* We create a hack so that we have a way of storing ESC 0 and ESC 1 1339 /* We create a hack so that we have a way of storing ESC 0 and ESC 1
1291 sequences as "characters", so that they will be output correctly. */ 1340 sequences as "characters", so that they will be output correctly. */
1292 staticpro (&Vcharset_composite); 1341 staticpro (&Vcharset_composite);
1293 Vcharset_composite = 1342 Vcharset_composite =
1295 CHARSET_TYPE_96, 1, 1, '|', 1344 CHARSET_TYPE_96, 1, 1, '|',
1296 CHARSET_LEFT_TO_RIGHT, 1345 CHARSET_LEFT_TO_RIGHT,
1297 build_string ("Composite hack"), 1346 build_string ("Composite hack"),
1298 build_msg_string ("Composite characters hack"), 1347 build_msg_string ("Composite characters hack"),
1299 build_msg_string ("Composite characters hack"), 1348 build_msg_string ("Composite characters hack"),
1300 build_string (""), 0, 0); 1349 vector1(build_string ("")), 0, 0);
1301 #endif /* ENABLE_COMPOSITE_CHARS */ 1350 #endif /* ENABLE_COMPOSITE_CHARS */
1302 } 1351 }