\input texinfo  @c -*-texinfo-*-
@setfilename ../info/languages
@settitle Foreign Languages

@titlepage
@sp 6
@ceter @titlefont{Foreign Languages}
@sp 4
@center Version 2.1
@sp 5
@center TAKAHASHI Naoto
@center ntakahas@@etl.go.jp
@page

@end titlepage

@node Top, , , (mule)
@section Foreign Languages

This document describes how to read and write various Asian and European
languages in Mule.

@menu
* Chinese::                             Simplified and Traditional Hanzi 
* Japanese::                            Hiragana, Katakana, Kanji
* Korean::                              Hangul and Hanja
* Thai::                                Thai
* Vietnamese::                          Vietnamese
* Latin Script Languages::              French, German, Swedish, etc.
* Cyrillic Script Languages::           Russian, Bulgarian, Ukrainian, etc.
* Greek::                               Greek
* Hebrew::                              Hebrew
* Arabic Script Languages::             Arabic, Farsi, etc.
* Ethiopic Languages::                  Amharic, Tigrigna, etc.
* IPA::                                 International Phonetic Alphabet
@end menu

@comment ============================================================
@node Chinese, Japanese, , Top
@section Chinese

  This section describes how to read and write Chinese (both simplified
and traditional hanzi) in Mule.  To make Chinese the primary
environment, the following line should be included in the
@file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'chinese)
@end lisp

If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Chinese text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@menu
* Chinese Character Sets::      GB and BIG5
* Chinese Fonts::               Running Mule as an X client program
* Coding-system for Chinese::   File I/O and Process Communication
* Using cWnn::                  Network wide hanzi conversion server
* Quail for Chinese::           Simple input method
* Running Mule in cxterm::      Using cxterm's input method
* PIG-mode::                    Yet another mode for Chinese
* Chinese News::                How to read alt.chinese.text[.big5]
@end menu

@comment ------------------------------------------------------------
@node Chinese Character Sets, Chinese Fonts, , Chinese
@subsection Chinese Character Sets

  There are two character sets for Chinese, i.e., GB and BIG5.  GB is
for the simplified characters used in P.R.C.  On the other hand, BIG5 is
for the traditional characters used in Hong Kong and Taiwan.  Mule can
handle both of them.  You can make a file which contains both GB
characters and BIG5 characters, but care should be taken in this case.
If you want to make such files, see @xref{Coding-system for Chinese}.

@quotation
[NOTE] BIG5 roughly corresponds to the first and the second plains of
CNS 11643.  CNS stands for Chinese National Standard, which defines a
Chinese character set.  Although Mule can also read/write/display CNS
character sets, input methods for CNS is not yet available.
@end quotation

@comment ------------------------------------------------------------
@node Chinese Fonts, Coding-system for Chinese, Chinese Character Sets, Chinese
@subsection Chinese Fonts

  Unless you have a terminal that supports GB/BIG5 and exclusively use
it for Mule, you have to run Mule under the X window system.  In the
latter case, appropriate GB/BIG5 fonts must have been installed.  You
should be able to read the following two lines if Chinese fonts are
appropriately installed:

@example
GB :    $AVPND(B $AFUM(;0(B $A::So(B $ADc:C(B
BIG5 :  $(0GnM$(B $(0N]0*Hd(B $(0*/=((B $(0+$)p(B
@end example

  If you cannot read the above lines, get Chinese fonts from Mule's FTP
sites (see FAQ-Mule).  In addition to GB and BIG5 fonts, you also need
SiSheng fonts if you want to use cWnn to input Chinese.  (For cWnn, see
@xref{Using cWnn}.)

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the Chinese characters must be exactly twice
as wide as the ASCII characters, and the width of the Sisheng characters
must be the same as the ASCII characters.  For the detail of font
specification, see @xref{Font, , Font, mule}.

@comment ------------------------------------------------------------
@node Coding-system for Chinese, Using cWnn, Chinese Fonts, Chinese
@subsection Coding-system for Chinese

  When you read/write a file containing Chinese characters, you must
specify what kind of format is used.  In the world of Mule, this format
is called @dfn{coding-system}.  You must specify an appropriate
coding-system in your @file{~/.emacs} file, depending on your needs.  We
will explain three cases one by one.

@enumerate
@item
To edit files containing GB and ASCII

  There are several ways to distinguish GB characters from ASCII
characters.  The most frequently used method utilises the 8th bit as a
flag.  If the 8th bit is set to 1, the character represents a GB.
Otherwise, an ASCII.  This method is adopted in cxterm. If you use
exclusively GB and ASCII, this method would be convenient.  This is the
default coding-system in Mule's Chinese environment.

@item
To edit files containing BIG5 and ASCII

  If you want to use BIG5 as the primary coding-system, add the
following lines in your @file{~/.emacs} file:

@lisp
(set-default-file-coding-system '*big5*)
(set-display-coding-system '*big5*)
(set-keyboard-coding-system '*big5*)
(setq-default quail-current-package (assoc "py-b5" quail-package-alist))
@end lisp

@item
To edit files containing GB, BIG5 and ASCII

  First of all, be aware of this fact: Mule seems to be the only
software that can handle GB and BIG5 simultaneously.  You cannot display
GB and BIG5 simultaneouly in cxterm, for example.

  If you dare to include GB and BIG5 in the same file, we recommend you
to include the following line in your @file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

  With this coding-system, you can include not only GB and BIG5, but
also Japanese, Hangul, European languages, etc. in a single file.  The
coding-system @code{*junet*} inserts special codes, called @dfn{escape
sequences}, at the boundaries of two different character sets.  The 8th
bits are always set to zero.

  You can also use the next one instead of using @code{*junet*}:

@lisp
(set-default-file-coding-system *euc-china*)
@end lisp

  In this case, GB characters are saved with their 8th bits set to one.
All other character sets are saved with their 8th bits set to zero, and
are distinguished from one another by escape sequences.

  Yet another alternative is the following:

@lisp
(set-default-file-coding-system *ctext*)
@end lisp

  You cannot specify *big5* as file-coding-system if the file contains
both GB and BIG5.

@end enumerate

@comment ------------------------------------------------------------
@node Using cWnn, Quail for Chinese, Coding-system for Chinese, Chinese
@subsection Using cWnn

  The primary method for inputing Chinese is to communicate with cserver
of cWnn via Egg system.  cserver is a network-wide pinyin-hanzi
conversion server.  It receives pinyin sequences and returns hanzis.

  To use cserver, cWnn (version 4.108 or later) should have been
installed.  cWnn is bound to Wnn, and available from FTP sites of Mule.
SiSheng fonts are also necessary. (See @xref{Chinese Fonts}.)

  Note that the current version of Egg supports only GB characters.
If you want to input BIG5, or if you cannot use cserver for some
reason, see @xref{Quail for Chinese}.

  To use cserver, you must specify the hostname on which cserver is
running.  Add the following lines in your @file{~/.emacs} file:

@lisp
(set-cwnn-host-name "hostname")
@end lisp

  @code{"hostname"} must be replaced by the real hostname on which
cserver is really running.

  To input chinese, type @kbd{C-\}.  Make sure that the mode-line has
changed.  Now you can enter pinyin.  You may type several words at once.
Then hit @key{SPC} to convert what you entered.  If the resulting hanzi
is different from what you want, hit @key{SPC} again.  Each time you hit
@key{SPC}, cserver returns another alternative.

  Here are some important key bindings in the conversion mode:

@table @kbd
@item SPC
get another alternative

@item RET
confirm (accept that hanzi)

@item C-f
move to next word

@item C-b
move to previous word

@item C-i
make current word shorter

@item C-o
make current word longer

@item C-g
quit
@end table

  At the very first time of usig cserver, you may be asked if you
want to make dictionaries.  Just type @kbd{yes} to all questions.

  To quit from Chinese input mode, type @kbd{C-\} again.

  For more information, see @xref{Top, , Egg, egg}.

@comment ------------------------------------------------------------
@node Quail for Chinese, Running Mule in cxterm, Using cWnn, Chinese
@subsection Quail for Chinese

  For those who want to input BIG5 or who cannot use cserver for some
reason, Mule provides another input method called @dfn{quail}.  Quail is
included in the standard distribution of Mule.  If you are familiar with
cxterm, it would be very easy to use quail, as quail supports all of the
input method provided by X11R5 cxterm.

  All input methods called @samp{XXX.tit} in X11R5 cxterm are already
registered in Mule.  To use some of them, just type @kbd{C-]} and select 
a package you want by @kbd{M-s}.  The following packages are avairalbe
now.

@example
py, tonepy, sw, punct, qj, ccdospy, ctcps3, etzy, py-b5, zozy, qj-b5,
punct-b5
@end example

  In the document of X11R5 cxterm, each input method is explained as
follows.  (Quoted from @file{cxterm/dict/tit/README}.)

[GB input methods]

@table @asis
@item py
Standard PinYin input method

@item qj
Quan Jiao -- double-byte ASCII in GB coding

@item punct
Punctuation marks input table

@item sw
CCDOS style ShouWei input method (first & last part)

@item tonepy
Standard PinYin input method with tone 1-5

@item ccdospy
CCDOS style abbreviated PinYin input method

@item ctlau
Sidney Lau's Cantonese transcription scheme
@end table

[BIG5 input methods]

@table @asis
@item py-b5
Standard PinYin input method with tones

@item qj-b5
Quan Jiao -- double-byte ASCII in BIG5 coding

@item punct-b5
Punctuation marks input table

@item ctlaob
Sidney Lau's Cantonese transcription scheme

@item zozy
ETen ZhuYin (phonetic) input in second keyboard layout as in ZeroOne,
DACHEN system, etc.

@item etzy
ETen ZhuYin (phonetic) input in ETen keyboard layout
@end table

  In quail, you can toggle ASCII input mode and Chinese input mode by
typing @kbd{C-]}.  @kbd{M-z} in quail-mode shows a help.

@quotation
[NOTE] You can easily create a quail-package from cxterm's tit format
file.  Please try the following command from your shell,

@example
@samp{% mule -batch -l quail/tit -f batch-tit-to-quail [dirname|filename] ...}
@end example
@end quotation

@comment ------------------------------------------------------------
@node Running Mule in cxterm, PIG-mode, Quail for Chinese, Chinese
@subsection Running Mule in cxterm

  You can use various hanzi input method of cxterm by running Mule in a
cxterm window.  In this case you can use the latest veresion of cxterm.
To run Mule in a cxterm window, execute the following command:

@example
@samp{% mule -nw}
@end example

  Make sure that you have configured cxterm so that it matches Mule's
coding-system.  Set cxterm to GB-mode if you use *euc-china* in Mule; to
BIG5-mode if you use *big5*.  Note that you cannot use GB and BIG5
simultaneously in cxterm.

@comment ------------------------------------------------------------
@node PIG-mode, Chinese News, Running Mule in cxterm, Chinese
@subsection PIG-mode

  PIG-mode is a very convenient system.  It converts several characters
at once, accepts abbreviated pinyin input, etc.  It is available via
anonymous FTP from the following sites:

@example
etlport.etl.go.jp [192.31.197.99]: /pub/mule/contrib
sh.wide.ad.jp [133.4.11.11]: /JAPAN/mule/mule-1.0/contrib
ftp.mei.co.jp [132.182.49.2]:/public/free/gnu/emacs/Mule/contrib
ftp.funet.fi [128.214.6.100]:/pub/gnu/emacs/mule/mule-1.0/contrib
@end example

  A useful readme file is included.

  According to burt@@dfki.uni-kl.de, the definition of the following
function is missing:

@lisp
(defun pig-parse-cz (string)
 (let ((indx 0) list)
  (while (string-match "\\([^0-5]+[0-5]\\)-*" string indx)
   (setq list (cons (substring string (match-beginning 1) (match-end 1))
                    list)) 
   (setq indx (match-end 0)))
  (nreverse list)))
@end lisp

@comment ------------------------------------------------------------
@node Chinese News, , PIG-mode, Chinese
@subsection Chinese News

  It is possible to read the articles posted to @samp{alt.chinese.text}
and @samp{alt.chinese.text.big5} if you use @code{GNUS} and
@code{gnusutil} together in Mule.

  Add the following line in your @file{~/.emacs} file:

@lisp
(setq gnus-group-mode-hook 'gnusutil-initialize)
@end lisp

  Now you can read @samp{alt.chinese.text} and
@samp{alt.chinese.text.big5} in hanzi.

  Once you install gnusutil, no special procedure is required to post an
article to those newsgroups.  You can write your article in hanzi and
can post it as if it were written in ASCII.  gnusutil automatically
converts your hanzi article to appropriate format.  Use a GB input
method for alt.chinese.text, and a BIG5 input method for
alt.chinese.text.big5.

@comment ============================================================
@node Japanese, Korean, Chinese, Top
@section Japanese

[IN PREPARATION]

  This section describes how to read and write Japanese in Mule.  To
make Japanese the primary environment, the following line should be
included in the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'japanese)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Japanese text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@comment ============================================================
@node Korean, Thai, Japanese, Top
@section Korean

[IN PREPARATION]

  This section describes how to read and write Korean in Mule.  To make
Korean the primary environment, the following line should be included
in the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'korean)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Korean text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@comment ============================================================
@node Thai, Vietnamese, Korean, Top
@section Thai

[IN PREPARATION]

  This section describes how to read and write Thai in Mule.  To make
Thai the primary environment, the following line should be included
in the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'thai)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Thai text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@comment ============================================================
@node Vietnamese, Latin Script Languages, Thai, Top
@section Vietnamese

[IN PREPARATION]

  This section describes how to read and write Vietnamese in Mule.  To
make Vietnamese the primary environment, the following line should be
included in the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'viet)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Vietnamese text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@comment ============================================================
@node Latin Script Languages, Cyrillic Script Languages, Vietnamese, Top
@section Latin Script Languages

  This section describes how to read and write Latin script languages
(roughly speaking, European languages) in Mule.  To make Latin script
the primary environment, the following line should be included in the
@file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'european)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  By default, the above line makes Mule use ISO 8859-1 (aka Latin-1 or
CTEXT) as the primary character set.  If you want to use latin-2,
latin-3, etc., see @xref{Other Latin Character Sets}.

  To print Latin script text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@menu
* Latin-1::                     aka ISO 8859-1 and CTEXT
* Other Latin Character Sets::  Latin-2, Latin-3, Latin-4 and Latin-5
@end menu

@comment ------------------------------------------------------------
@node Latin-1, Other Latin Character Sets, , Latin Script Languages
@subsection Latin-1

@menu
* Displaying Latin-1::
* Inputing Latin-1::

@comment ............................................................
@node Displaying Latin-1, Inputing Latin-1, , Latin-1
@subsubsection Displaying Latin-1

  Unless you have a terminal that supports ISO 8859-1 and exclusively
use it for Mule, you have to run Mule under the X window system.  In the
latter case, appropriate ISO 8859-1 fonts must have been installed.
Most, if not all, X window systems have ISO 8859-1 fonts by default, so
you do not need to worry about it too much.  If ISO 8859-1 fonts are
already available on your system, you should be able to read the
following French sentence that contains many accented characters:

@example
,A+(BTout Fran,Ag(Bais de bon go,A{(Bt, m,Aj(Bme r,Ai(Bsident de Capharna,A|(Bm, doit payer la
d,An(Bme ,A`(B No,Ak(Bl ou ,A`(B P,Ab(Bques, en esp,Ah(Bces, en gn,At(Ble ou en ma,Ao(Bs.,A;(B
@end example

  Bear in mind that all fonts used in Mule must be of fixed width.  For
the detail of font specification, see @xref{Font, , Font, mule}.

  In most cases, the coding-system that you want to use in file I/O
would be either @code{*ctext*} or @code{*junet*}.

  @code{*ctext*} uses 8-bit encoding.  If the 8th bit is set to zero, it
represents an ASCII character.  If the 8th bit is set to one, it
represents a Latin-1 character.  In the current version of Mule, it is
the primary coding-system for Latin-1 text.  If you rarely use other
coding-systems, this one would be useful.  You can use the name
@code{*iso-8859-1*} as an alias for @code{*ctext*}.  There is no
difference between the two names.

  On the other hand, @code{*junet*} uses escape sequences and 7-bit
encoding.  It is the default coding-system in the
@samp{mule@@etl.go.jp} mailing list for multilingual communication.  To
use @code{*junet*} for file I/O, add the following line to your
@file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

@comment ............................................................
@node Inputing Latin-1, , Displaying Latin-1, Latin-1
@subsubsection Inputing Latin-1

  Some keyboards directly generate 8-bit codes for ISO 8859-1
characters.  In such cases, you can input ISO 8859-1 characters without
difficulty.

  Even if your keyboard does not generate 8-bit codes, you can input ISO
8859-1 characters using the Quail system.  The Quail system converts one
or more ASCII characters into an ISO 8859-1 character.  A number of
conversion tables are provided for this purpose.  Each conversion table
is called a @dfn{package}.

  Hit @kbd{C-]} to turn into quail-mode.  Then hit @kbd{M-s} and specify
the package name that you want to use (see below).  @key{SPC} works as
the completion key.  If you hit @key{RET} without specifying a package
name, the default package (shown in the parentheses) will be used.

  The Quail packages are divided into two groups.  The first one is for
naive users.  Most of the accented letters can be input by composing two
characters.  For example, you will get an @samp{,Ai(B} (@samp{e} with acute
accent) by typing an @samp{e} followed by a @samp{'} (single quote).

@example
PACKAGE NAME    LANGUAGE
--------------------------------
latin-1         general purpose
british         British
danish          Danish
finnish         Finnish
french          French
german          German
icelandic       Icelandic
italian         Italian
norwegian       Norwegian
scandinavian    Swedish, Norwegian, Danish, Icelandic and Finnish
spanish         Spanish
swedish         Swedish
@end example

  The second package group was made for those who find the first package
group too awkward.  The principle of this group is @dfn{the less
strokes, the better}.  Most of the special characters in each language
are allocated to somewhere on the keyboard so that you can type them
with a single stroke.  You can type very quickly once you learn the
layout by heart.

@example
PACKAGE NAME    LANGUAGE
-------------------------------
azerty          French
dnsh            Danish
dvorak          English
fnnsh           Finnish
frnch           French
grmn            German
iclndc          Icelandic
itln            Italian
nrwgn           Norwegian
spnsh           Spanish
swdsh           Swedish
@end example

  To see the composition table or the keyboard mapping of a package,
select that package and hit @kbd{M-z}.  To exit quail-mode, hit
@kbd{C-]} once again.

  For the detail of the Quail system, see @xref{Usage of
Quail, , , quail}.

@comment ------------------------------------------------------------
@node Other Latin Character Sets, , Latin-1, Latin Script Languages
@subsection Other Latin Character Sets

@menu
* Displaying Other Latin Character Sets::
* Inputing Other Latin Character Sets::
@end menu

@comment ............................................................
@node Displaying Other Latin Character Sets, Inputing Other Latin Character Sets, , Other Latin Character Sets
@subsubsection Displaying Other Latin Character Sets

  Unless you have a terminal that supports ISO 8859-x and exclusively
use it for Mule, you have to run Mule under the X window system.  In the
latter case, appropriate ISO 8859-x fonts must have been installed.  Use
the following lines to check whether the fonts have been installed or
not.  All the lines contain four vowels (@samp{A}, @samp{E}, @samp{I}
and @samp{U}) with acute accent both in upper case and in lower case:

@example
ISO 8859-2 (Latin-2): ,BA(B ,Ba(B ,BI(B ,Bi(B ,BM(B ,Bm(B ,BZ(B ,Bz(B
ISO 8859-3 (Latin-3): ,CA(B ,Ca(B ,CI(B ,Ci(B ,CM(B ,Cm(B ,CZ(B ,Cz(B
ISO 8859-4 (Latin-4): ,DA(B ,Da(B ,DI(B ,Di(B ,DM(B ,Dm(B ,DZ(B ,Dz(B
ISO 8859-9 (Latin-5): ,MA(B ,Ma(B ,MI(B ,Mi(B ,MM(B ,Mm(B ,MZ(B ,Mz(B
@end example

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the ISO 8859-x characters must be the same as
the ASCII characters.  For the detail of font specification, see
@xref{Font, , Font, mule}.

  In most cases, the coding-system that you want to use in file I/O
would be either @code{*junet*} or @code{*iso-8859-x*}, where x = 2, 3, 4
or 9.

  @code{*junet*} uses escape sequences and 7-bit encoding.  It is the
default coding-system in the @samp{mule@@etl.go.jp} mailing list for
multilingual communication.  To use @code{*junet*} for file I/O, add the
following line to your @file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

  On the other hand, @code{*iso-8859-x*} uses 8-bit encoding.  If the
8th bit is set to zero, it represents an ASCII character; if set to one,
a ISO 8859-x character.  If you use only one character set (other than
ASCII), this coding-system would be useful.  To use this coding-system
for file I/O, add ONE of the following lines to your @file{~/.emacs}
file:

@lisp
(set-default-file-coding-system *iso-8859-2*)
(set-default-file-coding-system *iso-8859-3*)
(set-default-file-coding-system *iso-8859-4*)
(set-default-file-coding-system *iso-8859-9*)
@end lisp

[NOTE] Latin-5 is another name for ISO 8859-9, not for ISO 8859-5.  ISO
8859-5 is a Latin/Cyrillic character set.

@comment ............................................................
@node Inputing Other Latin Character Sets, , Displaying Other Latin Character Sets, Other Latin Character Sets
@subsubsection Inputing Other Latin Character Sets

  To input Latin-x characters, use the Quail system.  The Quail system
converts one or more ASCII characters into an Latin-x character.  A
number of conversion tables are provided for this purpose.  Each
conversion table is called a @dfn{package}.

  Hit @kbd{C-]} to turn into quail-mode.  Then hit @kbd{M-s} and specify
the package name that you want to use (see below).  @key{SPC} works as the
completion key.  If you hit @key{RET} without specifying a package name,
the default package (shown in the parentheses) will be used.

  Here is the table of Quail packages for Latin-x characters:

@example
PACKAGE NAME    TARGET LANGUAGE
------------------------------------------------------
latin-2         all Latin-2 (ISO 8859-2) languages
latin-3         all Latin-3 (ISO 8859-3) languages
latin-4         all Latin-4 (ISO 8859-4) languages
latin-5         all Latin-5 (ISO 8859-9) languages
esperanto       specific to Esperanto (Latin-3 coding)
turkish         spacific to Turkish (Latin-3 coding)
@end example

  To see the conversion table of a package, select that package and hit
@kbd{M-z}.  You can exit quail-mode by @kbd{C-]}.  For the detail of the
Quail system, see @xref{Usage of Quail, , , quail}.

@comment ============================================================
@node Cyrillic Script Languages, Greek, Latin Script Languages, Top
@section Cyrillic Script Languages

  This section describes how to read and write Cyrillic script languages
in Mule.  To make Cyrillic script the primary environment, the following
line should be included in the @file{$MULE/lisp/site-init.el} file at
the compile time:

@lisp
(set-primary-environment 'cyrillic)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Cyrillic text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@menu
* Displaying Cyrillic::
* Inputing Cyrillic::
@end menu

@comment ------------------------------------------------------------
@node Displaying Cyrillic, Inputing Cyrillic, , Cyrillic Script Languages
@subsection Displaying Cyrillic

  Mule uses the right half of the ISO 8859-5 character set for
displaying Cyrillic.  Unless you have a terminal that supports ISO 8859-5
and exclusively use it for Mule, you have to run Mule under the X window
system.  In the latter case, appropriate ISO 8859-5 fonts must have been
installed.

  If the Cyrillic fonts have been properly installed, you should be able
to read the following Ukrainian fork song:

@example
,L2WoR(B ,LQX(B ,Lo(B ,LQP]Tc`c(B
,LBP(B ,LY(B ,LWPS`PR(B, ,Li^(B ,LW]PR(B.
,LGU`UW(B ,Lbc(B ,LQP]Tc`c(B
,L1P]Tc`Xab^\(B ,LabPR(B.
@end example

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the Cyrillic characters must be the same as
the ASCII characters.  For the detail of font specification, see
@xref{Font, , Font, mule}.

  In most cases, the coding-system that you want to use in file I/O
would be either @code{*iso-8859-5*} or @code{*junet*}.

  @code{*iso-8859-5*} uses 8-bit encoding.  If the 8th bit is set to
zero, it represents an ASCII character; if set to one, a Cyrillic
character.  In the current version of Mule, it is the primary
coding-system for Cyrillic.  If you rarely use other character sets,
this coding-system would be useful.

  On the other hand, @code{*junet*} uses escape sequences and 7-bit
encoding.  It is the default coding-system in the
@samp{mule@@etl.go.jp} mailing list for multilingual communication.  To
use @code{*junet*} for file I/O, add the following line to your
@file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

@comment ------------------------------------------------------------
@node Inputing Cyrillic, , Displaying Cyrillic, Cyrillic Script Languages
@subsection Inputing Cyrillic

  To input Latin-5 characters, use the Quail system.  The Quail system
converts one or two ASCII characters into an Latin-5 character.  A
number of conversion tables are provided for this purpose.  Each
conversion table is called a @dfn{package}.

  Hit @kbd{C-]} to turn into quail-mode.  Then hit @kbd{M-s} and specify
the package name that you want to use (see below).  @key{SPC} works as the
completion key.  If you hit @key{RET} without specifying a package name,
the default package (shown in the parentheses) will be used.

  Here is the table of Quail packages for Latin-5 characters:

@example
PACKAGE NAME    LANGUAGES           NOTES
-----------------------------------------------------------------
jcuken          Russian             standard layout for Russian
macedonian      Macedonian          JUS.I.K1.004
serbian         Serbian             JUS.I.K1.005
byelorussian    Byelorussian        derived from JUS.I.K1
ukrainian       Ukrainian           derived from JUS.I.K1
yawerty         general purpose     based on Roman transcription
@end example

  To see the conversion table of a package, select that package and hit
@kbd{M-z}.  You can exit quail-mode by @kbd{C-]}.  For the detail of the
Quail system, see @xref{Usage of Quail, , , quail}.

@comment ============================================================
@node Greek, Hebrew, Cyrillic Script Languages, Top
@section Greek

  This section describes how to read and write Greek in Mule.  To make
Greek the primary environment, the following line should be included in
the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'greek)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Greek text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@menu
* Greek Character Set::         Character Set, Fonts, Coding-system
* Inputing Greek::              Quail Package for Greek
@end menu

@comment ------------------------------------------------------------
@node Greek Character Set, Inputing Greek, , Greek
@subsection Greek Character Set

  Mule uses the right half of the ISO 8859-7 character set for
displaying Greek.  Unless you have a terminal that supports ISO 8859-7
and exclusively use it for Mule, you have to run Mule under the X window
system.  In the latter case, appropriate ISO 8859-7 fonts must have been
installed.

  If the Greek fonts have been properly installed, you should be able to
read the following poem:

@example
,FK_co(B ,Faj|la(B
,Fha(B ,Fido}le(B ,Ftir(B ,Falucdaki]r(B ,Fm(B',Famh_foum(B
,Fta(B ,Fl\qlaqa(B ,Fma(B ,Fk\lpoum(B ,Fstom(B ,F^kio(B
,Ftg(B ,Fh\kassa(B ,Fma(B ,Fjulat_fei(B
,Fk_co(B ,Faj|la(B,
,Fma(B ,Fsgjyho}le(B ,Fk_co(B ,Fxgk|teqa(B.
@end example

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the Greek characters must be the same as the
ASCII characters.  For the detail of font specification, see @xref{Font,
, Font, mule}.

  In most cases, the coding-system that you want to use in file I/O
would be either @code{*iso-8859-7*} or @code{*junet*}.

  @code{*iso-8859-7*} uses 8-bit encoding.  If the 8th bit is set to
zero, it represents an ASCII character; if set to one, a Greek
character.  In the current version of Mule, it is the primary
coding-system for Greek.  If you rarely use other languages, this
coding-system would be useful.

  On the other hand, @code{*junet*} uses escape sequences and 7-bit
encoding.  It is the default coding-system in the
@samp{mule@@etl.go.jp} mailing list for multilingual communication.  To
use @code{*junet*} for file I/O, add the following line to your
@file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

@comment ------------------------------------------------------------
@node Inputing Greek, , Greek Character Set, Greek
@subsection Inputing Greek

  To input Greek characters, use the Quail system.  Hit @kbd{C-]} to
turn into quail-mode.  If you do not see the string @samp{[,FEkkgmij\(B]} in
the mode-line, then hit @kbd{M-s} and specify the package name
@samp{greek}.  @key{SPC} works as the completion key.  If you hit
@key{RET} without specifying a package name, the default package (shown
in the parentheses) will be used.

  The Greek keymap in quail-mode looks like this:

@example
1!  2@  3#  4$  5%  6^  7&  8*  9(  0)  -_  =+  `~
 ,F7/(B  ,FrS(B  ,FeE(B  ,FqQ(B  ,FtT(B  ,FuU(B  ,FhH(B  ,FiI(B  ,FoO(B  ,FpP(B  [{  ]}
  ,FaA(B  ,FsS(B  ,FdD(B  ,FvV(B  ,FcC(B  ,FgG(B  ,FnN(B  ,FjJ(B  ,FkK(B  ,F4((B  '"  \|
   ,FfF(B  ,FwW(B  ,FxX(B  ,FyY(B  ,FbB(B  ,FmM(B  ,FlL(B  ,;  .:  /?  
@end example

  The keys @kbd{,F4(B} (@kbd{;} on ASCII keyboard) and @kbd{,F((B} (@kbd{:} on
ASCII keyboard) work as dead keys.  For example,

@example
@samp{,Fa(B} + @samp{,F4(B} becomes @samp{,F\(B}
@samp{,Fi(B} + @samp{,F((B} becomes @samp{,Fz(B}
@samp{,Fi(B} + @samp{,F((B} + @samp{,F4(B} becomes @samp{,F@(B}
@end example

  To exit quail-mode, hit @kbd{C-]} once again.

  For the detail of the Quail system, see @xref{Usage of Quail, , ,
quail}.

@comment ============================================================
@node Hebrew, Arabic Script Languages, Greek, Top
@section Hebrew

  This section describes how to read and write Hebrew in Mule.  To make
Hebrew the primary environment, the following line should be included in
the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'hebrew)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Hebrew text, see the online manual @samp{m2ps(1)}
and @xref{Top, , m2ps, m2ps}.

@menu
* Hebrew Character Set::
* Display-direction for Hebrew::
* Inputing Hebrew::
* Hebrew Cut and Paste::
@end menu

@comment ------------------------------------------------------------
@node Hebrew Character Set, Display-direction for Hebrew, , Hebrew
@subsection Hebrew Character Set

  Mule uses the right half of the ISO 8859-8 character set for
displaying Hebrew.  Unless you have a terminal that supports ISO 8859-8
and exclusively use it for Mule, you have to run Mule under the X window
system.  In the latter case, appropriate ISO 8859-8 fonts must have been
installed.

  If the Hebrew fonts have been properly installed, you should be able to
read the following Hebrew alphabet:

@example
[2],H`abcdefghijklmnopqrstuvwxyz[0](B
@end example

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the Hebrew characters must be the same as the
ASCII characters.  For the detail of font specification, see @xref{Font,
, Font, mule}.

  In most cases, the coding-system that you want to use in file I/O
would be either @code{*junet*} or @code{*iso-8859-8*}.

  @code{*junet*} uses escape sequences and 7-bit encoding.  It is the
default coding-system in the @samp{mule@@etl.go.jp} mailing list for
multilingual communication.  To use @code{*junet*} for file I/O, add the
following line to your @file{~/.emacs} file:

@lisp
(set-default-file-coding-system *junet*)
@end lisp

  On the other hand, @code{*iso-8859-8*} uses 8-bit encoding.  If the
8th bit is set to zero, it represents an ASCII character; if set to one,
a Hebrew character.  In the current version of Mule, it is the primary
coding-system for Hebrew.  If you rarely use other languages, this
coding-system would be useful.  You do not need to any special
configuration for using this coding-system.

  *iso-8859-8* does not inserts text direction specifiers.  If you want
to use the text direction specifier defined in ISO 6429, namely
@dfn{@key{ESC} [ 2 ]} to change the direction to right-to-left and
@dfn{@key{ESC} [ 0 ]} to revert it to left-to-right, include the
following line in your @file{~/.emacs} file:

@lisp
(set-default-file-coding-system *ctext-hebrew*)
@end lisp

@comment ------------------------------------------------------------
@node Display-direction for Hebrew, Inputing Hebrew, Hebrew Character Set, Hebrew
@subsection Display-direction for Hebrew

  In Mule, each buffer has a buffer local variable called
@code{display-direction}.  If this variable is set to @code{nil} (this
is the default), the lines begin from the left edge of the screen.  On
the other hand, if @code{display-direction} is non-@code{nil}, the lines
are aligned to the right and texts are written from right to left.

  We strongly recommend you to turn on @dfn{visual-mode} by

@example
M-x visual-mode
@end example

when you edit Hebrew text.  For the detail of @code{display-direction}
and the cursor motion in visual-mode, see @xref{Top, , Right-to-left
writing, R2L}.

@comment ------------------------------------------------------------
@node Inputing Hebrew, Hebrew Cut and Paste, Display-direction for Hebrew, Hebrew
@subsection Inputing Hebrew

  To input Hebrew characters, use the Quail system.  Hit @kbd{C-]} to
turn into quail-mode.  If you do not see the string @samp{[HEBREW]} in
the mode-line, then hit @kbd{M-s} and specify the package name
@samp{hebrew}.  @key{SPC} works as the completion key.  If you hit
@key{RET} without specifying a package name, the default package (shown
in the parentheses) will be used.

  The Hebrew keymap in quail-mode looks like this:

@example
1[2]![0]  2[2]@[0]  3[2]#[0]  4[2]$[0]  5[2]%[0]  6[2]^[0]  7[2]&[0]  8[2]*[0]  9[2]([0]  0[2])[0]  [2]-_[0]  [2]=+[0]  [2];~[0]  [2]\|[0]           
 [2]/[0]Q  [2]'[0]W  [2],Hw[0](BE  [2],Hx[0](BR  [2],H`[0](BT  [2],Hh[0](BY  [2],He[0](BU  [2],Ho[0](BI  [2],Hm[0](BO  [2],Ht[0](BP  [2][{[0]  [2]]}[0]                  
  [2],Hy[0](BA  [2],Hc[0](BS  [2],Hb[0](BD  [2],Hk[0](BF  [2],Hr[0](BG  [2],Hi[0](BH  [2],Hg[0](BJ  [2],Hl[0](BK  [2],Hj[0](BL  [2],Hs(B:[0]  [2],"[0]                     
   [2],Hf[0](BZ  [2],Hq[0](BX  [2],Ha[0](BC  [2],Hd[0](BV  [2],Hp[0](BB  [2],Hn[0](BN  [2],Hv[0](BM  [2],Hz(B<[0]  [2],Hu(B>[0]  [2].?[0]                        
@end example

  With @key{SFT} keys, you can input upper case ASCII characters even
in hebrew inputing mode.  To input lower case ASCII characters, you have 
to exit hebrew mode by @kbd{C-]}.  To  exit quail-mode, hit  @kbd{C-]}
once again.

  For the detail of the Quail system, see @xref{Usage of Quail, , ,
quail}.

@comment ------------------------------------------------------------
@node Hebrew Cut and Paste, , Inputing Hebrew, Hebrew
@subsection Hebrew Cut and Paste

  Use @kbd{C-d} to delete the character under the cursor.

  @key{DEL} key behave differently according to the value of
@code{display-direction}: if the value is @code{nil} (aligned to left),
it deletes a character on the left of the cursor; if the value is
non-@code{nil} (aligned to right), it deletes a character on the right
of the cursor.  If the @code{display-direction} and the input character
direction are the same, lastly input character can be deleted with
@key{DEL} key, no matter what the value of @code{display-direction} is.

  The following four commands remove the specified stretch of string and
put it in the @code{kill-ring}:

@example
@kbd{M-d}   or @kbd{M-x visual-kill-word}
@kbd{M-DEL} or @kbd{M-x visual-backward-kill-word}
@kbd{C-k}   or @kbd{M-x visual-kill-line}
@kbd{C-w}   or @kbd{M-x visual-kill-region}
@end example

  @kbd{M-w} (or @kbd{M-x visual-copy-region-as-kill}) also puts the
specified stretch of string in the @code{kill-ring}, but the original
text is left unchanged.

  The strings in the @code{kill-ring} can be reinserted in buffer by
@kbd{C-y} (or @kbd{M-x visual-yank}) and @kbd{M-y} (or @kbd{M-x
visual-yank-pop}).

  Make sure that you are in quail-mode with Hebrew package when you kill
or yank something, otherwise unexpected region might be deleted or a
garbage string might be inserted in the buffer.

@comment ============================================================
@node Arabic Script Languages, Ethiopic Languages, Hebrew, Top
@section Arabic Script Languages

  Mule supports Arabic and Farsi (Persian).  In this section we describe
How to display, input and edit these Arabic Script Languages.  To make
Arabic script the primary environment, the following line should be
included in the @file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'arabic)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Arabic text, see the online manual @samp{m2ps(1)} and
@xref{Top, , m2ps, m2ps}.

  Please note that the current version of m2ps does not support r2l
printing direction (aligned to right).  Even if you try to print a file
which was created in a right-aligned buffer, it will be printed in
left-aligned.  In the worst cases, you will get wrong word order in the
hardcopy.

@menu
* Arabic Character Set::
* Arabic-mode::
* Display-direction in Arabic-mode::
* Inputing Arabic Characters::
* Arabic Cut and Paste::
@end menu

@comment ------------------------------------------------------------
@node Arabic Character Set, Arabic-mode, , Arabic Script Languages
@subsection Arabic Character Set

  Mule uses its own Arabic code and Arabic Fonts.  You have to start
Mule as an X client, i.e., without the @samp{-nw} option, to use Arabic.
Mule requires the following three fonts to display Arabic:

@example
@file{etl??-arabic0.bdf}       Arabic Digits
@file{etl??-arabic1.bdf}       Narrow Characters (alif, etc.)
@file{etl??-arabic2.bdf}       Wide Characters (siin, etc)
@end example

  The @samp{??} part indicates the font size.  You will find 16 pixels
fonts and 24 pixels fonts on Mule FTP sites.

  Furthermore, you have to increase Mule's line spaces because the
heights of Arabic characters vary greatly.  If you are using 16 pixels
fonts, start up Mule with:

@example
@samp{% mule -lsp 0+9}
@end example

Or if you are using 24 pixels fonts, start up Mule with:

@example
@samp{% mule -lsp 0+12}
@end example

  If the fonts are properly installed, you should be able to read the
following famous words:

@quotation
[2](3U(4?(3G![;=!8RYa(4Z(3&[0](B
@end quotation

  For the Arabic non-spacing marks, only two of them, i.e., hamza and
madda, are available up to now.  Any other marks, e.g. fatHa (short
`a'), Damma (short `u'), kasra (short `i'), shadda (doubling sign),
sukuun (pure consonant sign), waSla (joining hamza), etc., cannot be
displayed.  It seems that short vowels and waSla are not necessary to
write ordinary Arabic text, but shadda is often marked in today's
printings.  Please let us know if shadda is really indispensable, in
that case we will try to implement it.

@comment ------------------------------------------------------------
@node Arabic-mode, Display-direction in Arabic-mode, Arabic Character Set, Arabic Script Languages
@subsection Arabic-mode

  You use @dfn{arabic-mode} to input and edit Arabic texts.  This
section describes the features of arabic-mode in detail.

  Hit @kbd{C-]} to enter arabic-mode.  Whenever you are in arabic-mode,
you are also in @dfn{visual-mode}.  Hitting @kbd{C-]} again brings you
back from arabic-mode, but you are still in visual-mode.  Hitting
@kbd{C-]} in visual-mode brings you into arabic-mode.  You can exit
visual-mode by hitting @kbd{C-c C-c}.  See the figure below:

@example
                           C-c C-c
     +----------------------------------------------+
     |   +--------------------+                     |
     |   |      C-c C-c       |                     |
     V   V                    |                     |
+-------------+         +-----------+   C-]   +-----------+
|             |   C-]   |arabic-mode| ------> |           |
|initial state| ------> |    and    |         |visual-mode|
|             |         |visual-mode| <------ |           |
+-------------+         +-----------+   C-]   +-----------+
@end example

  The string @samp{Arabic L2R} or @samp{Arabic R2L} in the mode-line
means that you are in both arabic-mode and visual-mode.  If you see
@samp{L2R} or @samp{R2L} but not @samp{Arabic} in the mode-line, you are
in visual-mode but not in arabic-mode.

@comment ------------------------------------------------------------
@node Display-direction in Arabic-mode, Inputing Arabic Characters, Arabic-mode, Arabic Script Languages
@subsection Display-direction in Arabic-mode

  In Mule, each buffer has a buffer local variable called
@code{display-direction}.  If this variable is set to @code{nil} (this
is the default), the lines begin from the left edge of the screen.  On
the other hand, if @code{display-direction} is non-@code{nil}, the lines
are aligned to the right and texts are written from right to left.

  For the detail of @code{display-direction} and the cursor motion in
arabic- and visual-mode, see @xref{Top, , Right-to-left writing, R2L}.

@comment ------------------------------------------------------------
@node Inputing Arabic Characters, Arabic Cut and Paste, Display-direction in Arabic-mode, Arabic Script Languages
@subsection Inputing Arabic Characters

  In arabic-mode, you can input Arabic characters and Arabic digits from
keyboard.  Two keyboard layouts are provided to input Arabic characters.
You can select whichever you like.  When you are in Arabic-mode, you can
see the keyboard layout by @kbd{C-z}.

  The first keyboard layout was contributed by a Farsi speaker.  It looks 
like this:

@example
                    +-------------------+
                    | shifted      alt  |
                    | unshifted   ASCII |
                    +-------------------+

+----------------------------------------------------------------+
|[2](3"[0](B   |    |    |    |    |    |    |    |[2](3#[0](B   |[2](3$[0](B   |    |    |    |
|(2"(B  1|(2#(B  2|(2$(B  3|(2%(B  4|(2&(B  5|(2'(B  6|(2((B  7|(2)(B  8|(2*(B  9|(2!(B  0|   -|   =|   `|
+----------------------------------------------------------------+
  |    |    |    |    |    |    |    |    |    |    |    |    |
  |[2](4A[0](B q|[2](4=[0](B w|[2](4S[0](B e|[2](4Q[0](B r|[2](4O[0](B t|[2](4M[0](B y|[2](3Z[0](B  u|   i|[2](41[0](B o|[2](4-[0](B p|[2](4)[0](B [|[2](4g[0](B ]|
  +-------------------------------------------------------------+
    |    |    |    |[2](4e[0](B  |[2](3.[0](B   |    |    |    |    |  [2](4k[0](B|    |[2](3,[0](B   |
    |[2](49[0](B a|[2](45[0](B s|[2](4_[0](B d|[2](4#[0](B f|[2](38[0](B  g|[2](4%[0](B h|[2](4Y[0](B j|[2](4[[0](B k|[2](3T[0](B  l|[2](4U[0](B ;|   '|   \|
    +-----------------------------------------------------------+
      |    |    |    |[2](30[0](B  [2](3-[0](B|[2](3h[0](B   |    |    |[2](3*[0](B   |[2](3+[0](B   |[2](3)[0](B   |
      |[2](4I[0](B z|[2](4E[0](B x|[2](3D[0](B  c|[2](3B[0](B  v|[2](3H[0](B  b|[2](3F[0](B  n|[2](3^[0](B  m|[2](3%[0](B  ,|[2](3&[0](B  .|   /|
      +-------------------------------------------------+
@end example

  To use this keyboard layout, include the following line in your
@file{~/.emacs} file:

@lisp
(setq arabic-input-keymap 'arabic-key-1)
@end lisp

  The second layout is based on phonetic transcription and looks like
the following:

@example
       Left  : ASCII-mode   Right : arabic-mode
       Upper : shifted      Lower : unshifted

+----------------------------------------------------------------+
|! [2](3"[0](B |@   |#   |$   |%   |^   |&   |*   |( [2](3#[0](B |) [2](3$[0](B |_   |+   |~ [2](3+[0](B |
|1 (2"(B |2 (2#(B |3 (2$(B |4 (2%(B |5 (2&(B |6 (2'(B |7 (2((B |8 (2)(B |9 (2*(B |0 (2!(B |-   |=   |` [2](4M[0](B|
+----------------------------------------------------------------+
  |Q   |W   |E   |R   |T [2](4E[0](B|Y   |U   |I   |O   |P   |{   |}   |
  |q [2](4S[0](B|w [2](3^[0](B |e   |r [2](3F[0](B |t [2](4%[0](B|y [2](4_[0](B|u   |i   |o [2](3<[0](B |p   |[   |]   |
  +-------------------------------------------------------------+
    |A [2](4][0](B|S [2](4=[0](B|D [2](4A[0](B|F   |G [2](4O[0](B|H [2](4-[0](B|J   |K [2](41[0](B|L   |: [2](3'[0](B |" [2](3-[0](B || [2](3,[0](B |
    |a [2](38[0](B |s [2](45[0](B|d [2](3B[0](B |f [2](4Q[0](B|g   |h [2](3Z[0](B |j [2](4)[0](B|k [2](4U[0](B|l [2](4Y[0](B|; [2](3([0](B |' [2](3*[0](B |\   |
    +-----------------------------------------------------------+
      |Z [2](4I[0](B|X   |C   |V   |B   |N   |M   |<   |>   |? [2](3)[0](B |
      |z [2](3H[0](B |x [2](3D[0](B |c [2](4'[0](B|v   |b [2](4#[0](B|n [2](4[[0](B|m [2](3T[0](B |, [2](3%[0](B |. [2](3&[0](B |/ [2](49[0](B|
      +-------------------------------------------------+

COMBINATIONS:
a ~      madda above alif
a '      hamza above alif
w '      hamza above waaw
a ' '    hamza below alif
y '      hamza above yaa
"        isolated hamza
@end example

  To use this keyboard layout, include the following line in your
@file{~/.emacs} file:

@lisp
(setq arabic-input-keymap 'arabic-key-0)
@end lisp

  No matter which layout you use, appropriate ligature is automatically
generated whenever a character is input.  The special ligature for
@samp{laam} + @samp{alif} will be generated whenever an @samp{alif} is
input on the left of a @samp{laam}.  If you want to cut the connection
between two adjacent Arabic characters, type a @kbd{|} (vertical bar) at
that point in arabic-mode.  An input of a character preceded by a
@kbd{|} produces a glyph which is not connected to its right adjacent.
Typing a @kbd{_} (underscore) connects the two characters at that point,
if possible.

  When @code{display-direction} is @code{nil} (i.e., lines are aligned to
left), the cursor stays at the same position after an Arabic character
is inserted. It moves to the right after an Arabic digit or an ASCII
character is inserted.

  When @code{display-direction} is non-@code{nil} (i.e., lines are
aligned to right), the cursor moves to the left after an Arabic
character is inserted. It stays at the same position after an Arabic
digit or an ASCII character is inserted.

  To input ASCII characters or ASCII digits, you have to exit
arabic-mode by hitting @kbd{C-]}.

@comment ------------------------------------------------------------
@node Arabic Cut and Paste, , Inputing Arabic Characters, Arabic Script Languages
@subsection Cut and Paste

  Use @kbd{C-d} to delete the character under the cursor.  If you are in
arabic-mode, the necessary ligature will be re-generated after the
character is deleted.

  @key{DEL} key behave differently according to the value of
@code{display-direction}: if the value is @code{nil} (aligned to left),
it deletes a character on the left of the cursor; if the value is
non-@code{nil} (aligned to right), it deletes a character on the right
of the cursor.  If the @code{display-direction} and the input character
direction are the same, lastly input character can be deleted with
@key{DEL} key, no matter what the value of @code{display-direction} is.

  The following four commands remove the specified stretch of string and
put it in the @code{kill-ring}:

@example
@kbd{M-d}   or @kbd{M-x arabic-kill-word}
@kbd{M-DEL} or @kbd{M-x arabic-backward-kill-word}
@kbd{C-k}   or @kbd{M-x arabic-kill-line}
@kbd{C-w}   or @kbd{M-x arabic-kill-region}
@end example

  @kbd{M-w} (or @kbd{M-x arabic-copy-region-as-kill}) also puts the
specified stretch of string in the @code{kill-ring}, but the original
text is left unchanged.

  The strings in the @code{kill-ring} can be reinserted in buffer by
@kbd{C-y} (or @kbd{M-x arabic-yank}) and @kbd{M-y} (or @kbd{M-x
arabic-yank-pop}).

  Make sure that you are in arabic-mode when you kill or yank something,
otherwise ligature is not maintained, or in the worst case, unexpected
region will be deleted or a garbage string will be inserted in the
buffer.

@comment ============================================================
@node Ethiopic Languages, IPA, Arabic Script Languages, Top
@section Ethiopic Languages

  This section describes how to read and write Ethiopic languages (Ge'ez
script languages) in Mule.  To make Ethiopic the primary environment,
the following line should be included in the
@file{$MULE/lisp/site-init.el} file at the compile time:

@lisp
(set-primary-environment 'ethio)
@end lisp

  If your system administrator did not do this setting, you have to
include the above line in your @file{~/.emacs} file.

  To print Ethiopic text, see the online manual @samp{m2ps(1)} and
@xref{Top, , m2ps, m2ps}.

@menu
* Ethiopic Fonts::
* Editing Ethiopic Text::
* ASCII Transcription for Ethiopic::
* Ethiopic Mail::
* Configuration for Ethiopic::
* Function Keys for Ethiopic::
@end menu

@comment ------------------------------------------------------------
@node Ethiopic Fonts, Editing Ethiopic Text, , Ethiopic Languages
@subsection Ethiopic Fonts

  Currently only 16 dot font is available for displaying Ethiopic.  You
can get it from Mule's FTP sites.  The name of the font is
@samp{ethiom16d75.bdf}.

  You must invoke Mule as an X client if you want to use Ethiopic.
First, make sure that the environment variable DISPLAY is properly set.
Then invoke Mule from a shell window with the following command :

@example
% mule -fn 16
@end example

  If the Ethiopic font has been properly installed, you should be able
to read the following text:

@quotation
$(2"g!)"K"^"<(B "Taste of Ethiopia"

$(2"g"S#9!6(B $(2#J"8(B $(2"X!f$2!4(B $(2!!!)#<#9!6(B $(2$$"&!A!1(B $(2!&!."((B

$(2$$!+"#!D!!#"!V(B $(2!Q"X"`!&(B $(2"S$)!a!W!^!d(B $(2!)"+!g!^$R(B

- $(2"\!!!V(B $(2!F!6"8#'(B $(2$$!U"@(B $(2"$#%!V(B
- $(2"\!!!V(B $(2!F!6"8#'(B $(2!a"8(B $(2$$"H!f"'(B $(2#E$)!f!.(B $(2$$#9!F"H(B $(2"$#%!V(B
- $(2"S!f"((B $(2!Q"h!&(B $(2$$"H"q!6(B $(2!.!f"i$'(B $(2!E"i$)!f#>(B $(2$J#J"#!6(B
- $(2"S!."H!V(B $(2!F!6"8#'(B $(2!/#&(B $(2$'!!(B $(2#J"^(B

$(2$W(B) $(2$$!U"@(B $(2"$#%!R(B $(2!A"\!!!V(B $(2!Q"h!&(B $(2!F!6"8#'(B $(2#J"^(B $(2!Q!G"l!W(B $(2$)#!!)".!&$P(B

$(2$X(B) $(2$$"H!f"'#J(B $(2#E$)!.(B $(2$$#9!F"D(B $(2"$#%!V(B $(2#>!,!9(B $(2$$"H"q!6(B $(2!)!f"i$'(B $(2!E"i$)!f#>(B
$(2$J#J"#!6(B $(2$)#9!D!A!V!d(B $(2!A!F!%!f"#!6(B $(2#J"H"0(B $(2!Q#H"`")(B $(2!A"F"`!f(B $(2#J"H"0(B 
$(2$)#!!)".!&$P(B

$(2$Y(B) $(2"\!!!R(B $(2!B"m#K!^(B $(2!Q"g"(!a#J(B $(2"g(B2 $(2"X"H"g(B 3 $(2#!!f(B $(2"X!f"%$'#!!2(B $(2$)#!!)".!"$P(B

$(2$Z(B) $(2#!!b(B $(2"g"#!1"H(B $(2!A"e!$(B $(2#!"H(B $(2!Q!F!'(B $(2$$#!!1!1#J!f(B $(2#J"^(B $(2"g"\!!!R!.(B $(2"F"`!g!^(B $(2#J"H"0(B
$(2!,"@"C"H$P(B

$(2$[(B) $(2"\!!!R!.(B $(2"X"`!&(B ($(2!U"@(B $(2"X!d(B $(2"H!f"'(B/$(2#9!F"H(B) $(2"S#!!$#&!'(B $(2!)!!#J"H!d(B $(2"X"`!"(B $(2"h"@(B 
$(2"X"H"i!&(B $(2"(!1"H(B $(2!!(B2 $(2"C#b!V(B $(2$'"`!&(B $(2!,"H#!!)"0$P(B

$(2$\(B) $(2"g!s$'(B $(2!A"e!$(B 425 $(2"%#>!3"H(B F $(2!A!/#!(B $(2!)#<#9!3$'(B $(2"S$$!6(B $(2"X!f"&$)#9!D(B $(2!W!'(B
$(2"X$$"g"#!b(B $(2"X!f$2!4#J!f(B $(2!)#<#9!6$P(B
@end quotation

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the Ethiopic characters must be exactly twice
as wide as the ASCII characters.  For the detail of font specification,
see @xref{Font, , Font, mule}.

@comment ------------------------------------------------------------
@node Editing Ethiopic Text, ASCII Transcription for Ethiopic, Ethiopic Fonts, Ethiopic Languages
@subsection Editing Ethiopic Text

@menu
* Quail-mode for Ethiopic::
* Fidel Input::
* Ethiopic Punctuation Input::
* Ethiopic Numeric Input::
* Ethiopic Special Characters::
@end menu

@comment ............................................................
@node Quail-mode for Ethiopic, Fidel Input, , Editing Ethiopic Text
@subsubsection Entering and Leaving Ethiopic mode

  Use the Quail system to input Ethiopic.  Hit @kbd{C-]} to enter
quail-mode.  If you do not see the string @samp{ETHIO} in the mode-line,
then hit @kbd{M-s} and specify the package name @samp{ethio}.  @key{SPC}
works as the completion key.  If you hit @key{RET} without specifying a
package name, the default package (shown in the parentheses) will be
used.  To exit quail-mode, hit @kbd{C-]} once again.

  For the detail of the Quail system, see @xref{Usage of Quail, , ,
quail}.

@comment ............................................................
@node Fidel Input, Ethiopic Punctuation Input, Quail-mode for Ethiopic, Editing Ethiopic Text
@subsubsection Fidel Input

$(2"[(B. About Consonants

  In quail-mode with the Ethipic package, you can input Ethiopic
characters from the alphabetic region of the keyboard.  To input ASCII
characters you have to exit ethiopic-mode by hitting @kbd{C-]}.  A table
of the first form consonants from the extended Fidel is given in the
table below.  The key assignments are made to the closest phonetical
match between the Ethiopic and Latin letters.

@example
he  =  $(2"[(B     `ke =  $(2"g(B
le  =  $(2!!(B     Ke  =  $(2"s(B
He  =  $(2#{(B     Xe  =  $(2#t(B
me  =  $(2!)(B     we  =  $(2#E(B
`se =  $(2#Q(B     `e  =  $(2#_(B
re  =  $(2!1(B     ze  =  $(2!q(B
se  =  $(2"C(B     Ze  =  $(2!y(B
xe  =  $(2!9(B     ye  =  $(2$$(B
qe  =  $(2#!(B     de  =  $(2"#(B
Qe  =  $(2#-(B     De  =  $(2$+(B
be  =  $(2!A(B     je  =  $(2$2(B
ve  =  $(2!I(B     ge  =  $(2#9(B
te  =  $(2!Q(B     Ge  =  $(2$9(B
ce  =  $(2!Y(B     Te  =  $(2"+(B
`he =  $(2#f(B     Ce  =  $(2"3(B
ne  =  $(2!a(B     Pe  =  $(2$@(B
Ne  =  $(2!i(B     Se  =  $(2"K(B
e,a =  $(2"S(B     `Se =  $(2#X(B
ke  =  $(2"g(B     fe  =  $(2";(B
@end example

  Characters beginning with @samp{`} are usually a phonetic twin of some
other letter in the Fidel and may be represented with a @samp{2} as
shown below:

@example
s2e = `se = $(2#Q(B
@end example

  The extra character @samp{`} or @samp{2} is given to the twin that
occurs less commonly in typical modern writing.  The @samp{`} was found
to be more natural to read in Latin vs @samp{2} (@samp{2} will be easier
to type on some keyboards).

  In a few instances where uppercase keyboard letters would have no
Ethiopic assignment, these keys (B, F, J, L, M, R, V, and Y) were made
equivalent to their lowercase counter parts (i.e. L = l, m = M, etc).

$(2!!(B. About Vowels

  When a key corresponding to a consonant is first struck, you will see
the sixth form of the character appear on the screen with a small
underline, @samp{_}.  You may then type a vowel to modify the syllabic
form of the consonant, or type any non-vowel character to terminate the
entry of the letter (the underline goes away).  The new character typed
will also appear on the screen.  A small table for the input system is
given now :

@example
Consonants:
me   mu   mi   ma   mE   m    mo   mWa
$(2!)(B   $(2!*(B   $(2!+(B   $(2!,(B   $(2!-(B   $(2!.(B   $(2!/(B   $(2!0(B

Independent Vowels:
a/e  u/U  i    A    E    I   o/O   e3
$(2"S(B   $(2"T(B   $(2"U(B   $(2"V(B   $(2"W(B   $(2"X(B   $(2"Y(B   $(2"Z(B

Independent Vowels Following a 6th Form Consonant:
         l'a   l'u   l'i   l'A   l'E   l'I   l'o
also --> l'e   lU    l'i   l'A   l'E   lI    lO
         $(2!&"S(B  $(2!&"T(B  $(2!&"U(B  $(2!&"V(B  $(2!&"W(B  $(2!&"X(B  $(2!&"Y(B 

Consonants With 12 forms:
hWe  hWu/hW'  hWi   hWa   hWE 
$(2"b(B     $(2"c(B     $(2"d(B    $(2"e(B    $(2"f(B
@end example

  [A NOTE ON FORMS 8 - 12] In different geographic regions, and at
different times within the same region, people have been taught two
different sounds for form 9 (@samp{$(2"c(B} in the above).  Phonetical keyed
input is permitted for both ways a person may have been taught.

  In some Ethiopian languages extend Fidel glyphs for labiovelar forms
are required.  This is known to be true for the Gurage languages in
particular.  The complete set of additional characters required for
these languages was not known to the makers of the Ethiopic extension
for Mule at the of this release.  Extended forms (8-12) of the @samp{w}
series are provided to model the labiovelar sounds with a base consonant
when a unique labiovelar glyph is not available for the consonant.  For
example : bWe -> $(2!F#L(B, pWE -> $(2$L#P(B.

  Once entered you may edit the vowel form of a letter by placing the
cursor over the letter you wish to change and striking @key{[F6]}. See
@xref{Function keys for ethiopic}.

@comment ............................................................
@node Ethiopic Punctuation input, Ethiopic Numeric Input, Fidel Input, Editing Ethiopic Text
@subsubsection Ethiopic Punctuation input

  All Ethiopic and Latin punctuations are available in quail-mode with
the Ethiopic package.  The Ethiopic punctuations may be entered by
typing the Latin equivalent from the keyboard.  Hitting the same
punctuation key twice will replace the Ethiopic version with the Latin.
A small table follows :

@example
.   ->  $(2$P(B 
,   ->  $(2$Q(B 
;   ->  $(2$R(B 
:   ->  $(2$S(B 
*   ->  $(2$T(B 
<<  ->  $(2$U(B  
>>  ->  $(2$V(B  
::  ->  $(2$O(B
@end example

  In the last 4 cases in the table, Ethiopic punctuation is entered
based upon the similarity between the appearence of the keyboard and
Ethiopic symbols.  The last item in the table is an input for an
Ethiopic word separator (a space @dfn{ }).  Here two keystrokes of the
the colon @key{:} key are required to enter the Ethiopic space, and 3
keystrokes of the colon are then required to return to the Latin
@samp{:}.

  You may use the space bar to enter Ethiopic spaces by first going into
an @dfn{Ethiopic space mode}.  To do so hit the @key{[F2]} key 2 times.
Notice in the mode-line indicator near the bottom of the editor that
each time you hit the @key{[F2]} key that the symbols @samp{_},
@samp{$(2$N(B}, and @samp{$(2$O(B} will change.  These are your space-mode indicators.
The first, @samp{_}, is the default for Latin font width blank spaces (8
pixels) the 2nd is for Ethiopic font width blank spaces (16 pixels) and
finally the last, @samp{$(2$O(B}, indicates to you that the space bar will
now use the Ethiopic word separator.

  You may change the word separator in a specified @dfn{region} of text
by @kbd{S-[F2]}.  Doing so will convert all blank spaces into the
Ethiopic word separators or, if you choose, to the double width Ethiopic
blank space.  You may convert among the 3 word separators within a
region of text at any time.

@comment ............................................................
@node Ethiopic Numeric Input, Ethiopic Special Characters, Ethiopic Punctuation Input, Editing Ethiopic Text
@subsubsection Ethiopic Numeric Input

  Both the Arabic (ASCII) and Ethiopic numerals are available in
quail-mode with the Ethipic package.  The Arabic numbers are the defualt
when you strike the number keys of the keyboard.  Enter the
@dfn{Ethiopic number mode} by pressing @key{[F1]}.  Notice that the
Arabic @samp{1} changes to the Ethiopic @samp{$(2$W(B} in the mode-line.
This is your numeral mode indicator.  Striking @key{[F1]} again returns
you to the @dfn{Arabic numeral mode}.

  Typing the number keys in Ethiopic numeral mode will render the
numerals on the screen.  You may enter Ethiopic numbers like Arabic
numbers with 0's to obtain the multiples of ten for numbers 1 - 9 up to
a multiple of 100,000.  This limit is chosen as it will be the largest
value that two numbers together may represent.

@comment ............................................................
@node Ethiopic Special Characters, , Ethiopic Numeric Input, Editing Ethiopic Text
@subsection Ethiopic Special Characters

  Special icons, glyphs, and ligatures may be available at the end of
your font's address table.  You may enter them on screen, and into your
document, with the @key{[F8]} key followed by a number.  For this moment
the available icons are African continent and the region in which Ge'ez
script is native to (collectively, the nations of Eritrea and Ethiopia).

@comment ------------------------------------------------------------
@node ASCII Transcription for Ethiopic, Ethiopic Mail, Editing Ethiopic Text, Ethiopic Languages
@subsection ASCII Transcription for Ethiopic

@menu
* Basic SERA::
* Mixed Script in SERA::
* Customising SERA::
@end menu

@comment ............................................................
@node Basic SERA, Mixed Script in SERA, , ASCII Transcription for Ethiopic
@subsubsection Basic SERA

  When written systematically, ASCII files (a file composed with the
characters avaialable from a common English keyboard) may be
interpretted by Mule and viewed as Ethiopic text.  Likewise, an Ethiopic
document may be written out by Mule into ASCII for importation
elsewhere.

  Mule uses @dfn{SERA} (System for Ethiopic Representation in ASCII) as
its Latin representation system of the Fidel to provide compatibility
with other networks and PC softwares, and to allow users without Mule
the ability to read easily Ethiopic documents composed with the editor.
Though independent from file I/O, SERA has been applied as the input
method (IM) for Mule as well, hence much of the system has already been
discussed.  Current documents on SERA with detailed explanation of the
system can be found in the @file{/pub/languages/ethiopia/email}
directory at the ftp.rpi.edu archive.

  A sample text of SERA is given below.  This is the transcription of
the text in @xref{Ethiopic Fonts}.

@example
kemeSehafu \"Taste of Ethiopia"\

ke'ager wC Injera lemegager yedabere lmd

yemidebalequt teIhl aynetocna meTenoc;

- hulet brCqo yeTEf duqEt
- hulet brCqo neC yesndE weynm yegebs duqEt
- and tekul yeskWar mnkiya bEkiyng pawder
- amst brCqo moq yale wha

\1) yeTEf duqEtu behulet tekul brCqo wha tebokto yqemeTal.

\2) yesndEw weym yegebsu duqEt gmaxe yeskWar menkiya bEkiyng
pawder ygebabetna beblEnder wsT tewahdo besahn wsT 
yqemeTal.

\3) huletu bukowoc tekednew ke2 Iske 3 qen Indiyaqeru yqemeTalu.

\4) qenu kederes behWala qes teblo yeqererewn wha kehuletum sahnoc wsT
mafses.

\5) huletum Ihl (TEf Ina sndE/gebs) aqelaqlo melewsna Ihlu kuf 
Iskil dres le2 se`at yahl masqemeT.

\6) keziya behWala 425 digris \F \ bemoqe megageriya ayer Indaygeba tolo
Iyekedenu Injerawn megager.
@end example

  If struck alone, @key{[F4]} will convert the entire document into
Ethiopic text.  It is assumed that the text begins in Ethiopic. If the
beginning of the document should start with Latin script, use @kbd{C-u
[F4]} to make the appropriate conversion.  You may also use @kbd{S-[F4]}
to convert only the specified region.  @kbd{[F5]}, @kbd{C-u [F5]}, and
@kbd{S-[F5]} converts back into SERA-Latin with the same rules applying
for @key{[F4]}.

@comment ............................................................
@node Mixed Script in SERA, Customising SERA, Basic SERA, ASCII Transcription for Ethiopic
@subsubsection Mixed Script in SERA

  There are some special rules that apply when you mix both Latin and
Ethiopic.  The rules will be more important when composing a SERA file
outside of Mule. At a glance, the escape rules given below may appear
inconsistent.  Their practical use should become apparent when working
with them, as they are designed in part to go naturally with their
frequency of use.

  @samp{\}, except followed by some special characters described below,
toggles the script interpretation mode (Ethiopic<->Latin).  An
alphabetic character may not be used as an escape sequence following the
@samp{\}.  The predefined escape sequences may have different
functions in the two script modes.  When followed by a blank space
@samp{ }, the script mode toggles and the space is deleted.

@table @asis
@item \\
Sends @samp{\} from either mode.

@item \.  \,  \;  \:
Sends the equivalent punctuation of the OTHER mode to the screen.

@item \_  \*  \<  \>  \1 ... \9
Sends the defined Ethiopic character from both modes.

@item \|  \'  \`
In Ethiopic mode @samp{|}, @samp{'} or @samp{`} is sent to the screen.
In Latin mode, the toggle is made to Ethiopic and @samp{|},@samp{`} or
@samp{'} is treated as the first char in the text segment and treated
with the normal rules (i.e. just the stanard toggle into Ethiopic).

@item \~x
If @samp{x} is undefined in application, then @samp{x} is ignored. and
nothing appears when transliterated.  Also true if @samp{x} is a blank
space @samp{ }.

@item \~e  \~E  \~a  \~A
Sends the icon of Ge'ez Homelands, its inverse image, African continent and
its invers image, respectively.
@end table

@comment ............................................................
@node Customising SERA, , Mixed Script in SERA, ASCII Transcription for Ethiopic
@subsubsection Customising SERA

  Fidel is a highly phonetical script set, but not perfect.  In a few
instances among the languages that use Fidel for its written script, a
letter will not have a sound consistant with its form class.  The
clearest example for this is in Amharic where the first form @dfn{h}s
will have a sound equivalent to that of the fourth form (@samp{$(2"[(B},
@samp{$(2#{(B}, @samp{$(2#f(B} sound the same as @samp{$(2"^(B}, @samp{$(2#~(B}, @samp{$(2#i(B}).
To model in Latin the different sounds associated with a particular
Fidel member, SERA allows for duplicity of the Latin representation.
One such important instance is the choice of @samp{e} AND @samp{a} to
represent the first lone vowel letter @samp{$(2"S(B}.  @samp{a} is the
natural choice in Amharic and @samp{e} is more logical in most
languages.  Both @samp{a} and @samp{e} are recoginized for @samp{$(2"S(B}
when converting Latin->Ethiopic; but the user must decide on a choise of
@samp{a} or @samp{e} for converting Ethiopic->Latin.

  The default conversion in mule is to write @samp{$(2"S(B} as @samp{a}.  You
may set Mule to always convert @samp{$(2"S(B} as @samp{e} by adding the line
below to your @file{~/.emacs} file:

@lisp
(setq ethio-use-tigrigna-style t)
@end lisp

  As discussed before (@xref{Fidel Input}), the natural choise of
@samp{Wu} or @samp{W'} for 9th form characters will differ between
people.  @samp{Wu} is the default conversion into Latin, but you may
change this to @samp{W'} by adding the following line to your
@file{~/.emacs} file:

@lisp
(setq ethio-W-sixth-always t)
@end lisp

  SERA also permits @samp{'} as a separator between two Latin vowels
when the user thinks it aids clarity.  The deault in Mule is not to
insert @samp{'} between vowels, you may change this by again adding the
following line to your @file{~/.emacs} file:

@lisp
(setq ethio-quote-vowel-always t)
@end lisp

  As discussed before (see @xref{Ethiopic Numeric Input}), Ethiopic
numerals may be written in several forms and interpreted in the same
way.  Likewise you have these same choices for SERA output.

  For example, consider the Latin sequence @samp{\10\9\100\80\7} for
@samp{$(2$`$_$i$g$](B}.  The Latin form is considered to be in the lowest
level of reduction, or @dfn{reduction-level 0}.  You can choose to write
out in reduction-level 0 by including the following line in your
@file{~/.emacs} file:

@lisp
(setq ethio-numeric-reduction 0)
@end lisp

  The next level in reduction is the form @samp{\109100807} which can be
set by:

@lisp
(setq ethio-numeric-reduction 1)
@end lisp

  The final level in reduction is the form @samp{\10900807} which can be
set by:

@lisp
(setq ethio-numeric-reduction 2)
@end lisp

  These three reduction levels for numbers are offered, because it can
not be known at this time which may ultimately become the preferred
form.

  Finally, when you save a file to disk, Mule will write the file in the
*junet* coding system by default.  (See @xref{Coding-system, , , mule}.)
If you would prefer to save the file in SERA style Latin always, add the
following two lines to your @file{~/.emacs} file:

@lisp
(add-hook 'write-file-hooks 'fidel-to-sera-for-disksave)
(add-hook 'after-save-hook 'sera-to-fidel-for-disksave)
@end lisp

@comment ------------------------------------------------------------
@node Ethiopic Mail, Configuration for Ethiopic, ASCII Transcription for Ethiopic, Ethiopic Languages
@subsection Ethiopic Mail

  By default, Mule uses the *junet* coding-system for sending and
receiving mail.  It is a 7-bit coding with escape sequences, so there
should be no difficulty in mail transmission unless the code @samp{ESC}
is not removed by MTA (mail transfer agent).

  Nonetheless, it would be safer to use the SERA format for mail
transmission.  In addition to the safety, users who do not have Mule
will benefit from using SERA for mail.

  If you include the line

@lisp
(add-hook 'mail-send-hook 'fidel-to-sera-mail)
@end lisp

in your @file{~/.emacs} file, Ge'ez characters in mail body will be
automatically converted into SERA when you send mail from mail-mode.
You can write mail in the Ge'ez script and send it as if it were written
in SERA.  The marker @samp{<ethiopic>} is automatically inserted at the
beginning of mail body so that the mail receiver can read it in Ge'ez,
even without Mule, by using @code{eview} program.

  Likewise, if you include the line

@lisp
(add-hook 'rmail-show-message-hook 'sera-to-fidel-mail-for-hook)
@end lisp

in your @file{~/.emacs} file, all mails that contain the
@samp{<ethiopic>} marker are automatically converted into the Ge'ez
script when you read them with @code{rmail}.

  When you receive mail in SERA but without @samp{<ethiopic>}, you can
convert it into Ge'ez by hitting @kbd{C-[F4]}.  This key is always
active (otherwise overridden by other mode).  You can use it even
without setting the hooks above.  @kbd{C-[F4]} first searches the marker
@samp{<ethiopic>} and the termination marker @samp{<>}.  If found, only
the portion between the two markers is converted in Ge'ez.  Otherwise it
skips the header part by looking for the first blank line, then convert
the rest of the buffer.  If there is no blank line, it prints a message
and no conversion is done.

@comment ------------------------------------------------------------
@node Configuration for Ethiopic, Function Keys for Ethiopic, Ethiopic Mail, Ethiopic Languages
@subsection Configuration for Ethiopic

  To use Ethiopic most easily, you may want to create the
@file{~/.emacs} file in your home directory that contains the following
line:

@lisp
(set-primary-environment 'ethio)
@end lisp

  Here are the lines that you might want to include in your
@file{~/.emacs} file:

@table @asis
@item (setq ethio-use-tigrigna-style t)
Writes SERA output with @samp{e} in place of @samp{a} for the first 
form vowel @samp{$(2"S(B}.

@item (setq ethio-quote-vowel-always t)
When writing SERA output @samp{'} is inserted between two adjacent
vowels.

@item (setq ethio-W-sixth-always t)
Writes SERA output with 9th form Fidel characters represented
with @samp{W'} and not @samp{Wu}.

@item (setq ethio-numeric-reduction #)
Sets level of reduction for numeral representation in SERA.  @samp{#}
must be replaced by 0, 1 or 2.  The Ethiopic number @samp{$(2$[$i(B} will be
@samp{\5\100} if # is 0, @samp{\5100} if 1, @samp{\500} if 2.

@item (add-hook 'rmail-show-message-hook 'sera-to-fidel-mail-for-hook)
When in rmail-mode will convert Ethiopic email marked by
@samp{<ethiopic>} immediately into Ge'ez text without waiting for the
@kbd{C-@key{[F4]}} key to be struck.

@item (add-hook 'mail-send-hook 'fidel-to-sera-mail)
Will convert Ge'ez email into SERA when send it out from mail-mode.

@item (add-hook 'write-file-hooks 'fidel-to-sera-for-disksave)
@itemx (add-hook 'after-save-hook 'sera-to-fidel-for-disksave)
Will save file to disk in SERA Latin instead of the *junet*
coding-system.  These two hooks must be used together.
@end table

@comment ------------------------------------------------------------
@node Function keys for Ethiopic, , Configuration for Ethiopic, Ethiopic Languages
@subsection Function keys for Ethiopic

Some function keys have been mentioned in the above.  A complete list
of the function keys available is presented separately here.

@table @asis
@item @key{[F1]} or @kbd{M-x ethio-toggle-digit}
toggles Arabic digit input and Ethiopic digit input.  The current input
mode is indicated by the character @samp{1} or @samp{$(2$W(B} in the mode
line, next to the @samp{ETHIO} string.  In Ethiopic mode, you can input
up to 1000000 (\1000000) by continuous zeros.  To input 2000000
(\2000000), for example, you have to type @samp{21000000}.  The default
is Arabic digit.  (Available only in quail-mode.)

@item @key{[F2]} or @kbd{M-x ethio-toggle-space}
toggles space characters (one of the three below) for keyboard
input.

@enumerate a
@item
@samp{ } - Single width ASCII space.  Mode line Indicator is @samp{_}.

@item
@samp{$(2$N(B}  - Double width Ethiopic blank.  Mode line Indicator is @samp{$(2$N(B}.

@item
@samp{$(2$O(B}  - Ethiopic word separator.  Mode line Indicator is @samp{$(2$O(B}.
@end enumerate

Each time you hit @key{[F2]}, the space character changes a -> b -> c ->
a and so on.  The default is ASCII space.  (Available only in
quail-mode.)

@item @key{[F3]} or @kbd{M-x ethio-toggle-punctuation}
toggles Latin punctuation input and Ethiopic punctuation input.  The
mode line indicator is @samp{.} (Latin) and @samp{$(2$P(B} (Ethiopic).  The
default is Ethiopic punctuations.  (Available only in quail-mode.)

@item @key{[F4]} or @kbd{M-x sera-to-fidel-buffer}
performs SERA to Fidel conversion in the current buffer.  It assumes
that the buffer begins in Ethiopic.  To convert a text which begins in
Latin, use @kbd{C-u @key{[F4]}}.  You can continuously enter any large
Ethiopic numbers, for example,
\5500000000000000000000000000000700000000000000000000.

@item S-@key{[F4]} or @kbd{M-x sera-to-fidel-region}
performs SERA to Fidel conversion in the specified region.  It always
assumes that the region begins in Ethiopic.  (@kbd{C-u S-@key{[F4]}}
does not work as you expected.)

@item @key{[F5]} or @kbd{M-x fidel-to-sera-buffer}
performs Fidel to SERA conversion in the current buffer.  The converted
text begins in Ethiopic mode. (If the first character of the original
text is a Latin alphabet, @samp{\ } will be inserted at the beginning to
turn into Latin mode.)  To produce a SERA text that begins in Latin, use
@kbd{C-u @key{[F5]}}.  By default, the first lone vowel @samp{$(2"S(B} is
transcribed by @samp{a}.  If you want it to be @samp{e}, put the
following line in your .emacs file:

@lisp
(setq ethio-use-tigrigna-style t)
@end lisp

Also by default, the lone vowels are preceded by an apostrophe
@samp{'} only if the preceding character is a 6th form consonant.
If you want the lone vowels always preceded by an apostrophe,
put the following line in your @file{~/.emacs} file:

@lisp
(setq ethio-quote-vowel-always t)
@end lisp

@item S-@key{[F5]} or @kbd{M-x fidel-to-sera-region}
performs Fidel to SERA conversion in the specified buffer.  It always
produces a SERA text that begins in Ethiopic mode.  (@kbd{C-u
S-@key{[F5]}} does not work as you expected.)

@item @key{[F6]} or @kbd{M-x ethio-modify-vowel}
is the vowel modification key.  Hit this key when the cursor is on a
Fidel letter.  Then you will be asked a new vowel.  Hit one of the seven
characters below from the keyboard:

@example
e  u  i  a  E  '  o
@end example

You will get a new letter whose consonant is the same as the
original, but with the new vowel that you selected.  An
apostrophe @samp{'} changes the character to the sixth form (lone
consonant).

If the cursor is on the Wa-form of letter having only 8 forms, selecting
a vowel other than @samp{a} changes the original into the combination of
two characters, namely, the sixth form of the original character and the
wW utility letter whose vowel is the newly selected one. See @xref{Fidel 
Input}.

@item @key{[F7]} or @kbd{M-x ethio-replace-space}
replaces the spaces between two Ethiopic characters in the specified
region.  You will be asked the new space character.  Answer by typing 1,
2 or 3.  1 means the single width ASCII space.  2 means the double width
Ethiopic blank.  3 means the traditional Ethiopic word separater.  This
command is independent from the space selection for keyboard input.

@item @key{[F8]} or @kbd{M-x ethio-input-special-character}
inputs graphical images in font file.  A menu will appear in
mini-buffer.
@end table

@comment ============================================================
@node IPA, , Ethiopic Languages, Top
@section IPA

  International Phonetic Alphabet (IPA for short) is not a language, but
we describe its usage in Mule here as a matter of convenience.

  To print text that contains IPA characters, see the online manual
@samp{m2ps(1)} and @xref{Top, , m2ps, m2ps}.

@menu
* IPA Character Set::           IPA Characters and IPA Fonts
* Inputing IPA::                Quail Package for IPA
@end menu

@comment ------------------------------------------------------------
@node IPA Character Set, Inputing IPA, , IPA
@subsection IPA Character Set

  Mule defines a private character set to represent a subset of 1989's
version of IPA.  It consists of the consonant signs used in English,
French, German and Italian, and all vowels signs in the table.  For the
detail of the included characters, see @xref{Inputing IPA}.

  To use this character set, you have to start Mule as an X client.  The
fonts for this purpose are found in Mule's FTP sites.  Their names are:

@example
@file{etl14-ipa.bdf}
@file{etl16-ipa.bdf}
@file{etl24-ipa.bdf}
@end example

  If the IPA fonts have been properly installed, you should be able to
read the following line:

@quotation
,0I!J(B ,0!K(B ,0'(B ,0Z% S(B ,0V!BS(B ,0!S(B ,0p% p@ rp" (B ,0Dp$V'DB'K(B
@end quotation

  Bear in mind that all fonts used in Mule must be of fixed width.
Furthermore, the width of the IPA symbols must be the same as the ASCII
characters.  For the detail of font specification, see @xref{Font, ,
Font, mule}.

@comment ------------------------------------------------------------
@node Inputing IPA, , IPA Character Set, IPA
@subsection Inputing IPA

  To input IPA characters, use the Quail system.  Hit @kbd{C-]} to turn
into quail-mode.  If you do not see the string @samp{[IPA]} at the left
end of mode-line, then hit @kbd{M-s} and specify the package name
@samp{ipa}.  @key{SPC} works as the completion key.  If you hit
@key{RET} without specifying a package name, the default package (shown
in the parentheses) will be used.  To exit quail-mode, hit @kbd{C-]}
once again.

  For the detail of the Quail system, see @xref{Usage of Quail, , ,
quail}.

  Here are the key bindings for IPA characters in quail-mode:

@example
key             description             example
-----------------------------------------------------------
i               small letter i          i in ici (F)
I               small capital I         i in bit (E)
e               small letter e          e' in the' (F)
E or \3         rounded small epsilon   e in end (Am. E)
ae              a+e ligature            a in cat (E)
a               small a in printing     a in patte (F)
A or o|         small a in manuscript   o in hop (Am. E)
/v              upside-down small v     u in cup (Am. E)
&               small gamma
/m              upside-down small m
i-              small i with bar
/e              schwa (upside-down e)   a in about (E)
/a              upside-down pr. a       a in china (E)
y               small letter y          u in sur (F)
Y               small capital Y         u" in du"nn (G)
o/              small phi               eu in deux (F)
oe              o+e ligature            oe in boeuf (F)
OE              O+E ligature
/A or |o        upside-down man. a      o in hop (E)
/c              upside-down small c     a in all (E)
o               small letter o          o in pot (F)
U               upside-down cap. omega  oo in book (E)
u               small letter u          ou in pour (F)
u-              small u with bar        u in hus (Norwegian)
o-              small o with bar        o" in do"rr (Swedish)
e- or e|        r coloured schwa        er in letter (Am. E)
oe~             tilde above o+e         un (F)
/c~             tilde above u-d. c      on in bon (F)
E~ or /3~       tilde above epsilon     ain in pain (F)
A~ or o|~       tilde above man. a      an in blanc (F)
-----------------------------------------------------------
p               small letter p          p in paon (F)
b               small letter b          b in banc (F)
t               small letter t          t in table (E)
d               small letter d          d in date (E)
k               small letter k          c in computer (E)
g               small letter g          g in get (E)
f               small letter f          f in feel (E)
v               small letter v          v in veal (E)
th              small theta             th in three (E)
dh              small icelandic edh     th in this (E)
s               small letter s          s in sea (E)
z               small letter z          z in zero (E)
sh              integral mark           sh in shell (E)
zh or 3         voiced sh               j in je (F)
c,              c with cedilla          ch in ich (G)
x               small letter x          x in ach (G)
/R              upside-down capital R   r in Paris (Parisian F)
h               small letter h          h in hat (E)
m               small letter m          m in make (E)
n               small setter n          n in net (E)
gn              n with long left leg    gn in signe (F)
ng              n with long right leg   ng in song (E)
r               small letter r          rr in carro (I)
R               small capital R         rr in harren (G)
/r              upside-down small r     r in red (E)
j               small letter j          y in you (E)
l               small letter l          l in light (E)
/y              upside-down small y     gl in foglio (I)
L               small capital L         ll in tell (E)
/h              upside-down small h     u in nuit (F)
w               small letter w          w in we (E)
M               upside-down capital W   wh in what (E)
-----------------------------------------------------------
'               acute                   primary accent
`               grave                   secondary accent
:               colon                   long
@end example

@contents
@bye
