Mule内部コード

Mule内部コード

[12] GNUEmacsXEmacs で内部コードがだいぶ異なります...

Mule2 / GNU Emacs の内部コード

[16]

%x00-7FType 1-1ASCII
%x80 ..Type N合成文字
%x80 ..Emacs 21eight-bit-graphic
%x81-8F C1Type 1-21バイト集合
%x90-99 C21 C22Type 2-32バイト集合
%x9A %xA0-DF C1Type 1-31バイト集合 (1桁)
%x9B %xE0-EF C1Type 1-31バイト集合 (2桁)
%x9C %xF0-F4 C21 C22Type 2-42バイト集合 (1桁)
%x9D %xF5-FE C21 C22Type 2-42バイト集合 (2桁)
%x9E %xFF? ?Type 3-43バイト集合 (CNS 11643 = 未実装)
%x9E ..Emacs 21eight-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-7FASCII
%x80 ..Composite
%x81-8D C1Dimension-1 Official
%x8E C1free (ASCII)
%x8F %xA0-BFControl-1
%x90-99 C21 C22Dimension-2 Official
%x9A-9Dfree
%x9E %xA0-EF C1Dimension-1 Private
%x9F %xF0-FF C21 C22Dimension-2 Private

[14] XEmacs UTF-2000 では内部コードが UTF-8 的だったりします。

[19] PostgreSQL も対応しています。

[18] PostgreSQL Source Code: src/include/mb/pg_wchar.h Source File, , https://doxygen.postgresql.org/pg__wchar_8h_source.html

合成文字

Mule 2 での合成文字

  • [6] Type-N = LCCMP 1*(LCN 1*C)
  • [8] LCCMP = %x80
  • [9] LCN = %xA1-BF ;; LC + 0x20
  • [7] C = %xA0-FF

Leading byte

[5] 最初のオクテット (または %x9A-9F の次のオクテット) は leading byte と呼びます。

LCGNU Emacs 20/21XEmacs 21
0x80128Composite
0x81129ISO/IEC 8859-1
0x82130ISO/IEC 8859-2
0x83131ISO/IEC 8859-3
0x84132ISO/IEC 8859-4
0x85133TIS 620-2533
0x86134ISO/IEC 8859-7
0x87135ISO/IEC 8859-6
0x88136ISO/IEC 8859-8
0x89137JIS X 0201-1976 Katakana
0x8A138JIS X 0201-1976 Roman
0x8B139ISO/IEC 8859-5
0x8C140ISO/IEC 8859-5ISO/IEC 8859-9
0x8D141ISO/IEC 8859-9unused
0x8E142(ASCII)
0x8F143Control-1
0x90144JIS X 0208-1978
0x91145GB 2312-80
0x92146JIS X 0208-1983
0x93147KS C 5601-1987
0x94148JIS X 0212-1990
0x95149CNS 11643 plane 1
0x96150CNS 11643 plane 2
0x97151CNS 11643 plane 14 (Mule2)
0x97151JIS X 0213 plane 1Big5 Level 1
0x98152big5-1Big5 Level 2
0x99153big5-2unused
0x9A1541-byte private (1桁)unused
0x9B1551-byte private (2桁)unused
0x9C1562-byte private (1桁)unused
0x9D1572-byte private (2桁)unused
0x9E158(CNS 11643)1byte private
0x9F1592byte private
0xA0160chinese-sisheng
0xA1161ipa
0xA2162viscii-lower
0xA3163viscii-upper
0xA4164arabic-digit
0xA5165arabic-1-column
0xA6166ascii-right-to-left
0xA7167lao
0xA8168
0xA9169
0xAA170
0xAB171
0xE0224arabic-2-column
0xE1225IS 13194
0xF0240indian-1-column
0xF1241tibetan-1-column
0xF2242mule-unicode-2500-33ff
0xF3243mule-unicode-e000-ffff
0xF4244mule-unicode-0100-24ff
0xF5245ethiopic
0xF6246CNS 11643 plane 3
0xF7247CNS 11643 plane 4
0xF8248CNS 11643 plane 5
0xF9249CNS 11643 plane 6
0xFA250CNS 11643 plane 7
0xFB251indian-2-column
0xFC252tibetan
0xFD253
0xFE254JIS X 0213 plane 2
0xFF255(CNS 11643 (Mule2))

文字表現

[11] 内部表現にはまた別の19ビットのものを使います。

メモ

[20] src/coding.c · master · emacs / emacs · GitLab, https://emba.gnu.org/emacs/emacs/-/blob/master/src/coding.c#L1753

[21] Symposium on Multilingual Information Processing at ETL (25-26/3/96), , 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 することでフォントの切替を行なっているらしい。