Mercurial > hg > xemacs-beta
comparison mule-doc/arabic.txt @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
1 HOW TO READ & WRITE ARABIC 94.8.4 TAKAHASHI Naoto | |
2 | |
3 1. STARTING UP | |
4 | |
5 1.1 INVOKING MULE | |
6 | |
7 You must invoke Mule as an X client if you want to use Arabic. | |
8 Make sure that the environment variable DISPLAY is properly set. | |
9 So far only 16 dot font is available for Arabic. First, set you X | |
10 resources appropriately, then invoke Mule from a shell window with | |
11 the following command to get enough line spaces. | |
12 | |
13 % mule -fsp 0+9 | |
14 | |
15 | |
16 1.2 ENTERING AND LEAVING ARABIC-MODE | |
17 | |
18 Hit C-] to enter arabic-mode. Whenever you are in arabic-mode, | |
19 you are also in visual-mode. Hitting C-] again brings you back | |
20 from arabic-mode, but you are still in visual-mode. Hitting C-] | |
21 in visual-mode brings you into arabic-mode. You can exit | |
22 visual-mode by hitting C-c C-c. See the figure below. | |
23 | |
24 | |
25 C-c C-c | |
26 +----------------------------------------------+ | |
27 | +--------------------+ | | |
28 | | C-c C-c | | | |
29 V V | | | |
30 +-------------+ +-----------+ C-] +-----------+ | |
31 | | C-] |arabic-mode| ------> | | | |
32 |initial state| ------> | and | |visual-mode| | |
33 | | |visual-mode| <------ | | | |
34 +-------------+ +-----------+ C-] +-----------+ | |
35 | |
36 | |
37 The string "Arabic L2R" or "Arabic R2L" in mode-line means that | |
38 you are in both arabic-mode and visual-mode. If you see "L2R" or | |
39 "R2L" but not "Arabic" in mode-line, you are in visual-mode but | |
40 not in arabic-mode. | |
41 | |
42 | |
43 1.3 DISPLAY DIRECTION | |
44 | |
45 Each buffer in Mule has a buffer local variable called | |
46 "display-direction". If this variable is set to nil (this is the | |
47 default), the lines begin from the left edge of the screen. On | |
48 the other hand, if display-direction is non-nil, the lines are | |
49 aligned to the right and texts are written from right to left. | |
50 | |
51 If you are in visual-mode, the value of display-direction is | |
52 reflected in mode-line: if it is nil "L2R" is displayed; if it is | |
53 non-nil "R2L" is displayed. In visual-mode, you can set | |
54 display-direction to nil by typing 'C-c <', and to t by typing | |
55 'C-c >'. | |
56 | |
57 If you read a file (C-x C-f) which has the extension ".l2r", the | |
58 buffer automatically goes in visual-mode and display-direction is | |
59 set to nil. Likewise, if a file has the extension ".r2l", the | |
60 buffer automatically goes in visual-mode and display-direction is | |
61 set to t. | |
62 | |
63 | |
64 2. EDITING ARABIC TEXT | |
65 | |
66 2.1 INPUT | |
67 | |
68 In arabic-mode, you can input Arabic characters and Arabic digits | |
69 from keyboard. To input ASCII characters or ASCII digits, you | |
70 have to exit arabic-mode by hitting C-]. The translation table is | |
71 given below. When you are in Arabic-mode, you can see the | |
72 keyboard layout by C-z. | |
73 | |
74 Please note that this table is by no means a fixed one --- it is | |
75 just a quick hack. Your suggestion on Arabic keyboard layout will | |
76 be greatly appreciated. | |
77 | |
78 | |
79 translate table in arabic-mode | |
80 ------------------------------ | |
81 " isolated hamza | |
82 a~ madda above alif | |
83 a' hamza above alif | |
84 w' hamza above waaw | |
85 a'' hamza below alif | |
86 y' hamza above yaa | |
87 a alif | |
88 b baa | |
89 o taa marbuTa | |
90 t taa | |
91 c thaa | |
92 j jiim | |
93 H Haa | |
94 K khaa | |
95 d daal | |
96 x dhaal | |
97 r raa | |
98 z zaay | |
99 s siin | |
100 / shiin | |
101 S Saad | |
102 D Daad | |
103 T Taa | |
104 Z Zaa | |
105 ` ayn | |
106 G ghayn | |
107 f faa | |
108 q qaaf | |
109 k kaaf | |
110 l laam | |
111 m miim | |
112 n nuun | |
113 h haa | |
114 w waaw | |
115 A alif maqSura | |
116 y yaa | |
117 C chim (Farsi) | |
118 g gaaf (Farsi) | |
119 p paa (Farsi) | |
120 X zhaa (Farsi) | |
121 _ make connection | |
122 | cut connection | |
123 | |
124 | |
125 Appropriate ligature is automatically generated whenever a | |
126 character is input. Special ligature of laam + alif will be | |
127 generated whenever an alif is input on the left of a laam. If you | |
128 want to cut the connection between two adjacent Arabic characters, | |
129 type a `|' (vertical bar) at that point in arabic-mode. An input | |
130 of a character preceded by a `|' produces a glyph which is not | |
131 connected to its right adjacent. Typing a `_' (underscore) | |
132 connects the two characters at that point, if possible. | |
133 | |
134 When display-direction is nil (i.e. lines are aligned to left), | |
135 the cursor stays at the same position after an Arabic character is | |
136 inserted. It moves to the right after an Arabic digit or an ASCII | |
137 character is inserted. | |
138 | |
139 When display-direction is non-nil (i.e. lines are aligned to | |
140 right), the cursor moves to the left after an Arabic character is | |
141 inserted. It stays at the same position after an Arabic digit or | |
142 an ASCII character is inserted. | |
143 | |
144 | |
145 2.2 DELETION, KILL & YANK | |
146 | |
147 Use C-d to delete the character under the cursor. If you are in | |
148 arabic-mode, the necessary ligature will be re-generated after the | |
149 character is deleted. | |
150 | |
151 DEL key behave differently according to the value of | |
152 display-direction: if the value is nil (aligned to left), it | |
153 deletes a character on the left of the cursor; if the value is | |
154 non-nil (aligned to right), it deletes a character on the right of | |
155 the cursor. If the display direction and the input character | |
156 direction are the same, lastly input character can be deleted with | |
157 DEL key, no matter what the value of display-direction is. | |
158 | |
159 M-d (arabic-kill-word), M-DEL (arabic-backward-kill-word), C-k | |
160 (arabic-kill-line) and C-w (arabic-kill-region) remove the | |
161 specified stretch of string and put it in kill-ring. M-w | |
162 (arabic-copy-region-as-kill) also puts the specified stretch of | |
163 string in kill-ring, but the original text is left unchanged. | |
164 | |
165 The strings in kill ring can be reinserted in buffer by C-y | |
166 (arabic-yank) and M-y (arabic-yank-pop). | |
167 | |
168 Make sure that you are in arabic-mode when you kill or yank | |
169 something, otherwise ligature is not maintained, or at the worst, | |
170 unexpected region will be deleted or a garbage string will be | |
171 inserted in the buffer. | |
172 | |
173 | |
174 2.3 CURSOR MOTION | |
175 | |
176 The following cursor motion commands are supplied in visual-mode | |
177 and in arabic-mode to handle bi-directional texts easily. All | |
178 these commands accept an additional prefix numeric argument. | |
179 | |
180 | |
181 key command name function | |
182 ----------------------------------------------------------------- | |
183 C-f visual-forward-char move the cursor visually | |
184 forward by 1 character | |
185 | |
186 C-b visual-backward-char move the cursor visually | |
187 backward by 1 character | |
188 | |
189 C-p visual-previous-line move the cursor up | |
190 by 1 line | |
191 | |
192 C-n visual-next-line move the cursor down | |
193 by 1 line | |
194 | |
195 C-a visual-beginning-of-line move the cursor to the | |
196 visual beginning of line | |
197 | |
198 C-e visual-end-of-line move the cursor to the | |
199 visual end of line | |
200 | |
201 M-f visual-forward-word move the cursor visually | |
202 forward by 1 word | |
203 | |
204 M-b visual-backward-word move the cursor visually | |
205 backward by 1 word | |
206 | |
207 M-< visual-beginning-of-buffer move the cursor to the | |
208 visual beginning of buffer | |
209 | |
210 M-> visual-end-of-buffer move the cursor to the | |
211 visual end of buffer | |
212 | |
213 | |
214 Note that ordinary cursor motion commands (forward-char, | |
215 backward-char, etc.) behave according to the logical order of the | |
216 text, whilst the above commands behave according to the visual | |
217 order. Compare the difference of the two C-f commands. (You can | |
218 exit visual-mode by typing "C-c C-c".) | |
219 | |
220 | |
221 2.4 LR COMMANDS | |
222 | |
223 Some of you may be confused by the words "forward" and "backward". | |
224 Here is a summary: | |
225 | |
226 | |
227 display-direction display-direction | |
228 is nil is non-nil | |
229 ------------------------------------------------- | |
230 forward right left | |
231 | |
232 backward left right | |
233 | |
234 | |
235 If you are using arrow keys to move the cursor, you may want to | |
236 move the cursor to left/right no matter what display-direction is. | |
237 Likewise, you may want the cursor to be put on the left-most | |
238 column when you hit C-a, and on the right-most column when you hit | |
239 C-e. In such cases, rewrite the key definitions in visual.el and | |
240 arabic.el with the following commands. These commands are called | |
241 "LR commands" because they act according to the absolute direction | |
242 (left or right) rather than relative direction (forward or | |
243 backward). | |
244 | |
245 | |
246 ** LR commands in visual-mode ** | |
247 | |
248 command name function | |
249 -------------------------------------------------------- | |
250 visual-move-to-left-char move the cursor to left | |
251 by one character | |
252 | |
253 visual-move-to-right-char move the cursor to right | |
254 by one character | |
255 | |
256 visual-move-to-left-word move the cursor to left | |
257 by one word | |
258 | |
259 visual-move-to-right-word move the cursor to right | |
260 by one word | |
261 | |
262 visual-left-end-of-line move the cursor to the | |
263 leftmost column | |
264 | |
265 visual-right-end-of-line move the cursor to the | |
266 rightmost column | |
267 | |
268 visual-delete-left-char delete the character on | |
269 the left of visual point | |
270 | |
271 visual-delete-right-char delete the character on | |
272 the right of visual point | |
273 | |
274 visual-kill-left-word kill one word on the left | |
275 of visual point | |
276 | |
277 visual-kill-right-word kill one word on the right | |
278 of visual point | |
279 | |
280 | |
281 ** LR commands in arabic-mode ** | |
282 | |
283 command name function | |
284 ---------------------------------------------------------- | |
285 arabic-delete-left-char do visual-delete-left-char | |
286 and make Arabic ligature | |
287 | |
288 arabic-delete-right-char do visual-delete-right-char | |
289 and make Arabic ligature | |
290 | |
291 arabic-kill-left-word do visual-kill-left-word | |
292 and make Arabic ligature | |
293 | |
294 arabic-kill-right-word do visual-kill-right-word | |
295 and make Arabic ligature | |
296 | |
297 | |
298 3. HARDCOPY | |
299 | |
300 You can use m2ps to get a hardcopy of a file which contains arabic | |
301 characters. See m2ps.1 for detail. Note that input files to m2ps | |
302 must be written in *internal* coding system. To save the content of | |
303 a buffer, use the following command in Mule: | |
304 | |
305 C-u C-x C-w _filename_ RET *internal* RET | |
306 | |
307 Please note that the current version of m2ps does not support r2l | |
308 printing direction (flushright mode). If you try to print a file | |
309 which was created under r2l display direction, it will be printed | |
310 left-aligned. Furthermore, you may get wrong word order. | |
311 | |
312 4. LIMITATIONS | |
313 | |
314 There are many limitations in this release. We need your help. | |
315 | |
316 4.1 NON-SPACING MARKS IN ARABIC | |
317 | |
318 Only two non-spacing marks, i.e., madda and hamza, are available | |
319 in this release. Any other marks, e.g. fatHa (short 'a'), Damma | |
320 (short 'u'), kasra (short 'i'), shadda (doubling sign), sukuun (no | |
321 vowel sign), waSla (joining hamza), etc., cannot be displayed. It | |
322 seems that short vowels and waSla are not necessary to write | |
323 ordinary Arabic text, but shadda is often marked in Arabic | |
324 printings. Please let me know if shadda is really indispensable, | |
325 in that case I will try to implement shadda in some way. | |
326 | |
327 | |
328 4.2 FILE FORMAT | |
329 | |
330 This package uses its own format (coding system) for file I/O. | |
331 You cannot read the files saved in other format, e.g., ISO 8859-6, | |
332 ISO 10646, UNICODE, ArabTeX, xaw, etc. As a matter of fact, I do | |
333 not know what format is mostly used in the world to save Arabic | |
334 texts. If you have texts saved in certain format and would like | |
335 to edit them with Mule, please send me the documentation of your | |
336 format. I will try to implement file I/O routine for that format. | |
337 | |
338 | |
339 4.3 MISCELLANEOUS LIMITATIONS | |
340 | |
341 * Tab does not work if display-direction is non-nil. | |
342 | |
343 * transpose commands and rectangle commands do not work in most cases. | |
344 | |
345 | |
346 5. ADDRESS | |
347 | |
348 Bug reports and comments should be sent to this mailing list | |
349 (mule@etl.go.jp) or directly to me (ntakahas@etl.go.jp). Any | |
350 kinds of suggestions or demands are greatly appreciated. | |
351 | |
352 | |
353 TAKAHASHI Naoto | |
354 Electrotechnical Laboratory, Japan | |
355 ntakahas@etl.go.jp |