#?SuikaWiki/0.9
[12] [[GNUEmacs]] と [[XEmacs]] で内部コードがだいぶ異なります...

*Mule2 / GNU Emacs の内部コード

[16]
,%x00-7F             ,Type 1-1 ,ASCII
,%x80 ..             ,Type N   ,合成文字
,%x80 ..             ,Emacs 21 ,eight-bit-graphic
,%x81-8F C1          ,Type 1-2 ,1バイト集合
,%x90-99 C21 C22     ,Type 2-3 ,2バイト集合
,%x9A %xA0-DF C1     ,Type 1-3 ,1バイト集合 (1桁)
,%x9B %xE0-EF C1     ,Type 1-3 ,1バイト集合 (2桁)
,%x9C %xF0-F4 C21 C22,Type 2-4 ,2バイト集合 (1桁)
,%x9D %xF5-FE C21 C22,Type 2-4 ,2バイト集合 (2桁)
,%x9E %xFF? ?        ,Type 3-4 ,3バイト集合 (CNS 11643 = 未実装)
,%x9E ..             ,Emacs 21 ,eight-bit-control
,%x9F                ,         ,(lc-invalid)

[13] GNU Emacs 22? からは UTF-8 base になるみたいです。
([[マーくん]]が、まだ UTF-8 base になってないのは Emacs
だけだよ, ママ〜ってうるさいよねぇ。)

*XEmacs の内部コード

[15] XEmacs 21 の src/mule-charset.h の注釈より。

,%x00-7F             ,ASCII
,%x80 ..             ,Composite
,%x81-8D C1          ,Dimension-1 Official
,%x8E C1             ,free (ASCII)
,%x8F %xA0-BF        ,Control-1
,%x90-99 C21 C22     ,Dimension-2 Official
,%x9A-9D             ,free
,%x9E %xA0-EF C1     ,Dimension-1 Private
,%x9F %xF0-FF C21 C22,Dimension-2 Private

-[2] C1 = C
-[3] C21 = C
-[4] C22 = C

[14] XEmacs [[UTF-2000]] では内部コードが [[UTF-8]]
的だったりします。

[19] [[PostgreSQL]] も対応しています。

[18] [CITE[PostgreSQL Source Code: src/include/mb/pg_wchar.h Source File]], [TIME[2022-04-30T00:13:22.000Z]], [TIME[2022-04-30T05:32:50.013Z]] <https://doxygen.postgresql.org/pg__wchar_8h_source.html>

*合成文字

[SEE[ [[文字合成]], [[私用制御機能]] ]]

**Mule 2 での合成文字
-[6] Type-N = LCCMP 1*(LCN 1*C)
-[8] LCCMP = %x80
-[9] LCN = %xA1-BF ;; LC + 0x20
-[7] C = %xA0-FF
[[#comment]]
*Leading byte

[5] 最初のオクテット (または %x9A-9F の次のオクテット) は
leading byte と呼びます。

,LC   ,==,GNU Emacs 20/21         ,XEmacs 21
,0x80,128,Composite               ,==
,0x81,129,ISO/IEC 8859-1          ,==
,0x82,130,ISO/IEC 8859-2          ,==
,0x83,131,ISO/IEC 8859-3          ,==
,0x84,132,ISO/IEC 8859-4          ,==
,0x85,133,TIS 620-2533            ,==
,0x86,134,ISO/IEC 8859-7          ,==
,0x87,135,ISO/IEC 8859-6          ,==
,0x88,136,ISO/IEC 8859-8          ,==
,0x89,137,JIS X 0201-1976 Katakana,==
,0x8A,138,JIS X 0201-1976 Roman   ,==
,0x8B,139,                        ,ISO/IEC 8859-5
,0x8C,140,ISO/IEC 8859-5          ,ISO/IEC 8859-9
,0x8D,141,ISO/IEC 8859-9          ,unused
,0x8E,142,                        ,(ASCII)
,0x8F,143,                        ,Control-1
,0x90,144,JIS X 0208-1978         ,==
,0x91,145,GB 2312-80              ,==
,0x92,146,JIS X 0208-1983         ,==
,0x93,147,KS C 5601-1987          ,==
,0x94,148,JIS X 0212-1990         ,==
,0x95,149,CNS 11643 plane 1       ,==
,0x96,150,CNS 11643 plane 2       ,==
,0x97,151,CNS 11643 plane 14 (Mule2),
,0x97,151,JIS X 0213 plane 1      ,Big5 Level 1
,0x98,152,big5-1                  ,Big5 Level 2
,0x99,153,big5-2                  ,unused
,0x9A,154,1-byte private (1桁)    ,unused
,0x9B,155,1-byte private (2桁)    ,unused
,0x9C,156,2-byte private (1桁)    ,unused
,0x9D,157,2-byte private (2桁)    ,unused
,0x9E,158,(CNS 11643)             ,1byte private           
,0x9F,159,                        ,2byte private           
,0xA0,160,chinese-sisheng
,0xA1,161,ipa
,0xA2,162,viscii-lower
,0xA3,163,viscii-upper
,0xA4,164,arabic-digit
,0xA5,165,arabic-1-column
,0xA6,166,ascii-right-to-left
,0xA7,167,lao
,0xA8,168,
,0xA9,169,
,0xAA,170,
,0xAB,171,
,0xE0,224,arabic-2-column
,0xE1,225,IS 13194
,0xF0,240,indian-1-column
,0xF1,241,tibetan-1-column
,0xF2,242,mule-unicode-2500-33ff
,0xF3,243,mule-unicode-e000-ffff
,0xF4,244,mule-unicode-0100-24ff
,0xF5,245,ethiopic
,0xF6,246,CNS 11643 plane 3
,0xF7,247,CNS 11643 plane 4
,0xF8,248,CNS 11643 plane 5
,0xF9,249,CNS 11643 plane 6
,0xFA,250,CNS 11643 plane 7
,0xFB,251,indian-2-column
,0xFC,252,tibetan
,0xFD,253,
,0xFE,254,JIS X 0213 plane 2
,0xFF,255,(CNS 11643 (Mule2))

*文字表現

[11] 内部表現にはまた別の19ビットのものを使います。

* 関連

[SEE[ [[Emacsにおける文字コード]] ]]

*メモ
-[10] 詳しくは src/mule-charset.h に説明があります。
- [1] 今から見ればちょっと設計の悪い符号ですね。設計後に何度か未使用の部分を修正しましたし。まあ仕方無いといえば仕方無い。
- [17] 昔からたまに、[[メイル]]や[[ニュース]]でうっかり Mule 内部符号で送ってしまう人っているんですよねぇ。 (そんなので遅れるようになってる [[MUA]] もどうかと思うけど。)


[20] [CITE@en[src/coding.c · master · emacs / emacs · GitLab]], [TIME[2022-04-30T05:46:05.000Z]] <https://emba.gnu.org/emacs/emacs/-/blob/master/src/coding.c#L1753>

[21] [CITE[Symposium on Multilingual Information Processing at ETL (25-26/3/96)]], [TIME[2023-08-05T13:41:39.000Z]], [TIME[2004-04-14T06:03:39.936Z]] <https://web.archive.org/web/20040414060036/http://www.m17n.org/mule/JAPANESE/gniibe.html>

> (7) Werner Lemberg (Austria)
>    * CJK TeX (韓国語, 日本語, 中国語が使える LaTeX のマクロパッケージ)に ついてその実現についての発表。
>    * JTeX, JLaTeX などと異なり, 普通の TeX から使うマクロパッケージとして の実現である。
>    * Mule の encoding を用いている。
>    %コメント% どうも Mule の leading character を TeX の active character に map することでフォントの切替を行なっているらしい。 

