]> code.delx.au - gnu-emacs/blobdiff - man/mule.texi
(General Variables): Update the docs according to current behavior
[gnu-emacs] / man / mule.texi
index d8b9265d9c8ccbe1af3b8ecf78a16ab0ee94a2f5..a175454b95f2f828877d23e4e63932355894c9f4 100644 (file)
@@ -1,5 +1,5 @@
 @c This is part of the Emacs manual.
-@c Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+@c Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
 @c See file emacs.texi for copying conditions.
 @node International, Major Modes, Frames, Top
 @chapter International Character Set Support
@@ -8,21 +8,32 @@
 @cindex multibyte characters
 @cindex encoding of characters
 
+@cindex Celtic
 @cindex Chinese
 @cindex Cyrillic
+@cindex Czech
 @cindex Devanagari
 @cindex Hindi
 @cindex Marathi
 @cindex Ethiopic
+@cindex German
 @cindex Greek
 @cindex Hebrew
 @cindex IPA
 @cindex Japanese
 @cindex Korean
 @cindex Lao
+@cindex Latin
+@cindex Polish
+@cindex Romanian
+@cindex Slovak
+@cindex Slovenian
 @cindex Thai
 @cindex Tibetan
+@cindex Turkish
 @cindex Vietnamese
+@cindex Dutch
+@cindex Spanish
   Emacs supports a wide variety of international character sets,
 including European variants of the Latin alphabet, as well as Chinese,
 Cyrillic, Devanagari (Hindi and Marathi), Ethiopic, Greek, Hebrew, IPA,
@@ -30,6 +41,9 @@ Japanese, Korean, Lao, Thai, Tibetan, and Vietnamese scripts.  These features
 have been merged from the modified version of Emacs known as MULE (for
 ``MULti-lingual Enhancement to GNU Emacs'')
 
+  Emacs also supports various encodings of these characters used by
+other internationalized software, such as word processors and mailers.
+
 @menu
 * International Intro::     Basic concepts of multibyte characters.
 * Enabling Multibyte::      Controlling whether to use multibyte characters.
@@ -44,6 +58,7 @@ have been merged from the modified version of Emacs known as MULE (for
 * Fontsets::                Fontsets are collections of fonts
                               that cover the whole spectrum of characters.
 * Defining Fontsets::       Defining a new fontset.
+* Undisplayable Characters:: When characters don't display.
 * Single-Byte Character Support::
                             You can pick one European character set
                             to use without multibyte characters.
@@ -52,23 +67,25 @@ have been merged from the modified version of Emacs known as MULE (for
 @node International Intro
 @section Introduction to International Character Sets
 
-  The users of these scripts have established many more-or-less standard
-coding systems for storing files.  Emacs internally uses a single
-multibyte character encoding, so that it can intermix characters from
-all these scripts in a single buffer or string.  This encoding
-represents each non-ASCII character as a sequence of bytes in the range
-0200 through 0377.  Emacs translates between the multibyte character
-encoding and various other coding systems when reading and writing
-files, when exchanging data with subprocesses, and (in some cases) in
-the @kbd{C-q} command (@pxref{Multibyte Conversion}).
+  The users of international character sets and scripts have established
+many more-or-less standard coding systems for storing files.  Emacs
+internally uses a single multibyte character encoding, so that it can
+intermix characters from all these scripts in a single buffer or string.
+This encoding represents each non-ASCII character as a sequence of bytes
+in the range 0200 through 0377.  Emacs translates between the multibyte
+character encoding and various other coding systems when reading and
+writing files, when exchanging data with subprocesses, and (in some
+cases) in the @kbd{C-q} command (@pxref{Multibyte Conversion}).
 
 @kindex C-h h
 @findex view-hello-file
+@cindex undisplayable characters
+@cindex @samp{?} in display
   The command @kbd{C-h h} (@code{view-hello-file}) displays the file
 @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
-This illustrates various scripts.  If the font you're using doesn't have
-characters for all those different languages, you will see some hollow
-boxes instead of characters; see @ref{Fontsets}.
+This illustrates various scripts.  If some characters can't be
+displayed on your terminal, they appear as @samp{?} or as hollow boxes
+(@pxref{Undisplayable Characters}).
 
   Keyboards, even in the countries where these character sets are used,
 generally don't have keys for all the characters in them.  So Emacs
@@ -79,6 +96,28 @@ language, to make it convenient to type them.
   The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
 to multibyte characters, coding systems, and input methods.
 
+@ignore
+@c This is commented out because it doesn't fit here, or anywhere.
+@c This manual does not discuss "character sets" as they
+@c are used in Mule, and it makes no sense to mention these commands
+@c except as part of a larger discussion of the topic.
+@c But it is not clear that topic is worth mentioning here,
+@c since that is more of an implementation concept
+@c than a user-level concept.  And when we switch to Unicode,
+@c character sets in the current sense may not even exist.
+
+@findex list-charset-chars
+@cindex characters in a certain charset
+  The command @kbd{M-x list-charset-chars} prompts for a name of a
+character set, and displays all the characters in that character set.
+
+@findex describe-character-set
+@cindex character set, description
+  The command @kbd{M-x describe-character-set} prompts for a character
+set name and displays information about that character set, including
+its internal representation within Emacs.
+@end ignore
+
 @node Enabling Multibyte
 @section Enabling Multibyte Characters
 
@@ -116,14 +155,27 @@ environment variable @env{EMACS_UNIBYTE}.  You can also customize
 variable @code{default-enable-multibyte-characters} in your init file to
 have basically the same effect as @samp{--unibyte}.
 
-  Multibyte strings are not created during initialization from the
-values of environment variables, @file{/etc/passwd} entries etc.@: that
-contain non-ASCII 8-bit characters.  However, the initialization file is
-normally read as multibyte---like Lisp files in general---even with
-@samp{--unibyte}.  To avoid multibyte strings being generated by
-non-ASCII characters in it, put @samp{-*-unibyte: t;-*-} in a comment on
-the first line.  Do the same for initialization files for packages like
-Gnus.
+@cindex Lisp files, and multibyte operation
+@cindex multibyte operation, and Lisp files
+@cindex unibyte operation, and Lisp files
+@cindex init file, and non-ASCII characters
+@cindex environment variables, and non-ASCII characters
+  With @samp{--unibyte}, multibyte strings are not created during
+initialization from the values of environment variables,
+@file{/etc/passwd} entries etc.@: that contain non-ASCII 8-bit
+characters.
+
+  Emacs normally loads Lisp files as multibyte, regardless of whether
+you used @samp{--unibyte}.  This includes the Emacs initialization
+file, @file{.emacs}, and the initialization files of Emacs packages
+such as Gnus.  However, you can specify unibyte loading for a
+particular Lisp file, by putting @samp{-*-unibyte: t;-*-} in a comment
+on the first line.  Then that file is always loaded as unibyte text,
+even if you did not start Emacs with @samp{--unibyte}.  The motivation
+for these conventions is that it is more reliable to always load any
+particular Lisp file in the same way.  However, you can load a Lisp
+file as unibyte, on any one occasion, by typing @kbd{C-x @key{RET} c
+raw-text @key{RET}} immediately before loading it.
 
   The mode line indicates whether multibyte character support is enabled
 in the current buffer.  If it is, there are two or more characters (most
@@ -157,44 +209,53 @@ set-language-environment}.  It makes no difference which buffer is
 current when you use this command, because the effects apply globally to
 the Emacs session.  The supported language environments include:
 
+@cindex Euro sign
 @quotation
 Chinese-BIG5, Chinese-CNS, Chinese-GB, Cyrillic-ALT, Cyrillic-ISO,
 Cyrillic-KOI8, Czech, Devanagari, English, Ethiopic, German, Greek,
-Hebrew, IPA, Japanese, Korean, Lao, Latin-1, Latin-2, Latin-3,
-Latin-4, Latin-5, Latin-8, Latin-9, Romanian, Slovak, Slovenian, Thai,
-Tibetan, Turkish, and Vietnamese.
+Hebrew, IPA, Japanese, Korean, Lao, Latin-1, Latin-2, Latin-3, Latin-4,
+Latin-5, Latin-8 (Celtic), Latin-9 (updated Latin-1, with the Euro
+sign), Polish, Romanian, Slovak, Slovenian, Thai, Tibetan, Turkish, 
+Dutch, Spanish, and Vietnamese.
 @end quotation
 
+@cindex fonts for various scripts
+@cindex Intlfonts package, installation
+  To display the script(s) used by your language environment on a
+graphical display, you need to have a suitable font.  If some of the
+characters appear as empty boxes, you should install the GNU Intlfonts
+package, which includes fonts for all supported scripts.@footnote{If
+you run Emacs on X, you need to inform the X server about the location
+of the newly installed fonts with the following commands:
+
+@example
+ xset fp+ /usr/local/share/emacs/fonts
+ xset fp rehash
+@end example
+}
+@xref{Fontsets}, for more details about setting up your fonts.
+
 @findex set-locale-environment
 @vindex locale-language-names
 @vindex locale-charset-language-names
+@cindex locales
   Some operating systems let you specify the language you are using by
 setting the locale environment variables @env{LC_ALL}, @env{LC_CTYPE},
-and @env{LANG}; the first of these which is nonempty specifies your
-locale.  Emacs handles this during startup by invoking the
-@code{set-locale-environment} function, which matches your locale
-against entries in the value of the variable
+or @env{LANG}.@footnote{If more than one of these is set, the first
+one that is nonempty specifies your locale for this purpose.}  Emacs
+handles this during startup by matching your locale against entries in
+the value of the variables @code{locale-charset-language-names} and
 @code{locale-language-names} and selects the corresponding language
-environment if a match is found.  But if your locale also matches an
-entry in the variable @code{locale-charset-language-names}, this entry
-is preferred if its character set disagrees.  For example, suppose the
-locale @samp{en_GB.ISO8859-15} matches @code{"Latin-1"} in
-@code{locale-language-names} and @code{"Latin-9"} in
-@code{locale-charset-language-names}; since these two language
-environments' character sets disagree, Emacs uses @code{"Latin-9"}.
-
-  If all goes well, the @code{set-locale-environment} function selects
-the language environment, since language is part of locale.  It also
-adjusts the display table and terminal coding system, the locale coding
-system, and the preferred coding system as needed for the locale.
-
-  Since the @code{set-locale-environment} function is automatically
-invoked during startup, you normally do not need to invoke it yourself.
-However, if you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG}
-environment variables, you may want to invoke the
-@code{set-locale-environment} function afterwards.
+environment if a match is found.  (The former variable overrides the
+latter.)  It also adjusts the display table and terminal coding
+system, the locale coding system, and the preferred coding system as
+needed for the locale.
+
+  If you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG}
+environment variables while running Emacs, you may want to invoke the
+@code{set-locale-environment} function afterwards to readjust the
+language environment from the new locale.
 
-@findex set-locale-environment
 @vindex locale-preferred-coding-systems
   The @code{set-locale-environment} function normally uses the preferred
 coding system established by the language environment to decode system
@@ -205,10 +266,10 @@ matches @code{japanese-shift-jis} in
 @code{locale-preferred-coding-systems}, Emacs uses that encoding even
 though it might normally use @code{japanese-iso-8bit}.
 
-  The environment chosen from the locale when Emacs starts is
-overidden by any explicit use of the command
-@code{set-language-environment} or customization of
-@code{current-language-environment} in your init file.
+  You can override the language environment chosen at startup with
+explicit use of the command @code{set-language-environment}, or with
+customization of @code{current-language-environment} in your init
+file.
 
 @kindex C-h L
 @findex describe-language-environment
@@ -227,7 +288,10 @@ environment.
 @code{set-language-environment} runs that hook after setting up the new
 language environment.  The hook functions can test for a specific
 language environment by checking the variable
-@code{current-language-environment}.
+@code{current-language-environment}.  This hook is where you should
+put non-default settings for specific language environment, such as
+coding systems for keyboard input and terminal output, the default
+input method, etc.
 
 @vindex exit-language-environment-hook
   Before it starts to set up the new language environment,
@@ -249,8 +313,10 @@ has its own input method; sometimes several languages which use the same
 characters can share one input method.  A few languages support several
 input methods.
 
-  The simplest kind of input method works by mapping ASCII letters into
-another alphabet.  This is how the Greek and Russian input methods work.
+  The simplest kind of input method works by mapping ASCII letters
+into another alphabet; this allows you to type characters which your
+keyboard doesn't support directly.  This is how the Greek and Russian
+input methods work.
 
   A more powerful technique is composition: converting sequences of
 characters into one letter.  Many European input methods use composition
@@ -304,6 +370,7 @@ is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
 @xref{Select Input Method}.
 @end ifinfo
 
+@cindex incremental search, input method interference
   @kbd{C-\ C-\} is especially useful inside an incremental search,
 because it stops waiting for more characters to combine, and starts
 searching for what you have already entered.
@@ -318,6 +385,12 @@ the partial sequence is highlighted in the buffer.  If
 characters to type next is displayed in the echo area (but not when you
 are in the minibuffer).
 
+@cindex Leim package
+  Input methods are implemented in the separate Leim package: they are
+available only if the system administrator used Leim when building
+Emacs.  If Emacs was built without Leim, you will find that no input
+methods are defined.
+
 @node Select Input Method
 @section Selecting an Input Method
 
@@ -334,9 +407,9 @@ Select a new input method for the current buffer.
 @kindex C-h I
 @kindex C-h C-\
 Describe the input method @var{method} (@code{describe-input-method}).
-By default, it describes the current input method (if any).
-This description should give you the full details of how to
-use any particular input method.
+By default, it describes the current input method (if any).  This
+description should give you the full details of how to use any
+particular input method.
 
 @item M-x list-input-methods
 Display a list of all the supported input methods.
@@ -363,6 +436,10 @@ method temporarily.  To do this, type @kbd{C-\}
 it prompts for you to specify one.  This has the same effect as using
 @kbd{C-x @key{RET} C-\} to specify an input method.
 
+  When invoked with a numeric argument, as in @kbd{C-u C-\},
+@code{toggle-input-method} always prompts you for an input method,
+suggesting the most recently selected one as the default.
+
 @vindex default-input-method
   Selecting a language environment specifies a default input method for
 use in various buffers.  When you have a default input method, you can
@@ -370,6 +447,26 @@ select it in the current buffer by typing @kbd{C-\}.  The variable
 @code{default-input-method} specifies the default input method
 (@code{nil} means there is none).
 
+  In some language environments, which support several different input
+methods, you might want to use an input method different from the
+default chosen by @code{set-language-environment}.  You can instruct
+Emacs to select a different default input method for a certain
+language environment if you by using
+@code{set-language-environment-hook} (@pxref{Language Environments,
+set-language-environment-hook}).  For example:
+
+@lisp
+(defun my-chinese-setup ()
+  "Set up my private Chinese environment."
+  (if (equal current-language-environment "Chinese-GB")
+      (setq default-input-method "chinese-tonepy")))
+(add-hook 'set-language-environment-hook 'my-chinese-setup)
+@end lisp
+
+@noindent
+This sets the default input method to be @code{chinese-tonepy}
+whenever you choose a Chinese-GB language environment.
+
 @findex quail-set-keyboard-layout
   Some input methods for alphabetic scripts work by (in effect)
 remapping the keyboard to emulate various keyboard layouts commonly used
@@ -389,11 +486,12 @@ method, including the string that stands for it in the mode line.
 through 0377 (octal) are not really legitimate in the buffer.  The valid
 non-ASCII printing characters have codes that start from 0400.
 
-  If you type a self-inserting character in the invalid range 0240
-through 0377, Emacs assumes you intended to use one of the ISO
-Latin-@var{n} character sets, and converts it to the Emacs code
-representing that Latin-@var{n} character.  You select @emph{which} ISO
-Latin character set to use through your choice of language environment
+  If you type a self-inserting character in the range 0240 through
+0377, or if you use @kbd{C-q} to insert one, Emacs assumes you
+intended to use one of the ISO Latin-@var{n} character sets, and
+converts it to the Emacs code representing that Latin-@var{n}
+character.  You select @emph{which} ISO Latin character set to use
+through your choice of language environment
 @iftex
 (see above).
 @end iftex
@@ -402,8 +500,12 @@ Latin character set to use through your choice of language environment
 @end ifinfo
 If you do not specify a choice, the default is Latin-1.
 
-  The same thing happens when you use @kbd{C-q} to enter an octal code
-in this range.
+  If you insert a character in the range 0200 through 0237, which
+forms the @code{eight-bit-control} character set, it is inserted
+literally.  You should normally avoid doing this since buffers
+containing such characters have to be written out in either the
+@code{emacs-mule} or @code{raw-text} coding system, which is usually
+not what you want.
 
 @node Coding Systems
 @section Coding Systems
@@ -424,7 +526,11 @@ their names usually start with @samp{iso}.  There are also special
 coding systems @code{no-conversion}, @code{raw-text} and
 @code{emacs-mule} which do not convert printing characters at all.
 
-@cindex end-of-line conversion
+  A special class of coding systems, collectively known as
+@dfn{codepages}, is designed to support text encoded by MS-Windows and
+MS-DOS software.  To use any of these systems, you need to create it
+with @kbd{M-x codepage-setup}.  @xref{MS-DOS and MULE}.
+
   In addition to converting various representations of non-ASCII
 characters, a coding system can perform end-of-line conversion.  Emacs
 handles three different conventions for how to separate lines in a file:
@@ -478,7 +584,7 @@ on Unix and GNU systems.)
 @item @dots{}-dos
 Assume the file uses carriage-return linefeed to separate lines, and do
 the appropriate conversion.  (This is the convention normally used on
-Microsoft systems.@footnote{It is also specified for MIME `text/*'
+Microsoft systems.@footnote{It is also specified for MIME @samp{text/*}
 bodies and in other network transport contexts.  It is different
 from the SGML reference syntax record-start/record-end format which
 Emacs doesn't support directly.})
@@ -582,30 +688,34 @@ the contents of the file: if it sees only carriage-returns, or only
 carriage-return linefeed sequences, then it chooses the end-of-line
 conversion accordingly.  You can inhibit the automatic use of
 end-of-line conversion by setting the variable @code{inhibit-eol-conversion}
-to non-@code{nil}.
+to non-@code{nil}.  If you do that, DOS-style files will be displayed
+with the @samp{^M} characters visible in the buffer; some people
+prefer this to the more subtle @samp{(DOS)} end-of-line type
+indication near the left edge of the mode line (@pxref{Mode Line,
+eol-mnemonic}).
 
 @vindex inhibit-iso-escape-detection
 @cindex escape sequences in files
   By default, the automatic detection of coding system is sensitive to
 escape sequences.  If Emacs sees a sequence of characters that begin
-with an @key{ESC} character, and the sequence is valid as an ISO-2022
-code, the code is determined as one of ISO-2022 encoding, and the file
-is decoded by the corresponding coding system
-(e.g. @code{iso-2022-7bit}).
+with an escape character, and the sequence is valid as an ISO-2022
+code, that tells Emacs to use one of the ISO-2022 encodings to decode
+the file.
 
-  However, there may be cases that you want to read escape sequences in
-a file as is.  In such a case, you can set th variable
+  However, there may be cases that you want to read escape sequences
+in a file as is.  In such a case, you can set the variable
 @code{inhibit-iso-escape-detection} to non-@code{nil}.  Then the code
-detection will ignore any escape sequences, and so no file is detected
-as being encoded in some of ISO-2022 encoding.  The result is that all
-escape sequences become visible in a buffer.
+detection ignores any escape sequences, and never uses an ISO-2022
+encoding.  The result is that all escape sequences become visible in
+the buffer.
 
   The default value of @code{inhibit-iso-escape-detection} is
-@code{nil}, and it is strongly recommended not to change it.  That's
-because many Emacs Lisp source files that contain non-ASCII characters
-are encoded in the coding system @code{iso-2022-7bit} in the Emacs
-distribution, and they won't be decoded correctly when you visit those
-files if you suppress the escape sequence detection.
+@code{nil}.  We recommend that you not change it permanently, only for
+one specific operation.  That's because many Emacs Lisp source files
+that contain non-ASCII characters are encoded in the coding system
+@code{iso-2022-7bit} in the Emacs distribution, and they won't be
+decoded correctly when you visit those files if you suppress the
+escape sequence detection.
 
 @vindex coding
   You can specify the coding system for a particular file using the
@@ -636,33 +746,34 @@ a different coding system, you can specify a different coding system for
 the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
 Coding}).
 
-  While editing a file, you will sometimes insert characters which
-cannot be encoded with the coding system stored in
-@code{buffer-file-coding-system}.  For example, suppose you start with
-an ASCII file and insert a few Latin-1 characters into it.  Or you could
-edit a text file in Polish encoded in @code{iso-8859-2} and add to it
-translations of several Polish words into Russian.  When you save the
-buffer, Emacs can no longer use the previous value of the buffer's
-coding system, because the characters you added cannot be encoded by
-that coding system.
+  You can insert any possible character into any Emacs buffer, but
+most coding systems can only handle some of the possible characters.
+This means that you can insert characters that cannot be encoded with
+the coding system that will be used to save the buffer.  For example,
+you could start with an ASCII file and insert a few Latin-1 characters
+into it, or you could edit a text file in Polish encoded in
+@code{iso-8859-2} and add to it translations of several Polish words
+into Russian.  When you save the buffer, Emacs cannot use the current
+value of @code{buffer-file-coding-system}, because the characters you
+added cannot be encoded by that coding system.
 
   When that happens, Emacs tries the most-preferred coding system (set
 by @kbd{M-x prefer-coding-system} or @kbd{M-x
-set-language-environment}), and if that coding system can safely encode
-all of the characters in the buffer, Emacs uses it, and stores its value
-in @code{buffer-file-coding-system}.  Otherwise, Emacs pops up a window
-with a list of coding systems suitable for encoding the buffer, and
-prompts you to choose one of those coding systems.
-
-  If you insert characters which cannot be encoded by the buffer's
-coding system while editing a mail message, Emacs behaves a bit
-differently.  It additionally checks whether the most-preferred coding
-system is recommended for use in MIME messages; if it isn't, Emacs tells
-you that the most-preferred coding system is not recommended and prompts
-you for another coding system.  This is so you won't inadvertently send
-a message encoded in a way that your recipient's mail software will have
-difficulty decoding.  (If you do want to use the most-preferred coding
-system, you can type its name to Emacs prompt anyway.)
+set-language-environment}), and if that coding system can safely
+encode all of the characters in the buffer, Emacs uses it, and stores
+its value in @code{buffer-file-coding-system}.  Otherwise, Emacs
+displays a list of coding systems suitable for encoding the buffer's
+contents, and asks to choose one of those coding systems.
+
+  If you insert the unsuitable characters in a mail message, Emacs
+behaves a bit differently.  It additionally checks whether the
+most-preferred coding system is recommended for use in MIME messages;
+if it isn't, Emacs tells you that the most-preferred coding system is
+not recommended and prompts you for another coding system.  This is so
+you won't inadvertently send a message encoded in a way that your
+recipient's mail software will have difficulty decoding.  (If you do
+want to use the most-preferred coding system, you can type its name to
+Emacs prompt anyway.)
 
 @vindex sendmail-coding-system
   When you send a message with Mail mode (@pxref{Sending Mail}), Emacs has
@@ -781,11 +892,14 @@ specify the terminal coding system when using multibyte text, so that
 Emacs knows which characters the terminal can actually handle.
 
   By default, output to the terminal is not translated at all, unless
-Emacs can deduce the proper coding system from your terminal type.
+Emacs can deduce the proper coding system from your terminal type or
+your locale specification (@pxref{Language Environments}).
 
 @kindex C-x RET k
 @findex set-keyboard-coding-system
+@vindex keyboard-coding-system
   The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
+or the Custom option @code{keyboard-coding-system}
 specifies the coding system for keyboard input.  Character-code
 translation of keyboard input is useful for terminals with keys that
 send non-ASCII graphic characters---for example, some terminals designed
@@ -826,6 +940,7 @@ corresponding buffer.
 current language environment.
 
 @vindex file-name-coding-system
+@cindex file names with non-ASCII characters
   The variable @code{file-name-coding-system} specifies a coding system
 to use for encoding file names.  If you set the variable to a coding
 system name (as a Lisp symbol or a string), Emacs encodes file names
@@ -849,23 +964,24 @@ name, or it may get an error.  If such a problem happens, use @kbd{C-x
 C-w} to specify a new file name for that buffer.
 
 @vindex locale-coding-system
-  The variable @code{locale-coding-system} specifies a coding system to
-use when encoding and decoding system strings such as system error
-messages and @code{format-time-string} formats and time stamps.  This
-coding system should be compatible with the underlying system's coding
-system, which is normally specified by the first environment variable in
-the list @env{LC_ALL}, @env{LC_CTYPE}, @env{LANG} whose value is
-nonempty.
+  The variable @code{locale-coding-system} specifies a coding system
+to use when encoding and decoding system strings such as system error
+messages and @code{format-time-string} formats and time stamps.  You
+should choose a coding system that is compatible with the underlying
+system's text representation, which is normally specified by one of
+the environment variables @env{LC_ALL}, @env{LC_CTYPE}, and
+@env{LANG}.  (The first one whose value is nonempty is the one that
+determines the text representation.)
 
 @node Fontsets
 @section Fontsets
 @cindex fontsets
 
-  A font for X Windows typically defines shapes for one alphabet or
-script.  Therefore, displaying the entire range of scripts that Emacs
-supports requires a collection of many fonts.  In Emacs, such a
-collection is called a @dfn{fontset}.  A fontset is defined by a list of
-fonts, each assigned to handle a range of character codes. 
+  A font for X typically defines shapes for one alphabet or script.
+Therefore, displaying the entire range of scripts that Emacs supports
+requires a collection of many fonts.  In Emacs, such a collection is
+called a @dfn{fontset}.  A fontset is defined by a list of fonts, each
+assigned to handle a range of character codes.
 
   Each fontset has a name, like a font.  The available X fonts are
 defined by the X server; fontsets, however, are defined within Emacs
@@ -874,7 +990,8 @@ specifying its name, anywhere that you could use a single font.  Of
 course, Emacs fontsets can use only the fonts that the X server
 supports; if certain characters appear on the screen as hollow boxes,
 this means that the fontset in use for them has no font for those
-characters.
+characters.@footnote{The Emacs installation instructions have information on
+additional font support.}
 
   Emacs creates two fontsets automatically: the @dfn{standard fontset}
 and the @dfn{startup fontset}.  The standard fontset is most likely to
@@ -1028,6 +1145,32 @@ call this function explicitly to create a fontset.
 
   @xref{Font X}, for more information about font naming in X.
 
+@node Undisplayable Characters
+@section Undisplayable Characters
+
+  Your terminal may be unable to display some non-@sc{ascii}
+characters.  Most non-windowing terminals can only use a single
+character set (use the variable @code{default-terminal-coding-system}
+(@pxref{Specify Coding}) to tell Emacs which one); characters which
+can't be encoded in that coding system are displayed as @samp{?} by
+default.
+
+  Windowing terminals can display a broader range of characters, but
+you may not have fonts installed for all of them; characters that have
+no font appear as a hollow box.
+
+  If you use Latin-1 characters but your terminal can't display
+Latin-1, you can arrange to display mnemonic @sc{ascii} sequences
+instead, e.g.@: @samp{"o} for o-umlaut.  Load the library
+@file{iso-ascii} to do this.
+
+@vindex latin1-display
+  If your terminal can display Latin-1, you can display characters
+from other European character sets using a mixture of equivalent
+Latin-1 characters and @sc{ascii} mnemonics.  Use the Custom option
+@code{latin1-display} to enable this.  The mnemonic @sc{ascii}
+sequences mostly correspond to those of the prefix input methods.
+
 @node Single-Byte Character Support
 @section Single-byte Character Set Support
 
@@ -1035,7 +1178,6 @@ call this function explicitly to create a fontset.
 @cindex accented characters
 @cindex ISO Latin character sets
 @cindex Unibyte operation
-@vindex enable-multibyte-characters
   The ISO 8859 Latin-@var{n} character sets define character codes in
 the range 160 to 255 to handle the accented letters and punctuation
 needed by various European languages (and some non-European ones).
@@ -1071,7 +1213,7 @@ them yet.
 @cindex 8-bit display
   Normally non-ISO-8859 characters (between characters 128 and 159
 inclusive) are displayed as octal escapes.  You can change this for
-non-standard `extended' versions of ISO-8859 character sets by using the
+non-standard ``extended'' versions of ISO-8859 character sets by using the
 function @code{standard-display-8bit} in the @code{disp-table} library.
 
   There are several ways you can input single-byte non-ASCII
@@ -1081,22 +1223,18 @@ characters:
 @cindex 8-bit input
 @item
 If your keyboard can generate character codes 128 and up, representing
-non-ASCII characters, execute the following expression to enable Emacs to
-understand them:
-
-@example
-(set-input-mode (car (current-input-mode))
-                (nth 1 (current-input-mode))
-                0)
-@end example
-
-It is not necessary to do this under a window system which can
-distinguish 8-bit characters and Meta keys.  If you do this on a normal
-terminal, you will probably need to use @kbd{ESC} to type Meta
-characters.@footnote{In some cases, such as the Linux console and
-@code{xterm}, you can arrange for Meta to be converted to @kbd{ESC} and
-still be able type 8-bit characters present directly on the keyboard or
-using @kbd{Compose} or @kbd{AltGr} keys.}  @xref{User Input}.
+non-ASCII you can type those character codes directly.
+
+On a windowing terminal, you should not need to do anything special to
+use these keys; they should simply work.  On a text-only terminal, you
+should use the command @code{M-x set-keyboard-coding-system} or the
+Custom option @code{keyboard-coding-system} to specify which coding
+system your keyboard uses (@pxref{Specify Coding}).  Enabling this
+feature will probably require you to use @kbd{ESC} to type Meta
+characters; however, on a Linux console or in @code{xterm}, you can
+arrange for Meta to be converted to @kbd{ESC} and still be able type
+8-bit characters present directly on the keyboard or using
+@kbd{Compose} or @kbd{AltGr} keys.  @xref{User Input}.
 
 @item
 You can use an input method for the selected language environment.
@@ -1105,6 +1243,8 @@ the non-ASCII character you specify with it is converted to unibyte.
 
 @kindex C-x 8
 @cindex @code{iso-transl} library
+@cindex compose character
+@cindex dead character
 @item
 For Latin-1 only, you can use the
 key @kbd{C-x 8} as a ``compose character'' prefix for entry of
@@ -1116,14 +1256,19 @@ and in any other context where a key sequence is allowed.
 library is loaded, the @key{ALT} modifier key, if you have one, serves
 the same purpose as @kbd{C-x 8}; use @key{ALT} together with an accent
 character to modify the following letter.  In addition, if you have keys
-for the Latin-1 ``dead accent characters'', they too are defined to
+for the Latin-1 ``dead accent characters,'' they too are defined to
 compose with the following character, once @code{iso-transl} is loaded.
 Use @kbd{C-x 8 C-h} to list the available translations as mnemonic
 command names.
 
-@cindex @code{iso-acc} library
 @item
-Also for Latin-1 only, @kbd{M-x iso-aacents-mode} installs a minor mode
-which provides a facility like the @code{latin-1-prefix} input method
-but independent of the Leim package.
+@cindex @code{iso-acc} library
+@cindex ISO Accents mode
+@findex iso-accents-mode
+@cindex Latin-1, Latin-2 and Latin-3 input mode
+For Latin-1, Latin-2 and Latin-3, @kbd{M-x iso-accents-mode} installs
+a minor mode which works much like the @code{latin-1-prefix} input
+method does not depend on having the input methods installed.  This
+mode is buffer-local.  It can be customized for various languages with
+@kbd{M-x iso-accents-customize}.
 @end itemize