New files.
[www/chise.git] / papers / mitou-2001-report / main / node3.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2
3 <!--Converted with LaTeX2HTML 2K.1beta (1.48)
4 original version by:  Nikos Drakos, CBLU, University of Leeds
5 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 * with significant contributions from:
7   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 <HTML>
9 <HEAD>
10 <TITLE>ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸½ñÊÔ½¸·Ï</TITLE>
11 <META NAME="description" CONTENT="ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸½ñÊÔ½¸·Ï">
12 <META NAME="keywords" CONTENT="main">
13 <META NAME="resource-type" CONTENT="document">
14 <META NAME="distribution" CONTENT="global">
15
16 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp">
17 <META NAME="Generator" CONTENT="LaTeX2HTML v2K.1beta">
18 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
20 <LINK REL="STYLESHEET" HREF="main.css">
21
22 <LINK REL="next" HREF="node4.html">
23 <LINK REL="previous" HREF="node2.html">
24 <LINK REL="up" HREF="main.html">
25 <LINK REL="next" HREF="node4.html">
26 </HEAD>
27
28 <BODY >
29 <!--Navigation Panel-->
30 <A NAME="tex2html70"
31   HREF="node4.html">
32 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
33  SRC="/usr/share/latex2html/icons/next.png"></A> 
34 <A NAME="tex2html68"
35   HREF="main.html">
36 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
37  SRC="/usr/share/latex2html/icons/up.png"></A> 
38 <A NAME="tex2html62"
39   HREF="node2.html">
40 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
41  SRC="/usr/share/latex2html/icons/prev.png"></A>   
42 <BR>
43 <B> Next:</B> <A NAME="tex2html71"
44   HREF="node4.html">ʸ»ú°À­¥Ç¡¼¥¿¥Ù¡¼¥¹</A>
45 <B> Up:</B> <A NAME="tex2html69"
46   HREF="main.html">2001ǯÅṲ̀Ƨ¥½¥Õ¥È¥¦¥§¥¢ÁϤ»ö¶È Ê¸»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯ Ê¸»ú¥ª¥Ö¥¸¥§¥¯¥Èµ»½Ñ¤Î¹½ÃÛ ¡Ê·ÀÌóÈÖ¹æ</A>
47 <B> Previous:</B> <A NAME="tex2html63"
48   HREF="node2.html">ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸»úɽ¸½¥â¥Ç¥ë</A>
49 <BR>
50 <BR>
51 <!--End of Navigation Panel-->
52 <!--Table of Child-Links-->
53 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
54
55 <UL>
56 <LI><A NAME="tex2html72"
57   HREF="#SECTION00310000000000000000">XEmacs UTF-2000</A>
58 <LI><A NAME="tex2html73"
59   HREF="#SECTION00320000000000000000">ʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úɽ¸½</A>
60 <LI><A NAME="tex2html74"
61   HREF="#SECTION00330000000000000000">Internal Representation of Character Object</A>
62 <LI><A NAME="tex2html75"
63   HREF="#SECTION00340000000000000000">Áȹþ¤ßʸ»ú</A>
64 <LI><A NAME="tex2html76"
65   HREF="#SECTION00350000000000000000">coded-charset</A>
66 </UL>
67 <!--End of Table of Child-Links-->
68 <HR>
69
70 <H1><A NAME="SECTION00300000000000000000">
71 ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸½ñÊÔ½¸·Ï</A>
72 </H1>
73
74 <P>
75 ²æ¡¹¤Ï <A HREF="node2.html#sec:utf-2000-model">2.2</A> Àá¤Ç½Ò¤Ù¤¿¡ØUTF-2000 Êý¼°¡Ù¤Î¼Â¾Ú
76 ¤òÌÜŪ¤Ë <B>XEmacs UTF-2000</B> ¤ò³«È¯¤·¤¿¡£
77 ¤³¤Î¾Ï¤Ç¤Ï¡¢¼ç¤Ë¡¢Ê¸»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸½ñÊÔ½¸·Ï (text editor)
78 ¤È¤·¤Æ¤Î´ÑÅÀ¤«¤é <B>XEmacs UTF-2000</B> ¤Ë¤Ä¤¤¤Æ³µÀ⤹¤ë¡£
79
80 <P>
81
82 <H1><A NAME="SECTION00310000000000000000">
83 XEmacs UTF-2000</A>
84 </H1>
85
86 <P>
87 XEmacs-UTF-2000¡Ê¿Þ <A HREF="node3.html#FIG:XEmacs">3.1</A>) ¤Ï <B>XEmacs</B> [<A
88  HREF="node7.html#XEmacs">6</A>] 
89 ¤È¸Æ¤Ð¤ì¤ëÂÐÏ÷¿Åý¹ç´Ä¶­¤ò´ð¤Ë¤·¤Æ¤¤¤ë¡£XEmacs ¤Ï <B>GNU Emacs</B>
90 [<A
91  HREF="node7.html#GNU-Emacs">4</A>] ¤È¸Æ¤Ð¤ì¤ë³ÈÄ¥²Äǽ¤Ê¥¨¥Ç¥£¥¿¤òÃæ¿´¤È¤·¤¿ÂÐÏ÷¿Åý¹ç´Ä
92 ¶­¤òÀ°Íý¡¦³ÈÄ¥¤·¡¢³¨¤Ê¤É¤â°·¤¨¤ë¤è¤¦¤Ë¤·¤¿¤â¤Î¤Ç¤¢¤ë<A NAME="tex2html5"
93   HREF="footnode.html#foot187"><SUP><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]"
94  SRC="/usr/share/latex2html/icons/footnote.png"></SUP></A>¡£°ìÊý¡¢<B>Mule</B>
95 (MULtilingual enhancement of GNU Emacsen) [<A
96  HREF="node7.html#Mule">3</A>] ¤ÏÅŻҵ»½ÑÁí¹ç¸¦
97 µæ½ê¤ÎȾÅÄ·õ°ì»á¤¬Ãæ¿´¤È¤Ê¤Ã¤Æ³«È¯¤·¤Æ¤¤¤ë GNU Emacs ¤Î¿¸À¸ì³ÈÄ¥¤Ç¡¢
98 ¸½ºß¤Ï GNU Emacs ¤ËÅý¹ç¤µ¤ì¤Æ¤¤¤ë¡£¤³¤Î Mule µ¡Ç½¤ò  XEmacs ¤ËÅý¹ç¤·¤¿ 
99 XEmacs-Mule  ¤Î³«È¯¤â¿Ê¤á¤é¤ì¤Æ¤ª¤ê¡¢XEmacs ¤Î°ìÉô¤È¤·¤ÆÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¡£
100 XEmacs UTF-2000 ¤Ï¤³¤Î XEmacs-Mule ¤ò´ð¤ËÂçÉý¤Ë²þÊѤ·¤¿¤â¤Î¤Ç¤¢¤ë¡£
101
102 <P>
103
104 <P></P>
105 <DIV ALIGN="CENTER"><A NAME="FIG:XEmacs"></A><A NAME="193"></A>
106 <TABLE>
107 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 3.1:</STRONG>
108 XEmacs UTF-2000</CAPTION>
109 <TR><TD><!-- MATH
110  $\scalebox{0.5}{\includegraphics{xe-u2k-cd.eps}}$
111  -->
112 <IMG
113  WIDTH="690" HEIGHT="796" ALIGN="BOTTOM" BORDER="0"
114  SRC="img2.png"
115  ALT="\scalebox{0.5}{\includegraphics{xe-u2k-cd.eps}}"></TD></TR>
116 </TABLE>
117 </DIV><P></P>
118
119 <P>
120 GNU Emacs ¤ª¤è¤Ó XEmacs ¤Ï Emacs Lisp ¸À¸ì¤ò»È¤Ã¤Æµ¡Ç½¤ò³ÈÄ¥¤¹¤ë¤³¤È¤¬
121 ¤Ç¤­¡¢¼ÂºÝ¤Ë Emacs Lisp ¤Çµ­½Ò¤µ¤ì¤¿¤µ¤Þ¤¶¤Þ¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ºîÀ®¤µ
122 ¤ìÍøÍѤµ¤ì¤Æ¤¤¤ë¡£Î㤨¤Ð¡¢GNU Emacs/XEmacs ¤ÎÃæ¤ÇÅŻҥ᡼¥ë¤ä¥Í¥Ã¥È¥Ë¥å¡¼
123 ¥¹¤òÆɤ߽ñ¤­¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤· WWW ÊǤò¸«¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤·¤«¤·¡¢¤³¤ì
124 ¤é¤Ï¸µ¡¹ Latin-1 (ISO-8859-1) ¤Ê¤É¤Î 1 byte ¤ÎÉä¹æ²½Ê¸»ú½¸¹ç¤Ç¤·¤«ÍøÍÑ
125 ²Äǽ¤Ç¤Ï¤Ê¤«¤Ã¤¿¡£
126
127 <P>
128 ¤³¤ì¤ËÂФ·¡¢Mule ¤Ï GNU Emacs/XEmacs ¤ÎÍøÊØÀ­¡¦³ÈÄ¥²ÄǽÀ­¤ò¤½¤Î¤Þ¤Þ¤Ë¡¢
129 ÍøÍѤǤ­¤ëÉä¹æ²½Ê¸»ú½¸¹ç¤òÂçÉý¤Ë³ÈÄ¥¤·¤¿¤â¤Î¤Ç¤¢¤ê¡¢¤µ¤Þ¤¶¤Þ¤Êʸ»ú¤òɽ
130 ¼¨¤¹¤ëµ¡Ç½¤È³Æ¼ï¸À¸ìÍѤÎÆþÎϵ¡Ç½¤ò¤Ï¤¸¤á¤È¤¹¤ë¿¸À¸ì²½µ¡Ç½¤òÄ󶡤¹¤ë¡£
131 Mule µ¡Ç½¤ò»ý¤Ã¤¿ GNU Emacs/XEmacs ¤Ç¤Ï GNU Emacs/XEmacs ¤Îµ¡Ç½¤¬¤µ¤Þ
132 ¤¶¤Þ¤Êʸ»ú¡¦¸À¸ì¤ÇÍøÍѲÄǽ¤È¤Ê¤ë¡£<A NAME="tex2html7"
133   HREF="footnode.html#foot196"><SUP><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]"
134  SRC="/usr/share/latex2html/icons/footnote.png"></SUP></A>
135 <P>
136 Mule ¤Ç¤Ïʸ»ú¤ÏÉä¹æ²½Ê¸»ú½¸¹ç¤Î¼ïÎà¤òɽ¤¹ <B>charset-id</B>
137 ¤ÈÉä¹æ°ÌÃ֤ΠÁȤÇɽ¸½¤µ¤ì¤ë¡£charset-id ¤ÏºÇÂç 128
138 ¸Ä¤¬Æ±»þ¤ËÍøÍѲÄǽ¤Ç¤¢¤ë¡£Ã¢¤·¡¢ ÍøÍѲÄǽ¤ÊÉä¹æ²½Ê¸»ú½¸¹ç¤Ï ISO 2022
139 [<A
140  HREF="node7.html#ISO-2022">1</A>] ¤Î 94 Ê¸»ú½¸¹ç¡¢96 Ê¸»ú½¸¹ç¡¢94¡ß94 Ê¸»ú½¸¹ç¡¢96¡ß96
141 ʸ»ú½¸¹ç¤Ë¸Â¤é¤ì¤ë¡£Big5 ¤Î¤è¤¦¤Ê ISO 2022
142 ¤Î¿Þ·Áʸ»ú½¸¹ç¤Î¹½Â¤¤ËŬ¹ç¤·¤Ê¤¤¤â¤Î¤Ï ISO 2022 ¤Î¹½Â¤¤Ë¹ç¤¦
143 ¤è¤¦¤ËÊÑ´¹¤·¤Æ°·¤¦É¬Íפ¬¤¢¤ë¡£¤Þ¤¿¡¢Ê¸»úɽ¸½¶õ´Ö¤Ï 19 bit ¤Ç¤¢¤ê¡¢´û¤Ë
144 ÍøÍѲÄǽ¤Ê¶õ´Ö¤¬¸Ï³é¤·¤Æ¤­¤Æ¤¤¤ë¡£¤µ¤é¤Ë¡¢Mule ¤Ç¤Ïʸ»ú¤Ï charset-id
145 ¤ÈÉä¹æ°ÌÃÖ¤ÎÁȤÇɽ¸½¤µ¤ì¤ë¤Î¤Ç¡¢Éä¹æ²½Ê¸»ú½¸¹ç¤¬°Û¤Ê¤ì¤ÐËÜÍèƱ¤¸Ê¸»ú¤Ç
146 ¤¢¤Ã¤Æ¤â°Û¤Ê¤ëʸ»ú¤È¤·¤Æ°·¤ï¤ì¤Æ¤·¤Þ¤¦¤È¤¤¤¦ÌäÂê¤â¤¢¤ë¡£
147
148 <P>
149 XEmacs UTF-2000 ¤Ï GNU Emacs, XEmacs, Mule ¤ÎÍøÅÀ¤ò·Ñ¾µ¤·¤Ä¤Ä¡¢¤³¤ì¤é
150 ¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¤Ë°Ê²¼¤Ë½Ò¤Ù¤ë¤è¤¦¤Ê³ÈÄ¥¡¦²þÊѤò¹Ô¤Ã¤¿¡£
151
152 <P>
153
154 <H1><A NAME="SECTION00320000000000000000">
155 ʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úɽ¸½</A>
156 </H1>
157
158 <P>
159 XEmacs UTF-2000 ¤Ï¡¢Ê¸»ú°À­¤Î½¸¹ç¤Ë¤è¤ëʸ»úɽ¸½¤È¤¤¤¦¥â¥Ç¥ë¤Ë´ð¤Å¤¤¤Æ¡¢
160 ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»²¾È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æʸ»ú¤ò½èÍý¤¹¤ë¡£¤³¤Î¤¿¤á¡¢Ê¸»ú¥Ç¡¼
161 ¥¿¥Ù¡¼¥¹¤òÍøÍѤ·¤ä¤¹¤¤¤è¤¦¤ËÆâÉôɽ¸½¤òÊѹ¹¤·¤Æ¤¤¤ë¡£Ê¸»úɽ¸½¶õ´Ö¤ò 30
162 bit ¤Ë³ÈÂ礷¤¿¤¿¤á¡¢Æ±»þ¤ËÍøÍѤǤ­¤ëʸ»ú¿ô¤ÏÂçÉý¤ËÁý¤¨¤Æ¤¤¤ë¡£Ê¸»ú¤Ï¡¢
163 <I>ʸ»ú id</I>¤È¸Æ¤Ð¤ì¤ëʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤Î id ¤ÇÆâÉôŪ¤Ëɽ¸½¤µ¤ì¡¢¤³¤Î
164 ʸ»ú id ¤òÍѤ¤¤Æʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤ò»²¾È¤·¤Æ¡¢½èÍý¤¬¹Ô¤Ê¤ï¤ì¤ë¡£
165
166 <P>
167 ʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤Ïʸ»ú°À­¤Î½¸¹ç¤È¤·¤ÆÄêµÁ¤µ¤ì¡¢¸ÇÍ­¤Î¡Öʸ»ú id¡×¤¬³ä
168 ¤êÅö¤Æ¤é¤ì¤ë¡£Ê¸»ú¤òÄêµÁ¤¹¤ë¤¿¤á¤Ë XEmacs UTF-2000 ¤Ç¤Ï define-char ¤È
169 ¤¤¤¦Áȹþ¤ß´Ø¿ô¤òÍÑ°Õ¤·¤Æ¤¤¤ë¡£
170
171 <P>
172 <BLOCKQUOTE>
173  
174   ´Ø¿ô <B>define-char</B> (<I>attributes</I>)
175   
176 <BLOCKQUOTE>
177 ʸ»ú°À­ <I>attributes</I> ¤Çɽ¸½¤µ¤ì¤ëʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤òÄêµÁ¤·¡¢
178     ¤½¤Îʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡£
179 </BLOCKQUOTE></BLOCKQUOTE>
180 <P>
181 <BLOCKQUOTE><BLOCKQUOTE>ʸ»ú°À­ <I>attributes</I> ¤ÏÏ¢Áۥꥹ¥È¤Ç¤¢¤ë¡£
182   
183 </BLOCKQUOTE>
184 </BLOCKQUOTE>
185 <P><DL>
186 <DT><STRONG>¡ÎÎã¡Ï</STRONG></DT>
187 <DD><PRE>
188 (define-char
189   '((name               . "CJK RADICAL SECOND TWO")
190     (general-category   symbol other) ; Informative Category
191     (bidi-category      . "ON")
192     (mirrored           . nil)
193     (total-strokes       . 1)
194     (&lt;-radical
195      ((ucs                . #x4E5A)
196       ))
197     (ideograph-cdp      . -21)
198     (chinese-big5-cdp   . #x8C5D)
199     (ucs                . #x2E83)
200     ))
201 </PRE>
202     
203 </DD>
204 </DL>
205
206 <P>
207 ¤³¤Î¾¡¢Ê¸»ú¤äʸ»ú°À­¤ò°·¤¦¤¿¤á¤Ë¼¡¤Î¤è¤¦¤Ê´Ø¿ô¤òÍÑ°Õ¤·¤Æ¤¤¤ë¡§
208
209 <P>
210 <BLOCKQUOTE>
211  
212   ´Ø¿ô <B>get-char-attribute</B>
213   (<I>character</I> <I>attribute</I>)
214   
215 <BLOCKQUOTE>
216 ʸ»ú¥ª¥Ö¥¸¥§¥¯¥È <I>character</I> ¤Î°À­ <I>attribute</I> ¤ÎÃÍ
217     ¤òÊÖ¤¹¡£
218   
219 </BLOCKQUOTE>
220 </BLOCKQUOTE>
221 <P><DL>
222 <DT><STRONG>¡ÎÎã¡Ï</STRONG></DT>
223 <DD><PRE>
224 (get-char-attribute ?¤¢ 'name)
225 ¢ª "HIRAGANA LETTER A"
226 </PRE>
227 </DD>
228 </DL><BLOCKQUOTE>
229     
230
231 </BLOCKQUOTE>
232
233 <P>
234 <BLOCKQUOTE>
235  
236   ´Ø¿ô <B>put-char-attribute</B>
237   (<I>character</I> <I>attribute</I> <I>value</I>)
238   
239 <BLOCKQUOTE>
240 ʸ»ú¥ª¥Ö¥¸¥§¥¯¥È <I>character</I> ¤Î°À­ <I>attribute</I> ¤ÎÃÍ
241     ¤ò <I>value</I> ¤ËÀßÄꤹ¤ë¡£
242   
243 </BLOCKQUOTE>
244   </BLOCKQUOTE><DL>
245 <DT><STRONG>¡ÎÎã¡Ï</STRONG></DT>
246 <DD><PRE>
247 (get-char-attribute ?¤¢ 'foo)
248 ¢ªnil
249 (put-char-attribute ?¤¢ 'foo 1)
250 ¢ª1
251 (get-char attribute ?¤¢ 'foo)
252 ¢ª1
253 </PRE>
254 </DD>
255 </DL>
256
257 <P>
258 <BLOCKQUOTE>
259  
260   ´Ø¿ô <B>find-char</B>
261   (<I>attributes</I>)
262   
263 <BLOCKQUOTE>
264 In order to find a character object by a character attribute, a
265     builtin function <TT>find-char</TT> may be convenient. This function
266     retrieves the character that has specified attributes.
267   
268 </BLOCKQUOTE>
269 </BLOCKQUOTE>
270
271 <P>
272 <BLOCKQUOTE>
273  
274   ´Ø¿ô <B>map-char-attribute</B>
275   (<I>function</I> <I>attribute</I> &amp;optional <I>range</I>)
276   
277 <BLOCKQUOTE>
278 A map function for character attributes is also available.  This
279     function is useful in finding characters with a character
280     attribute, or processing by a character attribute,
281 </BLOCKQUOTE></BLOCKQUOTE>
282 <P>
283 <BLOCKQUOTE><BLOCKQUOTE>This function maps <I>function</I> over entries in <I>attribute</I>,
284     
285 calling it with two arguments, each key and value in the table.
286 </BLOCKQUOTE></BLOCKQUOTE>
287 <P>
288 <BLOCKQUOTE><BLOCKQUOTE><I>Range</I>
289     specifies a subrange to map over and 
290     
291 is in the same format as the
292     range argument to 
293     'put-range-table'.  If omitted or t, it defaults to
294     the entire table.  See Fig&nbsp;<A HREF="node3.html#fig:map-char-attribute">3.2</A>
295     
296 for an example using this function.    
297   
298 </BLOCKQUOTE>
299 </BLOCKQUOTE>
300
301 <P>
302 <BLOCKQUOTE>
303  
304   ´Ø¿ô <B>char-attribute-alist</B>
305   (<I>character</I>)
306   
307 <BLOCKQUOTE>
308 You can get every attributes of a character as an association-list
309     by a built-in function <TT>char-attribute-alist</TT>.
310 </BLOCKQUOTE></BLOCKQUOTE>
311 <P>
312 <BLOCKQUOTE><BLOCKQUOTE>This function returns the alist of attributes of character.
313   
314 </BLOCKQUOTE>
315 </BLOCKQUOTE>
316
317 <P>
318 <BLOCKQUOTE>
319  
320   ´Ø¿ô <B>char-attribute-list</B> ()
321   
322 <BLOCKQUOTE>
323 You can get the list of character attributes by a builtin function
324     <TT>char-attribute-list</TT>.
325 </BLOCKQUOTE></BLOCKQUOTE>
326 <P>
327 <BLOCKQUOTE><BLOCKQUOTE>This function returns the list of all existing character
328     attributes.
329   
330 </BLOCKQUOTE>
331 </BLOCKQUOTE>
332
333 <P>
334 ¤Ê¤ª¡¢Ê¸»ú°À­¤Ë´Ø¤·¤Æ¤Ï <A HREF="node4.html#cha:char-db">4</A> ¾Ï¤Ç¾ÜÀ⤹¤ë¡£
335
336 <P>
337
338 <H1><A NAME="SECTION00330000000000000000">
339 Internal Representation of Character Object</A>
340 </H1>
341
342 <P>
343 XEmacs UTF-2000 processes characters based on the UTF-2000 model,
344 that is, it operates on character objects and their attributes stored in
345 its character database.  For this purpose, XEmacs UTF-2000 modifies
346 and extends the internal character and string representations.
347
348 <P>
349 In Mule, its internal representation depends on the structure of
350 graphic character set<A NAME="tex2html8"
351   HREF="footnode.html#foot289"><SUP><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]"
352  SRC="/usr/share/latex2html/icons/footnote.png"></SUP></A> of
353 ISO/IEC 2022 [<A
354  HREF="node7.html#ISO-2022">1</A>].  In this paper, such kind of CCS used for the
355 internal representation of Mule is called <B>Mule-charset</B>.
356 Each character is represented by a pair of Mule-charset and its code
357 point.  The internal character representation is separated by
358 7bit-segments.  It is designed to use bit calculus, and thus very
359 sparse.  The internal string representation is a kind of multi-byte
360 encoding.  ASCII characters are represented by ASCII code points.
361 Other characters are represented by 2 to 4 bytes sequence.  For this
362 case, the first byte called <B>leading-byte</B> specifies a CCS.  The
363 following bytes indicate a code point<A NAME="tex2html9"
364   HREF="footnode.html#foot293"><SUP><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]"
365  SRC="/usr/share/latex2html/icons/footnote.png"></SUP></A>.  Every valid multi-byte sequence can be
366 mapped to a corresponding character representation, however possible
367 character representation may not be mapped to any multi-byte sequence.
368 The code space is limited by two parameters: charset-id (basically
369 same with leading-byte) and characters representation.  Number of
370 charset-ids has to be smaller than 128.  Each character is represented
371 by 19-bit integer 14 bit can be used for code point and 5 bit can be
372 used for charset-id of 2-bytes-set.  However full 14-bit cannot be
373 used for a code point.  As the character representation has to satisfy
374 the structure of ISO/IEC graphic character set, 33 to 126 or 32 to 127
375 can be used for each 7-bit segment (octet) .
376
377 <P>
378 The character and string representation of Mule is too limited to
379 implement a large character database.  It is better to guarantee
380 1-to-1 mapping between character representation and string
381 representation, and they should not depend on any coded character
382 sets.  Perhaps a simple, non-segmented, linear space is better than
383 complex, segmented, sparse space.  In addition, a 19-bit code space
384 seems too narrow even for UCS [<A
385  HREF="node7.html#BMP">2</A>] (Unicode [<A
386  HREF="node7.html#Unicode">5</A>]).  To
387 support UCS, at least a 21-bit code space is required.  Therefore, we
388 decided to change the internal representation.
389
390 <P>
391 In the XEmacs UTF-2000, each character object has a character-id.
392 Each character-id is represented by a 30-bit integer.  In strings or
393 buffers, each character object is represented by a multi-byte sequence
394 that is a character-id encoded in UTF-8 [<A
395  HREF="node7.html#BMP">2</A>].  It is wide enough
396 to represent various kind of characters at the same time.  It can
397 support every Unicode character.  In addition, user can define a lot
398 of other characters.
399
400 <P>
401
402 <P></P>
403 <DIV ALIGN="CENTER"><A NAME="fig:map-char-attribute"></A><A NAME="298"></A>
404 <TABLE>
405 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 3.2:</STRONG>
406 Example of map-char-attribute</CAPTION>
407 <TR><TD></TD></TR>
408 </TABLE>
409 </DIV><P></P>
410
411 <P>
412
413 <H1><A NAME="SECTION00340000000000000000">
414 Áȹþ¤ßʸ»ú</A>
415 </H1>
416
417 <P>
418 XEmacs UTF-2000 ¤Ç¤Ï¡¢Ê¸»ú¤Ï´Ø¿ô define-char ¤Çʸ»ú°À­¤Î½¸¹ç¤ò»ØÄꤹ
419 ¤ë¤³¤È¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤ë¡£¤·¤«¤·ºÇ½é¤Ëʸ»ú¤òÄêµÁ¤¹¤ë»þ¤Ë²¿¤âʸ»ú¤¬Â¸ºß
420 ¤·¤Ê¤¤¤È¤¹¤ì¤Ð¡¢Ê¸»ú¤ÎÄêµÁ¥×¥í¥°¥é¥à¤òʸ»úÎó¤Çɽ¸½¤Ç¤­¤Ê¤¤¤³¤È¤Ë¤Ê¤ë¡£
421 ¤³¤ì¤Ç¤ÏÉÔÊؤǤ¢¤ë¤Î¤Ç¡¢´Ø¿ô define-char ¤Çʸ»ú¤òÄêµÁ¤¹¤ëÁ°¤«¤é¤¢¤é¤«
422 ¤¸¤áÄêµÁ¤µ¤ì¤Æ¤¤¤ëʸ»ú¤òÀߤ±¤Æ¤¤¤ë¡£¤³¤ì¤ò<I>Áȹþ¤ßʸ»ú</I>
423 (builtin character)¤È¸Æ¤Ö¡£
424
425 <P>
426 ÁȤ߹þ¤ßʸ»ú¤Ï¡¢Ê¸»ú°À­¤ò°ìÀÚ»ý¤¿¤Ê¤¤¤³¤È¤ò½ü¤±¤Ð¡¢°ì¼ï¤Îʸ»ú¥ª¥Ö¥¸¥§
427 ¥¯¥È¤È¤·¤Æ°·¤ï¤ì¤ë¡£³ÆÁȤ߹þ¤ßʸ»ú¤Ï¡¢Ê¸»ú°À­¤ò°ìÀÚ»ý¤¿¤Ê¤¤¤Ë¤â´Ø¤ï¤é
428 ¤º¡¢¤¢¤ëÉä¹æ²½Ê¸»ú½¸¹ç¤ÎÉä¹ç°ÌÃÖ¤òʸ»ú°À­¤È¤·¤Æ»ý¤Ã¤Æ¤¤¤ë¤è¤¦¤Ë²ò¼á¤µ
429 ¤ì¤ë¡£¤³¤Î¤è¤¦¤Ê»ÅÁȤߤòÍѤ¤¤ë¤³¤È¤Ë¤è¤ê¡¢XEmacs UTF-2000 ¤Ï¥Ö¡¼¥È¥¹¥È
430 ¥é¥Ã¥×½èÍý¤Ë¤ª¤¤¤Æʸ»úÄêµÁ¤Ê¤·¤ËÉä¹æ²½Ê¸»úÎó¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£
431
432 <P>
433 ¤Ê¤ª¡¢Ê¸»úÄêµÁ¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤¿Ê¸»ú¤ÈƱÍͤˡ¢ÁȤ߹þ¤ßʸ»ú¤ËÂФ·¤Æ¤â¡¢
434 ʸ»ú°À­¤òÉղ乤뤳¤È¤Ï²Äǽ¤Ç¤¢¤ê¡¢¤½¤Î¾ì¹ç¡¢¤½¤ÎÁȤ߹þ¤ßʸ»ú¤ÏÉղäµ
435 ¤ì¤¿Ê¸»ú°À­¤ò»ý¤Ã¤¿Ä̾ï¤Îʸ»ú¤È¤·¤ÆºÆÄêµÁ¤µ¤ì¤ë¡£
436
437 <P>
438 ¤È¤³¤í¤Ç¡¢ÄêµÁ¥×¥í¥°¥é¥à¤òɽ¸½¤¹¤ë¤¿¤á¤ÎÁȹþ¤ßʸ»ú¤È¤·¤Æ¤Ç¤¢¤ì¤Ð¡¢ISO
439 8859-1 ¤Îʸ»ú¤¬Â¸ºß¤¹¤ì¤Ð½½Ê¬¤¢¤ë¡£¤·¤«¤·¡¢ÂçÎ̤Îʸ»úÄêµÁ¤Ê¤·¤Ë¡¢¾¯¤Ê
440 ¤¯¤È¤â»ú·Á¤¬³Îǧ¤Ç¤­¤ë¤è¤¦¤Ë¡¢UCS ¤Îʸ»ú¤ä ISO 2022 ¤Î¿Þ·Áʸ»ú½¸¹ç¤Îʸ
441 »ú¡¢Ê¸»ú¶À¤Îʸ»ú¤Ê¤É¤òÁȹþ¤ßʸ»ú¤È¤·¤Æ¤¤¤ë¡£
442
443 <P>
444
445 <H1><A NAME="SECTION00350000000000000000"></A>
446 <A NAME="sec:coded-charset"></A>
447 <BR>
448 coded-charset
449 </H1>
450
451 <P>
452 XEmacs UTF-2000 ¤Ç¤Ï¡¢Ê¸»ú¤ÏÉä¹æ²½Ê¸»ú½¸¹ç¤Ë¤è¤Ã¤Æɽ¸½¤µ¤ì¤Æ¤Ï¤¤¤Ê¤¤¡£¤³
453 ¤Î¤¿¤á¡¢Mule ¤Ë¤ª¤±¤ë¤è¤¦¤Ê°ÕÌ£¤Ç¤Î Mule-charset ¤ÏɬÍפʤ¤¡£¤·¤«¤·¡¢
454 ´û¸¤Îʸ»úÉä¹æ¤ÎÀ¤³¦¤È¾ðÊó¸ò´¹¤·¤¿¤ê¡¢´û¸¤Î¥Õ¥©¥ó¥È¤òÍøÍѤ·¤¿¤ê¡¢
455 ´û¸¤Î¼ÂÁõ¤È¤Î¸ß´¹À­¤ò¼Â¸½¤·´û¸¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤òÍøÍѤ¹
456 ¤ë¤¿¤á¤Ë¡¢¤Ä¤Þ¤ê²ÄÈÂÀ­¤ÎÌ̤«¤é¡¢Mule-charset ¤ËÁêÅö¤¹¤ë¤â¤Î¤¬¤¢¤ë¤ÈÊØ
457 Íø¤Ç¤¢¤ë¡£¤½¤³¤Ç¡¢XEmacs UTF-2000 ¤Ç¤ÏÉä¹æ²½Ê¸»ú½¸¹ç¤ÎÃê¾Ý¤·¤¿¤â¤Î¤È¤·¤Æ
458 <I>coded-charset</I>¤òÀߤ±¤Æ¤¤¤ë¡£
459
460 <P>
461 XEmacs UTF-2000 ¤Î coded-charset ¤Ë´Ø¤¹¤ë API ¤Ï XEmacs-Mule ¤Ë¤ª¤±¤ë
462 Mule-charset ¤Ë´Ø¤¹¤ë API ¤Î¾å°Ì¸ß´¹¤Ë¤Ê¤ë¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¡£
463 XEmacs-Mule ¤Ë¤ª¤±¤ë Mule-charset ¤ÈƱÍͤˡ¢charset ·¿¤¬Â¸ºß¤·¡¢
464 charset ·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥·¥ó¥Ü¥ë¤Çɽ¸½¤µ¤ì¤ë̾Á°¤ò»ý¤Ä¡£Mule ¤Ç¤Ï
465 Mule-charset ¤Ïʸ»ú¤ÎÆâÉôɽ¸½¤Ë°Í¸¤·¤Æ¤ª¤ê¡¢¤½¤Î¹½Â¤¾å¡¢
466 94 Ê¸»ú½¸¹ç¡¢
467 96 Ê¸»ú½¸¹ç¡¢
468 94¡ß94 Ê¸»ú½¸¹ç¡¢
469 96¡ß96 Ê¸»ú½¸¹ç¤Î£´¼ïÎà
470 ¤Ë¸ÂÄꤵ¤ì¤Æ¤¤¤¿¡£°ìÊý¡¢XEmacs UTF-2000 ¤Ç¤Ï¤½¤Î¤è¤¦¤ÊÀ©Ìó¤Ï¸ºß¤·¤Ê¤¤
471 ¤¿¤á¡¢
472 <!-- MATH
473  $\{94|96|128|256\}^{1 ¡Á 4}$
474  -->
475 <IMG
476  WIDTH="138" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
477  SRC="img4.png"
478  ALT="$\{94\vert 96\vert 128\vert 256\}^{1 ¡Á 4}$"> Ê¸»ú½¸¹ç¤Ë³ÈÄ¥¤µ¤ì¡¢Éä¹æ°ÌÃÖ¤¬ 4 byte 
479 °Ê²¼¤Çɽ¸½¤Ç¤­¤µ¤¨¤¹¤ì¤Ð¡¢Ç¤°Õ¤ÎÉä¹æ²½Ê¸»ú½¸¹ç¤òÍøÍѤǤ­¤ë¡£¤¿¤È¤¨
480 ¤Ð¡¢UCS ¤Î´ðËÜ¿¸À¸ìÌÌ (BMP) [<A
481  HREF="node7.html#BMP">2</A>] ¤Ï 256¡ß256 Ê¸»ú½¸¹ç¤Çɽ¸½¤Ç¤­
482 ¡¢UCS-4 Á´ÂΤâ¤Þ¤¿ <IMG
483  WIDTH="35" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
484  SRC="img5.png"
485  ALT="$256^4$"> Ê¸»ú½¸¹ç¤Çɽ¸½¤Ç¤­¤ë¡£
486
487 <P>
488 XEmacs UTF-2000 ¤Î coded-charset ¤Ïʸ»ú¤ÎÆâÉôɽ¸½¤ÈľÀÜ´Ø·¸¤·¤Ê¤¤¤¿¤á¡¢
489 coded-charset ¤Ë¼ýÏ¿¤µ¤ì¤¿³Æʸ»ú¤È¤½¤Î coded-charset ¤Ë¤ª¤±¤ëÉä¹æ°ÌÃÖ
490 ¤ÎÂбþɽ¤Ë¤è¤Ã¤Æ¡¢Ê¸»ú¤ÈÉä¹æ°ÌÃ֤δط¸¤òɽ¸½¤¹¤ëɬÍפ¬¤¢¤ë¡£¤³¤ÎÂбþɽ
491 ¤È¤·¤Æ¡¢Éä¹æ°ÌÃÖ¤«¤éʸ»ú¤òÆÀ¤ë¤¿¤á¤Î<I>decoding-table</I>¤È¡¢Ê¸»ú¤«¤éÉä
492 ¹æ°ÌÃÖ¤òÆÀ¤ë¤¿¤á¤Î<I>encoding-table</I>¤Î£²¼ïÎà¤òÀߤ±¤Æ¤¤¤ë¡£¤³¤Î¤¦¤Á¡¢
493 ¸å¼Ô¤Ïʸ»ú°À­¤Î°ì¼ï¤È¤·¤Æ¡¢¤¹¤Ê¤ï¤Á¡¢coded-charset ¤Î̾¾Î¤ò
494 °À­Ì¾¤È¤¹¤ëʸ»ú°À­¤Ï encoding-table ¤ÎÍ×ÁǤȸ«Ê蘆¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã
495 ¤Æ¤¤¤ë¡£´Ø¿ô define-char ¤â¤·¤¯¤Ï´Ø¿ôput-char-attribute ¤Ç 
496 coded-charset ¤Î̾¾Î¤ò»ý¤Äʸ»ú°À­¤ò»ØÄꤹ¤ë¤È¡¢¤½¤ÎÃͤϻØÄꤵ¤ì¤¿ 
497 coded-charset ¤ÎÉä¹æ°ÌÃ֤Ȥߤʤµ¤ì¡¢»ØÄꤵ¤ì¤¿coded-charset ¤Î 
498 decoding-table ¤âƱ»þ¤ËÀßÄꤵ¤ì¤ë¡£¤³¤Î»ÅÁȤߤˤè¤ê¡¢ÍÛ¤ËÊÑ´¹É½
499 ¤ò»ØÄꤷ¤¿¤ê¡¢ÆâÉôɽ¸½¤Ë¸ÀµÚ¤·¤¿¤ê¤»¤º¤Ë¡¢
500 ¤µ¤Þ¤¶¤Þ¤ÊÉä¹æ²½Ê¸»ú½¸¹ç¤òɽ¸½²Äǽ¤Ç¤¢¤ë¡£
501
502 <P>
503
504 <P>
505 <HR>
506 <!--Navigation Panel-->
507 <A NAME="tex2html70"
508   HREF="node4.html">
509 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
510  SRC="/usr/share/latex2html/icons/next.png"></A> 
511 <A NAME="tex2html68"
512   HREF="main.html">
513 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
514  SRC="/usr/share/latex2html/icons/up.png"></A> 
515 <A NAME="tex2html62"
516   HREF="node2.html">
517 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
518  SRC="/usr/share/latex2html/icons/prev.png"></A>   
519 <BR>
520 <B> Next:</B> <A NAME="tex2html71"
521   HREF="node4.html">ʸ»ú°À­¥Ç¡¼¥¿¥Ù¡¼¥¹</A>
522 <B> Up:</B> <A NAME="tex2html69"
523   HREF="main.html">2001ǯÅṲ̀Ƨ¥½¥Õ¥È¥¦¥§¥¢ÁϤ»ö¶È Ê¸»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯ Ê¸»ú¥ª¥Ö¥¸¥§¥¯¥Èµ»½Ñ¤Î¹½ÃÛ ¡Ê·ÀÌóÈÖ¹æ</A>
524 <B> Previous:</B> <A NAME="tex2html63"
525   HREF="node2.html">ʸ»ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë´ð¤Å¤¯Ê¸»úɽ¸½¥â¥Ç¥ë</A>
526 <!--End of Navigation Panel-->
527 <ADDRESS>
528 MORIOKA Tomohiko
529 2002-02-15
530 </ADDRESS>
531 </BODY>
532 </HTML>