diff src/mule-charset.h @ 74:54cc21c15cbb r20-0b32

Import from CVS: tag r20-0b32
author cvs
date Mon, 13 Aug 2007 09:04:33 +0200
parents 131b0175ea99
children c7528f8e288d
line wrap: on
line diff
--- a/src/mule-charset.h	Mon Aug 13 09:03:47 2007 +0200
+++ b/src/mule-charset.h	Mon Aug 13 09:04:33 2007 +0200
@@ -137,32 +137,31 @@
 
    This encompasses the character sets:
    - Printing-ASCII,
-   - Japanese-JISX0201-Kana (half-width katakana, the right half of JISX0201).
+   - Katakana-JISX0201 (half-width katakana, the right half of JISX0201).
    - Japanese-JISX0208
    - Japanese-JISX0212
    It uses 8-bit bytes.
 
-   Note that Printing-ASCII and Japanese-JISX0201-Kana are 94-character
+   Note that Printing-ASCII and Katakana-JISX0201 are 94-character
    charsets, while Japanese-JISX0208 is a 94x94-character charset.
 
    The encoding is as follows:
 
-   Character set		Representation  (PC == position-code)
-   -------------		--------------
-   Printing-ASCII		PC-1
-   Japanese-JISX0208		PC-1 + 0x80 / PC-2 + 0x80
-   Japanese-JISX0201-Kana	0x8E / PC-1 + 0x80
+   Character set	Representation  (PC == position-code)
+   -------------	--------------
+   Printing-ASCII	PC1
+   Japanese-JISX0208	PC1 + 0x80 | PC2 + 0x80
+   Katakana-JISX0201	0x8E       | PC1 + 0x80
 
 
    B. JIS7
 
    This encompasses the character sets:
    - Printing-ASCII
-   - Japanese-JISX0201-Roman (the left half of JISX0201; this
-     character set is very similar to Printing-ASCII and is a
-     94-character charset)
+   - Latin-JISX0201 (the left half of JISX0201; this character set is
+     very similar to Printing-ASCII and is a 94-character charset)
    - Japanese-JISX0208
-   - Japanese-JISX0201-Kana.
+   - Katakana-JISX0201
    It uses 7-bit bytes.
 
    Unlike Japanese EUC, this is a "modal" encoding, which
@@ -173,18 +172,18 @@
 
    The encoding is as follows:
 
-   Character set		Representation
-   -------------		--------------
-   Printing-ASCII		PC-1
-   Japanese-JISX0201-Roman	PC-1
-   Japanese-JISX0201-Kana	PC-1
-   Japanese-JISX0208		PC-1 / PC-2
+   Character set	Representation
+   -------------	--------------
+   Printing-ASCII	PC1
+   Latin-JISX0201	PC1
+   Katakana-JISX0201	PC1
+   Japanese-JISX0208	PC1 | PC2
 
    Escape sequence	ASCII equivalent  Meaning
    ---------------	----------------  -------
    0x1B 0x28 0x42	ESC ( B		  invoke Printing-ASCII
-   0x1B 0x28 0x4A	ESC ( J		  invoke Japanese-JISX0201-Roman
-   0x1B 0x28 0x49	ESC ( I		  invoke Japanese-JISX0201-Kana
+   0x1B 0x28 0x4A	ESC ( J		  invoke Latin-JISX0201
+   0x1B 0x28 0x49	ESC ( I		  invoke Katakana-JISX0201
    0x1B 0x24 0x42	ESC $ B		  invoke Japanese-JISX0208
 
    Initially, Printing-ASCII is invoked.
@@ -333,26 +332,26 @@
 
 /** The following are for 1-byte characters in an official charset. **/
 
-#define LEADING_BYTE_LATIN_1		0x81 /* Right half of ISO 8859-1 */
-#define LEADING_BYTE_LATIN_2		0x82 /* Right half of ISO 8859-2 */
-#define LEADING_BYTE_LATIN_3		0x83 /* Right half of ISO 8859-3 */
-#define LEADING_BYTE_LATIN_4		0x84 /* Right half of ISO 8859-4 */
-#define LEADING_BYTE_THAI		0x85 /* TIS620-2533 */
-#define LEADING_BYTE_GREEK		0x86 /* Right half of ISO 8859-7 */
-#define LEADING_BYTE_ARABIC		0x87 /* Right half of ISO 8859-6 */
-#define LEADING_BYTE_HEBREW		0x88 /* Right half of ISO 8859-8 */
-#define LEADING_BYTE_JAPANESE_JISX0201_KANA  0x89 /* Right half of JIS X0201-1976 */
-#define LEADING_BYTE_JAPANESE_JISX0201_ROMAN 0x8A /* Left  half of JIS X0201-1976 */
-#define LEADING_BYTE_CYRILLIC		0x8C /* Right half of ISO 8859-5 */
-#define LEADING_BYTE_LATIN_5		0x8D /* Right half of ISO 8859-9 */
+#define LEADING_BYTE_LATIN_ISO8859_1	0x81 /* Right half of ISO 8859-1 */
+#define LEADING_BYTE_LATIN_ISO8859_2	0x82 /* Right half of ISO 8859-2 */
+#define LEADING_BYTE_LATIN_ISO8859_3	0x83 /* Right half of ISO 8859-3 */
+#define LEADING_BYTE_LATIN_ISO8859_4	0x84 /* Right half of ISO 8859-4 */
+#define LEADING_BYTE_THAI_TIS620	0x85 /* TIS620-2533 */
+#define LEADING_BYTE_GREEK_ISO8859_7	0x86 /* Right half of ISO 8859-7 */
+#define LEADING_BYTE_ARABIC_ISO8859_6	0x87 /* Right half of ISO 8859-6 */
+#define LEADING_BYTE_HEBREW_ISO8859_8	0x88 /* Right half of ISO 8859-8 */
+#define LEADING_BYTE_KATAKANA_JISX0201	0x89 /* Right half of JIS X0201-1976 */
+#define LEADING_BYTE_LATIN_JISX0201	0x8A /* Left  half of JIS X0201-1976 */
+#define LEADING_BYTE_CYRILLIC_ISO8859_5	0x8C /* Right half of ISO 8859-5 */
+#define LEADING_BYTE_LATIN_ISO8859_9	0x8D /* Right half of ISO 8859-9 */
 
-#define MIN_LEADING_BYTE_OFFICIAL_1	LEADING_BYTE_LATIN_1
-#define MAX_LEADING_BYTE_OFFICIAL_1	LEADING_BYTE_LATIN_5
+#define MIN_LEADING_BYTE_OFFICIAL_1	LEADING_BYTE_LATIN_ISO8859_1
+#define MAX_LEADING_BYTE_OFFICIAL_1	LEADING_BYTE_LATIN_ISO8859_9
 
 /** The following are for 2-byte characters in an official charset. **/
 
 #define LEADING_BYTE_JAPANESE_JISX0208_1978 0x90/* Japanese JIS X0208-1978 */
-#define LEADING_BYTE_CHINESE_GB		0x91	/* Chinese Hanzi GB2312-1980 */
+#define LEADING_BYTE_CHINESE_GB2312	0x91	/* Chinese Hanzi GB2312-1980 */
 #define LEADING_BYTE_JAPANESE_JISX0208	0x92	/* Japanese JIS X0208-1983 */
 #define LEADING_BYTE_KOREAN_KSC5601	0x93	/* Hangul KS C5601-1987 */
 #define LEADING_BYTE_JAPANESE_JISX0212	0x94	/* Japanese JIS X0212-1990 */
@@ -403,11 +402,10 @@
 /* Given a private leading byte, return the leading byte prefix stored
    in a string */
 
-#define PRIVATE_LEADING_BYTE_PREFIX(lb)				\
-  ((lb) < MIN_LEADING_BYTE_PRIVATE_2 ? PRE_LEADING_BYTE_PRIVATE_1	\
-   : PRE_LEADING_BYTE_PRIVATE_2)
-
-
+#define PRIVATE_LEADING_BYTE_PREFIX(lb)	\
+  ((lb) < MIN_LEADING_BYTE_PRIVATE_2 ?	\
+   PRE_LEADING_BYTE_PRIVATE_1 :		\
+   PRE_LEADING_BYTE_PRIVATE_2)
 
 
 /************************************************************************/
@@ -486,13 +484,13 @@
 #define CHECK_CHARSET(x) CHECK_RECORD (x, charset)
 #define CONCHECK_CHARSET(x) CONCHECK_RECORD (x, charset)
 
-#define CHARSET_TYPE_94  0	/* This charset includes 94    characters. */
-#define CHARSET_TYPE_96  1	/* This charset includes 96    characters. */
+#define CHARSET_TYPE_94    0	/* This charset includes 94    characters. */
+#define CHARSET_TYPE_96    1	/* This charset includes 96    characters. */
 #define CHARSET_TYPE_94X94 2	/* This charset includes 94x94 characters. */
 #define CHARSET_TYPE_96X96 3	/* This charset includes 96x96 characters. */
 
-#define CHARSET_LEFT_TO_RIGHT		0
-#define CHARSET_RIGHT_TO_LEFT		1
+#define CHARSET_LEFT_TO_RIGHT	0
+#define CHARSET_RIGHT_TO_LEFT	1
 
 #define CHARSET_NAME(cs)	 ((cs)->name)
 #define CHARSET_LEADING_BYTE(cs) ((cs)->leading_byte)
@@ -507,24 +505,21 @@
 #define CHARSET_CCL_PROGRAM(cs)  ((cs)->ccl_program)
 #define CHARSET_REVERSE_DIRECTION_CHARSET(cs) ((cs)->reverse_direction_charset)
 
-INLINE int CHARSET_DIMENSION (struct Lisp_Charset *cs);
 INLINE int
 CHARSET_DIMENSION (struct Lisp_Charset *cs)
 {
-  return (CHARSET_TYPE (cs) == CHARSET_TYPE_94 ||
-          CHARSET_TYPE (cs) == CHARSET_TYPE_96) ? 1 : 2;
+  /* Optimized using inside knowledge of CHARSET_TYPE values */
+  return (CHARSET_TYPE (cs) <= CHARSET_TYPE_96) ? 1 : 2;
 }
 
-INLINE int CHARSET_CHARS (struct Lisp_Charset *cs);
 INLINE int
 CHARSET_CHARS (struct Lisp_Charset *cs)
 {
-  return (CHARSET_TYPE (cs) == CHARSET_TYPE_94 ||
-          CHARSET_TYPE (cs) == CHARSET_TYPE_94X94) ? 94 : 96;
+  /* Optimized using inside knowledge of CHARSET_TYPE values */
+  return (CHARSET_TYPE (cs) & 0x1) ? 96 : 94;
 }
 
-#define CHARSET_PRIVATE_P(cs) \
-  LEADING_BYTE_PRIVATE_P (CHARSET_LEADING_BYTE (cs))
+#define CHARSET_PRIVATE_P(cs) LEADING_BYTE_PRIVATE_P (CHARSET_LEADING_BYTE (cs))
 
 #define XCHARSET_NAME(cs)	  CHARSET_NAME         (XCHARSET (cs))
 #define XCHARSET_REP_BYTES(cs)	  CHARSET_REP_BYTES    (XCHARSET (cs))
@@ -598,23 +593,23 @@
 
 extern Lisp_Object Vcharset_ascii;
 extern Lisp_Object Vcharset_control_1;
-extern Lisp_Object Vcharset_latin_1;
-extern Lisp_Object Vcharset_latin_2;
-extern Lisp_Object Vcharset_latin_3;
-extern Lisp_Object Vcharset_latin_4;
-extern Lisp_Object Vcharset_latin_5;
-extern Lisp_Object Vcharset_greek;
-extern Lisp_Object Vcharset_thai;
-extern Lisp_Object Vcharset_arabic;
-extern Lisp_Object Vcharset_hebrew;
-extern Lisp_Object Vcharset_cyrillic;
-extern Lisp_Object Vcharset_japanese_jisx0201_kana;
-extern Lisp_Object Vcharset_japanese_jisx0201_roman;
+extern Lisp_Object Vcharset_latin_iso8859_1;
+extern Lisp_Object Vcharset_latin_iso8859_2;
+extern Lisp_Object Vcharset_latin_iso8859_3;
+extern Lisp_Object Vcharset_latin_iso8859_4;
+extern Lisp_Object Vcharset_cyrillic_iso8859_5;
+extern Lisp_Object Vcharset_arabic_iso8859_6;
+extern Lisp_Object Vcharset_greek_iso8859_7;
+extern Lisp_Object Vcharset_hebrew_iso8859_8;
+extern Lisp_Object Vcharset_latin_iso8859_9;
+extern Lisp_Object Vcharset_thai_tis620;
+extern Lisp_Object Vcharset_katakana_jisx0201;
+extern Lisp_Object Vcharset_latin_jisx0201;
 extern Lisp_Object Vcharset_japanese_jisx0208_1978;
 extern Lisp_Object Vcharset_japanese_jisx0208;
 extern Lisp_Object Vcharset_japanese_jisx0212;
 extern Lisp_Object Vcharset_korean_ksc5601;
-extern Lisp_Object Vcharset_chinese_gb;
+extern Lisp_Object Vcharset_chinese_gb2312;
 extern Lisp_Object Vcharset_chinese_big5_1;
 extern Lisp_Object Vcharset_chinese_big5_2;
 extern Lisp_Object Vcharset_chinese_cns11643_1;