1 @c This is part of the Emacs manual.
2 @c Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
3 @c See file emacs.texi for copying conditions.
4 @node International, Major Modes, Frames, Top
5 @chapter International Character Set Support
7 @cindex international scripts
8 @cindex multibyte characters
9 @cindex encoding of characters
37 Emacs supports a wide variety of international character sets,
38 including European variants of the Latin alphabet, as well as Chinese,
39 Cyrillic, Devanagari (Hindi and Marathi), Ethiopic, Greek, Hebrew, IPA,
40 Japanese, Korean, Lao, Thai, Tibetan, and Vietnamese scripts. These features
41 have been merged from the modified version of Emacs known as MULE (for
42 ``MULti-lingual Enhancement to GNU Emacs'')
44 Emacs also supports various encodings of these characters used by
45 internationalized software, such as word processors, mailers, etc.
48 * International Intro:: Basic concepts of multibyte characters.
49 * Enabling Multibyte:: Controlling whether to use multibyte characters.
50 * Language Environments:: Setting things up for the language you use.
51 * Input Methods:: Entering text characters not on your keyboard.
52 * Select Input Method:: Specifying your choice of input methods.
53 * Multibyte Conversion:: How single-byte characters convert to multibyte.
54 * Coding Systems:: Character set conversion when you read and
55 write files, and so on.
56 * Recognize Coding:: How Emacs figures out which conversion to use.
57 * Specify Coding:: Various ways to choose which conversion to use.
58 * Fontsets:: Fontsets are collections of fonts
59 that cover the whole spectrum of characters.
60 * Defining Fontsets:: Defining a new fontset.
61 * Undisplayable Characters:: When characters don't display.
62 * Single-Byte Character Support::
63 You can pick one European character set
64 to use without multibyte characters.
67 @node International Intro
68 @section Introduction to International Character Sets
70 The users of international character sets and scripts have established
71 many more-or-less standard coding systems for storing files. Emacs
72 internally uses a single multibyte character encoding, so that it can
73 intermix characters from all these scripts in a single buffer or string.
74 This encoding represents each non-ASCII character as a sequence of bytes
75 in the range 0200 through 0377. Emacs translates between the multibyte
76 character encoding and various other coding systems when reading and
77 writing files, when exchanging data with subprocesses, and (in some
78 cases) in the @kbd{C-q} command (@pxref{Multibyte Conversion}).
81 @findex view-hello-file
82 @cindex undisplayable characters
85 The command @kbd{C-h h} (@code{view-hello-file}) displays the file
86 @file{etc/HELLO}, which shows how to say ``hello'' in many languages.
87 This illustrates various scripts. If the font you're using doesn't have
88 characters for all those different languages, you will see some hollow
89 boxes instead of characters; see @ref{Fontsets}. On non-windowing
90 displays, @samp{?} is displayed in place of the hollow box. More than
91 one @samp{?} is displayed for undisplayable characters that are wider
94 @findex list-charset-chars
95 @cindex characters in a certain charset
96 The command @kbd{M-x list-charset-chars} prompts for a name of a
97 character set, and displays all the characters in that character set.
99 @findex describe-character-set
100 @cindex character set, description
101 The command @kbd{M-x describe-character-set} prompts for a character
102 set name and displays information about that character set, including
103 its internal representation within Emacs.
105 Keyboards, even in the countries where these character sets are used,
106 generally don't have keys for all the characters in them. So Emacs
107 supports various @dfn{input methods}, typically one for each script or
108 language, to make it convenient to type them.
111 The prefix key @kbd{C-x @key{RET}} is used for commands that pertain
112 to multibyte characters, coding systems, and input methods.
114 @node Enabling Multibyte
115 @section Enabling Multibyte Characters
117 You can enable or disable multibyte character support, either for
118 Emacs as a whole, or for a single buffer. When multibyte characters are
119 disabled in a buffer, then each byte in that buffer represents a
120 character, even codes 0200 through 0377. The old features for
121 supporting the European character sets, ISO Latin-1 and ISO Latin-2,
122 work as they did in Emacs 19 and also work for the other ISO 8859
125 However, there is no need to turn off multibyte character support to
126 use ISO Latin; the Emacs multibyte character set includes all the
127 characters in these character sets, and Emacs can translate
128 automatically to and from the ISO codes.
130 To edit a particular file in unibyte representation, visit it using
131 @code{find-file-literally}. @xref{Visiting}. To convert a buffer in
132 multibyte representation into a single-byte representation of the same
133 characters, the easiest way is to save the contents in a file, kill the
134 buffer, and find the file again with @code{find-file-literally}. You
135 can also use @kbd{C-x @key{RET} c}
136 (@code{universal-coding-system-argument}) and specify @samp{raw-text} as
137 the coding system with which to find or save a file. @xref{Specify
138 Coding}. Finding a file as @samp{raw-text} doesn't disable format
139 conversion, uncompression and auto mode selection as
140 @code{find-file-literally} does.
142 @vindex enable-multibyte-characters
143 @vindex default-enable-multibyte-characters
144 To turn off multibyte character support by default, start Emacs with
145 the @samp{--unibyte} option (@pxref{Initial Options}), or set the
146 environment variable @env{EMACS_UNIBYTE}. You can also customize
147 @code{enable-multibyte-characters} or, equivalently, directly set the
148 variable @code{default-enable-multibyte-characters} in your init file to
149 have basically the same effect as @samp{--unibyte}.
151 @cindex Lisp files, and multibyte operation
152 @cindex multibyte operation, and Lisp files
153 @cindex unibyte operation, and Lisp files
154 @cindex init file, and non-ASCII characters
155 @cindex environment variables, and non-ASCII characters
156 Multibyte strings are not created during initialization from the
157 values of environment variables, @file{/etc/passwd} entries etc.@: that
158 contain non-ASCII 8-bit characters. However, Lisp files, when they are
159 loaded for running, and in particular the initialization file
160 @file{.emacs}, are normally read as multibyte---even with
161 @samp{--unibyte}. To avoid multibyte strings being generated by
162 non-ASCII characters in Lisp files, put @samp{-*-unibyte: t;-*-} in a
163 comment on the first line, or specify the coding system @samp{raw-text}
164 with @kbd{C-x @key{RET} c}. Do the same for initialization files for
167 The mode line indicates whether multibyte character support is enabled
168 in the current buffer. If it is, there are two or more characters (most
169 often two dashes) before the colon near the beginning of the mode line.
170 When multibyte characters are not enabled, just one dash precedes the
173 @node Language Environments
174 @section Language Environments
175 @cindex language environments
177 All supported character sets are supported in Emacs buffers whenever
178 multibyte characters are enabled; there is no need to select a
179 particular language in order to display its characters in an Emacs
180 buffer. However, it is important to select a @dfn{language environment}
181 in order to set various defaults. The language environment really
182 represents a choice of preferred script (more or less) rather than a
185 The language environment controls which coding systems to recognize
186 when reading text (@pxref{Recognize Coding}). This applies to files,
187 incoming mail, netnews, and any other text you read into Emacs. It may
188 also specify the default coding system to use when you create a file.
189 Each language environment also specifies a default input method.
191 @findex set-language-environment
192 @vindex current-language-environment
193 To select a language environment, customize the option
194 @code{current-language-environment} or use the command @kbd{M-x
195 set-language-environment}. It makes no difference which buffer is
196 current when you use this command, because the effects apply globally to
197 the Emacs session. The supported language environments include:
201 Chinese-BIG5, Chinese-CNS, Chinese-GB, Cyrillic-ALT, Cyrillic-ISO,
202 Cyrillic-KOI8, Czech, Devanagari, English, Ethiopic, German, Greek,
203 Hebrew, IPA, Japanese, Korean, Lao, Latin-1, Latin-2, Latin-3, Latin-4,
204 Latin-5, Latin-8 (Celtic), Latin-9 (updated Latin-1, with the Euro
205 sign), Polish, Romanian, Slovak, Slovenian, Thai, Tibetan, Turkish,
206 Dutch, Spanish, and Vietnamese.
209 @cindex fonts, for displaying different languages
210 To be able to display the script(s) used by your language environment
211 on a windowed display, you need to have a suitable font installed. If
212 some of the characters appear as empty boxes, download and install the
213 GNU Intlfonts distribution, which includes fonts for all supported
214 scripts. @xref{Fontsets}, for more details about setting up your
217 @findex set-locale-environment
218 @vindex locale-language-names
219 @vindex locale-charset-language-names
221 Some operating systems let you specify the language you are using by
222 setting the locale environment variables @env{LC_ALL}, @env{LC_CTYPE},
223 and @env{LANG}; the first of these which is nonempty specifies your
224 locale. Emacs handles this during startup by invoking the
225 @code{set-locale-environment} function, which matches your locale
226 against entries in the value of the variable
227 @code{locale-language-names} and selects the corresponding language
228 environment if a match is found. But if your locale also matches an
229 entry in the variable @code{locale-charset-language-names}, this entry
230 is preferred if its character set disagrees. For example, suppose the
231 locale @samp{en_GB.ISO8859-15} matches @code{"Latin-1"} in
232 @code{locale-language-names} and @code{"Latin-9"} in
233 @code{locale-charset-language-names}; since these two language
234 environments' character sets disagree, Emacs uses @code{"Latin-9"}.
236 If all goes well, the @code{set-locale-environment} function selects
237 the language environment, since language is part of locale. It also
238 adjusts the display table and terminal coding system, the locale coding
239 system, and the preferred coding system as needed for the locale.
241 Since the @code{set-locale-environment} function is automatically
242 invoked during startup, you normally do not need to invoke it yourself.
243 However, if you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG}
244 environment variables, you may want to invoke the
245 @code{set-locale-environment} function afterwards.
247 @findex set-locale-environment
248 @vindex locale-preferred-coding-systems
249 The @code{set-locale-environment} function normally uses the preferred
250 coding system established by the language environment to decode system
251 messages. But if your locale matches an entry in the variable
252 @code{locale-preferred-coding-systems}, Emacs uses the corresponding
253 coding system instead. For example, if the locale @samp{ja_JP.PCK}
254 matches @code{japanese-shift-jis} in
255 @code{locale-preferred-coding-systems}, Emacs uses that encoding even
256 though it might normally use @code{japanese-iso-8bit}.
258 The environment chosen from the locale when Emacs starts is
259 overidden by any explicit use of the command
260 @code{set-language-environment} or customization of
261 @code{current-language-environment} in your init file.
264 @findex describe-language-environment
265 To display information about the effects of a certain language
266 environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env}
267 @key{RET}} (@code{describe-language-environment}). This tells you which
268 languages this language environment is useful for, and lists the
269 character sets, coding systems, and input methods that go with it. It
270 also shows some sample text to illustrate scripts used in this language
271 environment. By default, this command describes the chosen language
274 @vindex set-language-environment-hook
275 You can customize any language environment with the normal hook
276 @code{set-language-environment-hook}. The command
277 @code{set-language-environment} runs that hook after setting up the new
278 language environment. The hook functions can test for a specific
279 language environment by checking the variable
280 @code{current-language-environment}.
282 @vindex exit-language-environment-hook
283 Before it starts to set up the new language environment,
284 @code{set-language-environment} first runs the hook
285 @code{exit-language-environment-hook}. This hook is useful for undoing
286 customizations that were made with @code{set-language-environment-hook}.
287 For instance, if you set up a special key binding in a specific language
288 environment using @code{set-language-environment-hook}, you should set
289 up @code{exit-language-environment-hook} to restore the normal binding
293 @section Input Methods
295 @cindex input methods
296 An @dfn{input method} is a kind of character conversion designed
297 specifically for interactive input. In Emacs, typically each language
298 has its own input method; sometimes several languages which use the same
299 characters can share one input method. A few languages support several
302 The simplest kind of input method works by mapping ASCII letters into
303 another alphabet. This is how the Greek and Russian input methods work.
305 A more powerful technique is composition: converting sequences of
306 characters into one letter. Many European input methods use composition
307 to produce a single non-ASCII letter from a sequence that consists of a
308 letter followed by accent characters (or vice versa). For example, some
309 methods convert the sequence @kbd{a'} into a single accented letter.
310 These input methods have no special commands of their own; all they do
311 is compose sequences of printing characters.
313 The input methods for syllabic scripts typically use mapping followed
314 by composition. The input methods for Thai and Korean work this way.
315 First, letters are mapped into symbols for particular sounds or tone
316 marks; then, sequences of these which make up a whole syllable are
317 mapped into one syllable sign.
319 Chinese and Japanese require more complex methods. In Chinese input
320 methods, first you enter the phonetic spelling of a Chinese word (in
321 input method @code{chinese-py}, among others), or a sequence of portions
322 of the character (input methods @code{chinese-4corner} and
323 @code{chinese-sw}, and others). Since one phonetic spelling typically
324 corresponds to many different Chinese characters, you must select one of
325 the alternatives using special Emacs commands. Keys such as @kbd{C-f},
326 @kbd{C-b}, @kbd{C-n}, @kbd{C-p}, and digits have special definitions in
327 this situation, used for selecting among the alternatives. @key{TAB}
328 displays a buffer showing all the possibilities.
330 In Japanese input methods, first you input a whole word using
331 phonetic spelling; then, after the word is in the buffer, Emacs converts
332 it into one or more characters using a large dictionary. One phonetic
333 spelling corresponds to many differently written Japanese words, so you
334 must select one of them; use @kbd{C-n} and @kbd{C-p} to cycle through
337 Sometimes it is useful to cut off input method processing so that the
338 characters you have just entered will not combine with subsequent
339 characters. For example, in input method @code{latin-1-postfix}, the
340 sequence @kbd{e '} combines to form an @samp{e} with an accent. What if
341 you want to enter them as separate characters?
343 One way is to type the accent twice; that is a special feature for
344 entering the separate letter and accent. For example, @kbd{e ' '} gives
345 you the two characters @samp{e'}. Another way is to type another letter
346 after the @kbd{e}---something that won't combine with that---and
347 immediately delete it. For example, you could type @kbd{e e @key{DEL}
348 '} to get separate @samp{e} and @samp{'}.
350 Another method, more general but not quite as easy to type, is to use
351 @kbd{C-\ C-\} between two characters to stop them from combining. This
352 is the command @kbd{C-\} (@code{toggle-input-method}) used twice.
354 @xref{Select Input Method}.
357 @kbd{C-\ C-\} is especially useful inside an incremental search,
358 because it stops waiting for more characters to combine, and starts
359 searching for what you have already entered.
361 @vindex input-method-verbose-flag
362 @vindex input-method-highlight-flag
363 The variables @code{input-method-highlight-flag} and
364 @code{input-method-verbose-flag} control how input methods explain what
365 is happening. If @code{input-method-highlight-flag} is non-@code{nil},
366 the partial sequence is highlighted in the buffer. If
367 @code{input-method-verbose-flag} is non-@code{nil}, the list of possible
368 characters to type next is displayed in the echo area (but not when you
369 are in the minibuffer).
372 Input methods are implemented in the separate Leim package, which must
373 be installed with Emacs.
375 @node Select Input Method
376 @section Selecting an Input Method
380 Enable or disable use of the selected input method.
382 @item C-x @key{RET} C-\ @var{method} @key{RET}
383 Select a new input method for the current buffer.
385 @item C-h I @var{method} @key{RET}
386 @itemx C-h C-\ @var{method} @key{RET}
387 @findex describe-input-method
390 Describe the input method @var{method} (@code{describe-input-method}).
391 By default, it describes the current input method (if any). This
392 description should give you the full details of how to use any
393 particular input method.
395 @item M-x list-input-methods
396 Display a list of all the supported input methods.
399 @findex set-input-method
400 @vindex current-input-method
402 To choose an input method for the current buffer, use @kbd{C-x
403 @key{RET} C-\} (@code{set-input-method}). This command reads the
404 input method name with the minibuffer; the name normally starts with the
405 language environment that it is meant to be used with. The variable
406 @code{current-input-method} records which input method is selected.
408 @findex toggle-input-method
410 Input methods use various sequences of ASCII characters to stand for
411 non-ASCII characters. Sometimes it is useful to turn off the input
412 method temporarily. To do this, type @kbd{C-\}
413 (@code{toggle-input-method}). To reenable the input method, type
416 If you type @kbd{C-\} and you have not yet selected an input method,
417 it prompts for you to specify one. This has the same effect as using
418 @kbd{C-x @key{RET} C-\} to specify an input method.
420 @vindex default-input-method
421 Selecting a language environment specifies a default input method for
422 use in various buffers. When you have a default input method, you can
423 select it in the current buffer by typing @kbd{C-\}. The variable
424 @code{default-input-method} specifies the default input method
425 (@code{nil} means there is none).
427 @findex quail-set-keyboard-layout
428 Some input methods for alphabetic scripts work by (in effect)
429 remapping the keyboard to emulate various keyboard layouts commonly used
430 for those scripts. How to do this remapping properly depends on your
431 actual keyboard layout. To specify which layout your keyboard has, use
432 the command @kbd{M-x quail-set-keyboard-layout}.
434 @findex list-input-methods
435 To display a list of all the supported input methods, type @kbd{M-x
436 list-input-methods}. The list gives information about each input
437 method, including the string that stands for it in the mode line.
439 @node Multibyte Conversion
440 @section Unibyte and Multibyte Non-ASCII characters
442 When multibyte characters are enabled, character codes 0240 (octal)
443 through 0377 (octal) are not really legitimate in the buffer. The valid
444 non-ASCII printing characters have codes that start from 0400.
446 If you type a self-inserting character in the range 0240
447 through 0377, Emacs assumes you intended to use one of the ISO
448 Latin-@var{n} character sets, and converts it to the Emacs code
449 representing that Latin-@var{n} character. You select @emph{which} ISO
450 Latin character set to use through your choice of language environment
455 (@pxref{Language Environments}).
457 If you do not specify a choice, the default is Latin-1.
459 The same thing happens when you use @kbd{C-q} to enter an octal code
460 in this range. If you enter a code in the range 0200 through 0237,
461 which forms the @code{eight-bit-control} character set, it is inserted
462 literally. You should normally avoid doing this since buffers
463 containing such characters have to be written out in either the
464 @code{emacs-mule} or @code{raw-text} coding system, which is usually not
468 @section Coding Systems
469 @cindex coding systems
471 Users of various languages have established many more-or-less standard
472 coding systems for representing them. Emacs does not use these coding
473 systems internally; instead, it converts from various coding systems to
474 its own system when reading data, and converts the internal coding
475 system to other coding systems when writing data. Conversion is
476 possible in reading or writing files, in sending or receiving from the
477 terminal, and in exchanging data with subprocesses.
479 Emacs assigns a name to each coding system. Most coding systems are
480 used for one language, and the name of the coding system starts with the
481 language name. Some coding systems are used for several languages;
482 their names usually start with @samp{iso}. There are also special
483 coding systems @code{no-conversion}, @code{raw-text} and
484 @code{emacs-mule} which do not convert printing characters at all.
486 A special class of coding systems, collectively known as
487 @dfn{codepages}, is designed to support text encoded by MS-Windows and
488 MS-DOS software. To use any of these systems, you need to create it
489 with @kbd{M-x codepage-setup}. @xref{MS-DOS and MULE}.
491 @cindex end-of-line conversion
492 In addition to converting various representations of non-ASCII
493 characters, a coding system can perform end-of-line conversion. Emacs
494 handles three different conventions for how to separate lines in a file:
495 newline, carriage-return linefeed, and just carriage-return.
498 @item C-h C @var{coding} @key{RET}
499 Describe coding system @var{coding}.
501 @item C-h C @key{RET}
502 Describe the coding systems currently in use.
504 @item M-x list-coding-systems
505 Display a list of all the supported coding systems.
509 @findex describe-coding-system
510 The command @kbd{C-h C} (@code{describe-coding-system}) displays
511 information about particular coding systems. You can specify a coding
512 system name as argument; alternatively, with an empty argument, it
513 describes the coding systems currently selected for various purposes,
514 both in the current buffer and as the defaults, and the priority list
515 for recognizing coding systems (@pxref{Recognize Coding}).
517 @findex list-coding-systems
518 To display a list of all the supported coding systems, type @kbd{M-x
519 list-coding-systems}. The list gives information about each coding
520 system, including the letter that stands for it in the mode line
523 @cindex end-of-line conversion
524 @cindex MS-DOS end-of-line conversion
525 @cindex Macintosh end-of-line conversion
526 Each of the coding systems that appear in this list---except for
527 @code{no-conversion}, which means no conversion of any kind---specifies
528 how and whether to convert printing characters, but leaves the choice of
529 end-of-line conversion to be decided based on the contents of each file.
530 For example, if the file appears to use the sequence carriage-return
531 linefeed to separate lines, DOS end-of-line conversion will be used.
533 Each of the listed coding systems has three variants which specify
534 exactly what to do for end-of-line conversion:
538 Don't do any end-of-line conversion; assume the file uses
539 newline to separate lines. (This is the convention normally used
540 on Unix and GNU systems.)
543 Assume the file uses carriage-return linefeed to separate lines, and do
544 the appropriate conversion. (This is the convention normally used on
545 Microsoft systems.@footnote{It is also specified for MIME `text/*'
546 bodies and in other network transport contexts. It is different
547 from the SGML reference syntax record-start/record-end format which
548 Emacs doesn't support directly.})
551 Assume the file uses carriage-return to separate lines, and do the
552 appropriate conversion. (This is the convention normally used on the
556 These variant coding systems are omitted from the
557 @code{list-coding-systems} display for brevity, since they are entirely
558 predictable. For example, the coding system @code{iso-latin-1} has
559 variants @code{iso-latin-1-unix}, @code{iso-latin-1-dos} and
560 @code{iso-latin-1-mac}.
562 The coding system @code{raw-text} is good for a file which is mainly
563 ASCII text, but may contain byte values above 127 which are not meant to
564 encode non-ASCII characters. With @code{raw-text}, Emacs copies those
565 byte values unchanged, and sets @code{enable-multibyte-characters} to
566 @code{nil} in the current buffer so that they will be interpreted
567 properly. @code{raw-text} handles end-of-line conversion in the usual
568 way, based on the data encountered, and has the usual three variants to
569 specify the kind of end-of-line conversion to use.
571 In contrast, the coding system @code{no-conversion} specifies no
572 character code conversion at all---none for non-ASCII byte values and
573 none for end of line. This is useful for reading or writing binary
574 files, tar files, and other files that must be examined verbatim. It,
575 too, sets @code{enable-multibyte-characters} to @code{nil}.
577 The easiest way to edit a file with no conversion of any kind is with
578 the @kbd{M-x find-file-literally} command. This uses
579 @code{no-conversion}, and also suppresses other Emacs features that
580 might convert the file contents before you see them. @xref{Visiting}.
582 The coding system @code{emacs-mule} means that the file contains
583 non-ASCII characters stored with the internal Emacs encoding. It
584 handles end-of-line conversion based on the data encountered, and has
585 the usual three variants to specify the kind of end-of-line conversion.
587 @node Recognize Coding
588 @section Recognizing Coding Systems
590 Most of the time, Emacs can recognize which coding system to use for
591 any given file---once you have specified your preferences.
593 Some coding systems can be recognized or distinguished by which byte
594 sequences appear in the data. However, there are coding systems that
595 cannot be distinguished, not even potentially. For example, there is no
596 way to distinguish between Latin-1 and Latin-2; they use the same byte
597 values with different meanings.
599 Emacs handles this situation by means of a priority list of coding
600 systems. Whenever Emacs reads a file, if you do not specify the coding
601 system to use, Emacs checks the data against each coding system,
602 starting with the first in priority and working down the list, until it
603 finds a coding system that fits the data. Then it converts the file
604 contents assuming that they are represented in this coding system.
606 The priority list of coding systems depends on the selected language
607 environment (@pxref{Language Environments}). For example, if you use
608 French, you probably want Emacs to prefer Latin-1 to Latin-2; if you use
609 Czech, you probably want Latin-2 to be preferred. This is one of the
610 reasons to specify a language environment.
612 @findex prefer-coding-system
613 However, you can alter the priority list in detail with the command
614 @kbd{M-x prefer-coding-system}. This command reads the name of a coding
615 system from the minibuffer, and adds it to the front of the priority
616 list, so that it is preferred to all others. If you use this command
617 several times, each use adds one element to the front of the priority
620 If you use a coding system that specifies the end-of-line conversion
621 type, such as @code{iso-8859-1-dos}, what that means is that Emacs
622 should attempt to recognize @code{iso-8859-1} with priority, and should
623 use DOS end-of-line conversion in case it recognizes @code{iso-8859-1}.
625 @vindex file-coding-system-alist
626 Sometimes a file name indicates which coding system to use for the
627 file. The variable @code{file-coding-system-alist} specifies this
628 correspondence. There is a special function
629 @code{modify-coding-system-alist} for adding elements to this list. For
630 example, to read and write all @samp{.txt} files using the coding system
631 @code{china-iso-8bit}, you can execute this Lisp expression:
634 (modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit)
638 The first argument should be @code{file}, the second argument should be
639 a regular expression that determines which files this applies to, and
640 the third argument says which coding system to use for these files.
642 @vindex inhibit-eol-conversion
643 @cindex DOS-style end-of-line display
644 Emacs recognizes which kind of end-of-line conversion to use based on
645 the contents of the file: if it sees only carriage-returns, or only
646 carriage-return linefeed sequences, then it chooses the end-of-line
647 conversion accordingly. You can inhibit the automatic use of
648 end-of-line conversion by setting the variable @code{inhibit-eol-conversion}
651 @vindex inhibit-iso-escape-detection
652 @cindex escape sequences in files
653 By default, the automatic detection of coding system is sensitive to
654 escape sequences. If Emacs sees a sequence of characters that begin
655 with an @key{ESC} character, and the sequence is valid as an ISO-2022
656 code, the code is determined as one of ISO-2022 encoding, and the file
657 is decoded by the corresponding coding system
658 (e.g. @code{iso-2022-7bit}).
660 However, there may be cases that you want to read escape sequences in
661 a file as is. In such a case, you can set th variable
662 @code{inhibit-iso-escape-detection} to non-@code{nil}. Then the code
663 detection will ignore any escape sequences, and so no file is detected
664 as being encoded in some of ISO-2022 encoding. The result is that all
665 escape sequences become visible in a buffer.
667 The default value of @code{inhibit-iso-escape-detection} is
668 @code{nil}, and it is strongly recommended not to change it. That's
669 because many Emacs Lisp source files that contain non-ASCII characters
670 are encoded in the coding system @code{iso-2022-7bit} in the Emacs
671 distribution, and they won't be decoded correctly when you visit those
672 files if you suppress the escape sequence detection.
675 You can specify the coding system for a particular file using the
676 @samp{-*-@dots{}-*-} construct at the beginning of a file, or a local
677 variables list at the end (@pxref{File Variables}). You do this by
678 defining a value for the ``variable'' named @code{coding}. Emacs does
679 not really have a variable @code{coding}; instead of setting a variable,
680 it uses the specified coding system for the file. For example,
681 @samp{-*-mode: C; coding: latin-1;-*-} specifies use of the Latin-1
682 coding system, as well as C mode. If you specify the coding explicitly
683 in the file, that overrides @code{file-coding-system-alist}.
685 @vindex auto-coding-alist
686 The variable @code{auto-coding-alist} is the strongest way to specify
687 the coding system for certain patterns of file names; this variable even
688 overrides @samp{-*-coding:-*-} tags in the file itself. Emacs uses this
689 feature for tar and archive files, to prevent Emacs from being confused
690 by a @samp{-*-coding:-*-} tag in a member of the archive and thinking it
691 applies to the archive file as a whole.
693 @vindex buffer-file-coding-system
694 Once Emacs has chosen a coding system for a buffer, it stores that
695 coding system in @code{buffer-file-coding-system} and uses that coding
696 system, by default, for operations that write from this buffer into a
697 file. This includes the commands @code{save-buffer} and
698 @code{write-region}. If you want to write files from this buffer using
699 a different coding system, you can specify a different coding system for
700 the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify
703 While editing a file, you will sometimes insert characters which
704 cannot be encoded with the coding system stored in
705 @code{buffer-file-coding-system}. For example, suppose you start with
706 an ASCII file and insert a few Latin-1 characters into it. Or you could
707 edit a text file in Polish encoded in @code{iso-8859-2} and add to it
708 translations of several Polish words into Russian. When you save the
709 buffer, Emacs can no longer use the previous value of the buffer's
710 coding system, because the characters you added cannot be encoded by
713 When that happens, Emacs tries the most-preferred coding system (set
714 by @kbd{M-x prefer-coding-system} or @kbd{M-x
715 set-language-environment}), and if that coding system can safely encode
716 all of the characters in the buffer, Emacs uses it, and stores its value
717 in @code{buffer-file-coding-system}. Otherwise, Emacs pops up a window
718 with a list of coding systems suitable for encoding the buffer, and
719 prompts you to choose one of those coding systems.
721 If you insert characters which cannot be encoded by the buffer's
722 coding system while editing a mail message, Emacs behaves a bit
723 differently. It additionally checks whether the most-preferred coding
724 system is recommended for use in MIME messages; if it isn't, Emacs tells
725 you that the most-preferred coding system is not recommended and prompts
726 you for another coding system. This is so you won't inadvertently send
727 a message encoded in a way that your recipient's mail software will have
728 difficulty decoding. (If you do want to use the most-preferred coding
729 system, you can type its name to Emacs prompt anyway.)
731 @vindex sendmail-coding-system
732 When you send a message with Mail mode (@pxref{Sending Mail}), Emacs has
733 four different ways to determine the coding system to use for encoding
734 the message text. It tries the buffer's own value of
735 @code{buffer-file-coding-system}, if that is non-@code{nil}. Otherwise,
736 it uses the value of @code{sendmail-coding-system}, if that is
737 non-@code{nil}. The third way is to use the default coding system for
738 new files, which is controlled by your choice of language environment,
739 if that is non-@code{nil}. If all of these three values are @code{nil},
740 Emacs encodes outgoing mail using the Latin-1 coding system.
742 @vindex rmail-decode-mime-charset
743 When you get new mail in Rmail, each message is translated
744 automatically from the coding system it is written in---as if it were a
745 separate file. This uses the priority list of coding systems that you
746 have specified. If a MIME message specifies a character set, Rmail
747 obeys that specification, unless @code{rmail-decode-mime-charset} is
750 @vindex rmail-file-coding-system
751 For reading and saving Rmail files themselves, Emacs uses the coding
752 system specified by the variable @code{rmail-file-coding-system}. The
753 default value is @code{nil}, which means that Rmail files are not
754 translated (they are read and written in the Emacs internal character
758 @section Specifying a Coding System
760 In cases where Emacs does not automatically choose the right coding
761 system, you can use these commands to specify one:
764 @item C-x @key{RET} f @var{coding} @key{RET}
765 Use coding system @var{coding} for the visited file
766 in the current buffer.
768 @item C-x @key{RET} c @var{coding} @key{RET}
769 Specify coding system @var{coding} for the immediately following
772 @item C-x @key{RET} k @var{coding} @key{RET}
773 Use coding system @var{coding} for keyboard input.
775 @item C-x @key{RET} t @var{coding} @key{RET}
776 Use coding system @var{coding} for terminal output.
778 @item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET}
779 Use coding systems @var{input-coding} and @var{output-coding} for
780 subprocess input and output in the current buffer.
782 @item C-x @key{RET} x @var{coding} @key{RET}
783 Use coding system @var{coding} for transferring selections to and from
784 other programs through the window system.
786 @item C-x @key{RET} X @var{coding} @key{RET}
787 Use coding system @var{coding} for transferring @emph{one}
788 selection---the next one---to or from the window system.
792 @findex set-buffer-file-coding-system
793 The command @kbd{C-x @key{RET} f} (@code{set-buffer-file-coding-system})
794 specifies the file coding system for the current buffer---in other
795 words, which coding system to use when saving or rereading the visited
796 file. You specify which coding system using the minibuffer. Since this
797 command applies to a file you have already visited, it affects only the
798 way the file is saved.
801 @findex universal-coding-system-argument
802 Another way to specify the coding system for a file is when you visit
803 the file. First use the command @kbd{C-x @key{RET} c}
804 (@code{universal-coding-system-argument}); this command uses the
805 minibuffer to read a coding system name. After you exit the minibuffer,
806 the specified coding system is used for @emph{the immediately following
809 So if the immediately following command is @kbd{C-x C-f}, for example,
810 it reads the file using that coding system (and records the coding
811 system for when the file is saved). Or if the immediately following
812 command is @kbd{C-x C-w}, it writes the file using that coding system.
813 Other file commands affected by a specified coding system include
814 @kbd{C-x C-i} and @kbd{C-x C-v}, as well as the other-window variants of
817 @kbd{C-x @key{RET} c} also affects commands that start subprocesses,
818 including @kbd{M-x shell} (@pxref{Shell}).
820 However, if the immediately following command does not use the coding
821 system, then @kbd{C-x @key{RET} c} ultimately has no effect.
823 An easy way to visit a file with no conversion is with the @kbd{M-x
824 find-file-literally} command. @xref{Visiting}.
826 @vindex default-buffer-file-coding-system
827 The variable @code{default-buffer-file-coding-system} specifies the
828 choice of coding system to use when you create a new file. It applies
829 when you find a new file, and when you create a buffer and then save it
830 in a file. Selecting a language environment typically sets this
831 variable to a good choice of default coding system for that language
835 @findex set-terminal-coding-system
836 The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system})
837 specifies the coding system for terminal output. If you specify a
838 character code for terminal output, all characters output to the
839 terminal are translated into that coding system.
841 This feature is useful for certain character-only terminals built to
842 support specific languages or character sets---for example, European
843 terminals that support one of the ISO Latin character sets. You need to
844 specify the terminal coding system when using multibyte text, so that
845 Emacs knows which characters the terminal can actually handle.
847 By default, output to the terminal is not translated at all, unless
848 Emacs can deduce the proper coding system from your terminal type or
849 your locale specification (@pxref{Language Environments}).
852 @findex set-keyboard-coding-system
853 @vindex keyboard-coding-system
854 The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system})
855 or the Custom option @code{keyboard-coding-system}
856 specifies the coding system for keyboard input. Character-code
857 translation of keyboard input is useful for terminals with keys that
858 send non-ASCII graphic characters---for example, some terminals designed
859 for ISO Latin-1 or subsets of it.
861 By default, keyboard input is not translated at all.
863 There is a similarity between using a coding system translation for
864 keyboard input, and using an input method: both define sequences of
865 keyboard input that translate into single characters. However, input
866 methods are designed to be convenient for interactive use by humans, and
867 the sequences that are translated are typically sequences of ASCII
868 printing characters. Coding systems typically translate sequences of
869 non-graphic characters.
873 @findex set-selection-coding-system
874 @findex set-next-selection-coding-system
875 The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system})
876 specifies the coding system for sending selected text to the window
877 system, and for receiving the text of selections made in other
878 applications. This command applies to all subsequent selections, until
879 you override it by using the command again. The command @kbd{C-x
880 @key{RET} X} (@code{set-next-selection-coding-system}) specifies the
881 coding system for the next selection made in Emacs or read by Emacs.
884 @findex set-buffer-process-coding-system
885 The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system})
886 specifies the coding system for input and output to a subprocess. This
887 command applies to the current buffer; normally, each subprocess has its
888 own buffer, and thus you can use this command to specify translation to
889 and from a particular subprocess by giving the command in the
890 corresponding buffer.
892 The default for translation of process input and output depends on the
893 current language environment.
895 @vindex file-name-coding-system
896 The variable @code{file-name-coding-system} specifies a coding system
897 to use for encoding file names. If you set the variable to a coding
898 system name (as a Lisp symbol or a string), Emacs encodes file names
899 using that coding system for all file operations. This makes it
900 possible to use non-ASCII characters in file names---or, at least, those
901 non-ASCII characters which the specified coding system can encode.
903 If @code{file-name-coding-system} is @code{nil}, Emacs uses a default
904 coding system determined by the selected language environment. In the
905 default language environment, any non-ASCII characters in file names are
906 not encoded specially; they appear in the file system using the internal
907 Emacs representation.
909 @strong{Warning:} if you change @code{file-name-coding-system} (or the
910 language environment) in the middle of an Emacs session, problems can
911 result if you have already visited files whose names were encoded using
912 the earlier coding system and cannot be encoded (or are encoded
913 differently) under the new coding system. If you try to save one of
914 these buffers under the visited file name, saving may use the wrong file
915 name, or it may get an error. If such a problem happens, use @kbd{C-x
916 C-w} to specify a new file name for that buffer.
918 @vindex locale-coding-system
919 The variable @code{locale-coding-system} specifies a coding system to
920 use when encoding and decoding system strings such as system error
921 messages and @code{format-time-string} formats and time stamps. This
922 coding system should be compatible with the underlying system's coding
923 system, which is normally specified by the first environment variable in
924 the list @env{LC_ALL}, @env{LC_CTYPE}, @env{LANG} whose value is
931 A font for X typically defines shapes for one alphabet or script.
932 Therefore, displaying the entire range of scripts that Emacs supports
933 requires a collection of many fonts. In Emacs, such a collection is
934 called a @dfn{fontset}. A fontset is defined by a list of fonts, each
935 assigned to handle a range of character codes.
937 Each fontset has a name, like a font. The available X fonts are
938 defined by the X server; fontsets, however, are defined within Emacs
939 itself. Once you have defined a fontset, you can use it within Emacs by
940 specifying its name, anywhere that you could use a single font. Of
941 course, Emacs fontsets can use only the fonts that the X server
942 supports; if certain characters appear on the screen as hollow boxes,
943 this means that the fontset in use for them has no font for those
944 characters.@footnote{The installation instructions have information on
945 additional font support.}
947 Emacs creates two fontsets automatically: the @dfn{standard fontset}
948 and the @dfn{startup fontset}. The standard fontset is most likely to
949 have fonts for a wide variety of non-ASCII characters; however, this is
950 not the default for Emacs to use. (By default, Emacs tries to find a
951 font which has bold and italic variants.) You can specify use of the
952 standard fontset with the @samp{-fn} option, or with the @samp{Font} X
953 resource (@pxref{Font X}). For example,
956 emacs -fn fontset-standard
959 A fontset does not necessarily specify a font for every character
960 code. If a fontset specifies no font for a certain character, or if it
961 specifies a font that does not exist on your system, then it cannot
962 display that character properly. It will display that character as an
965 @vindex highlight-wrong-size-font
966 The fontset height and width are determined by the ASCII characters
967 (that is, by the font used for ASCII characters in that fontset). If
968 another font in the fontset has a different height, or a different
969 width, then characters assigned to that font are clipped to the
970 fontset's size. If @code{highlight-wrong-size-font} is non-@code{nil},
971 a box is displayed around these wrong-size characters as well.
973 @node Defining Fontsets
974 @section Defining fontsets
976 @vindex standard-fontset-spec
977 @cindex standard fontset
978 Emacs creates a standard fontset automatically according to the value
979 of @code{standard-fontset-spec}. This fontset's name is
982 -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard
986 or just @samp{fontset-standard} for short.
988 Bold, italic, and bold-italic variants of the standard fontset are
989 created automatically. Their names have @samp{bold} instead of
990 @samp{medium}, or @samp{i} instead of @samp{r}, or both.
992 @cindex startup fontset
993 If you specify a default ASCII font with the @samp{Font} resource or
994 the @samp{-fn} argument, Emacs generates a fontset from it
995 automatically. This is the @dfn{startup fontset} and its name is
996 @code{fontset-startup}. It does this by replacing the @var{foundry},
997 @var{family}, @var{add_style}, and @var{average_width} fields of the
998 font name with @samp{*}, replacing @var{charset_registry} field with
999 @samp{fontset}, and replacing @var{charset_encoding} field with
1000 @samp{startup}, then using the resulting string to specify a fontset.
1002 For instance, if you start Emacs this way,
1005 emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"
1009 Emacs generates the following fontset and uses it for the initial X
1013 -*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup
1016 With the X resource @samp{Emacs.Font}, you can specify a fontset name
1017 just like an actual font name. But be careful not to specify a fontset
1018 name in a wildcard resource like @samp{Emacs*Font}---that wildcard
1019 specification applies to various other purposes, such as menus, and
1020 menus cannot handle fontsets.
1022 You can specify additional fontsets using X resources named
1023 @samp{Fontset-@var{n}}, where @var{n} is an integer starting from 0.
1024 The resource value should have this form:
1027 @var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}}
1031 @var{fontpattern} should have the form of a standard X font name, except
1032 for the last two fields. They should have the form
1033 @samp{fontset-@var{alias}}.
1035 The fontset has two names, one long and one short. The long name is
1036 @var{fontpattern}. The short name is @samp{fontset-@var{alias}}. You
1037 can refer to the fontset by either name.
1039 The construct @samp{@var{charset}:@var{font}} specifies which font to
1040 use (in this fontset) for one particular character set. Here,
1041 @var{charset} is the name of a character set, and @var{font} is the
1042 font to use for that character set. You can use this construct any
1043 number of times in defining one fontset.
1045 For the other character sets, Emacs chooses a font based on
1046 @var{fontpattern}. It replaces @samp{fontset-@var{alias}} with values
1047 that describe the character set. For the ASCII character font,
1048 @samp{fontset-@var{alias}} is replaced with @samp{ISO8859-1}.
1050 In addition, when several consecutive fields are wildcards, Emacs
1051 collapses them into a single wildcard. This is to prevent use of
1052 auto-scaled fonts. Fonts made by scaling larger fonts are not usable
1053 for editing, and scaling a smaller font is not useful because it is
1054 better to use the smaller font in its own size, which Emacs does.
1056 Thus if @var{fontpattern} is this,
1059 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
1063 the font specification for ASCII characters would be this:
1066 -*-fixed-medium-r-normal-*-24-*-ISO8859-1
1070 and the font specification for Chinese GB2312 characters would be this:
1073 -*-fixed-medium-r-normal-*-24-*-gb2312*-*
1076 You may not have any Chinese font matching the above font
1077 specification. Most X distributions include only Chinese fonts that
1078 have @samp{song ti} or @samp{fangsong ti} in @var{family} field. In
1079 such a case, @samp{Fontset-@var{n}} can be specified as below:
1082 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
1083 chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
1087 Then, the font specifications for all but Chinese GB2312 characters have
1088 @samp{fixed} in the @var{family} field, and the font specification for
1089 Chinese GB2312 characters has a wild card @samp{*} in the @var{family}
1092 @findex create-fontset-from-fontset-spec
1093 The function that processes the fontset resource value to create the
1094 fontset is called @code{create-fontset-from-fontset-spec}. You can also
1095 call this function explicitly to create a fontset.
1097 @xref{Font X}, for more information about font naming in X.
1099 @node Undisplayable Characters
1100 @section Undisplayable Characters
1102 Your terminal may not be able to display some non-@sc{ascii} characters.
1103 Most non-windowing terminals can only use a single character set,
1104 specified by the variable @code{default-terminal-coding-system}
1105 (@pxref{Specify Coding}) and characters which can't be encoded in it are
1106 displayed as @samp{?} by default. Windowing terminals may not have the
1107 necessary font available to display a given character and display a
1108 hollow box instead. You can change the default behavior.
1110 If you use Latin-1 characters but your terminal can't display Latin-1,
1111 you can arrange to display mnemonic @sc{ascii} sequences instead, e.g.@:
1112 @samp{"o} for o-umlaut. Load the library @file{iso-ascii} to do this.
1114 If your terminal can display Latin-1, you can display characters from
1115 other European character sets using a mixture of equivalent Latin-1
1116 characters and @sc{ascii} mnemonics. Use the Custom option
1117 @code{latin1-display} to enable this. The mnemonic @sc{ascii} sequences
1118 mostly correspond to those of the prefix input methods.
1120 @node Single-Byte Character Support
1121 @section Single-byte Character Set Support
1123 @cindex European character sets
1124 @cindex accented characters
1125 @cindex ISO Latin character sets
1126 @cindex Unibyte operation
1127 @vindex enable-multibyte-characters
1128 The ISO 8859 Latin-@var{n} character sets define character codes in
1129 the range 160 to 255 to handle the accented letters and punctuation
1130 needed by various European languages (and some non-European ones).
1131 If you disable multibyte
1132 characters, Emacs can still handle @emph{one} of these character codes
1133 at a time. To specify @emph{which} of these codes to use, invoke
1134 @kbd{M-x set-language-environment} and specify a suitable language
1135 environment such as @samp{Latin-@var{n}}.
1137 For more information about unibyte operation, see @ref{Enabling
1138 Multibyte}. Note particularly that you probably want to ensure that
1139 your initialization files are read as unibyte if they contain non-ASCII
1142 @vindex unibyte-display-via-language-environment
1143 Emacs can also display those characters, provided the terminal or font
1144 in use supports them. This works automatically. Alternatively, if you
1145 are using a window system, Emacs can also display single-byte characters
1146 through fontsets, in effect by displaying the equivalent multibyte
1147 characters according to the current language environment. To request
1148 this, set the variable @code{unibyte-display-via-language-environment}
1149 to a non-@code{nil} value.
1151 @cindex @code{iso-ascii} library
1152 If your terminal does not support display of the Latin-1 character
1153 set, Emacs can display these characters as ASCII sequences which at
1154 least give you a clear idea of what the characters are. To do this,
1155 load the library @code{iso-ascii}. Similar libraries for other
1156 Latin-@var{n} character sets could be implemented, but we don't have
1159 @findex standard-display-8bit
1160 @cindex 8-bit display
1161 Normally non-ISO-8859 characters (between characters 128 and 159
1162 inclusive) are displayed as octal escapes. You can change this for
1163 non-standard `extended' versions of ISO-8859 character sets by using the
1164 function @code{standard-display-8bit} in the @code{disp-table} library.
1166 There are several ways you can input single-byte non-ASCII
1172 @findex set-keyboard-coding-system
1173 @vindex keyboard-coding-system
1174 If your keyboard can generate character codes 128 and up, representing
1175 non-ASCII characters, use the command @code{M-x
1176 set-keyboard-coding-system} or the Custom option
1177 @code{keyboard-coding-system} to specify this in the same way as for
1178 multibyte usage (@pxref{Specify Coding}).
1180 It is not necessary to do this under a window system which can
1181 distinguish 8-bit characters and Meta keys. If you do this on a normal
1182 terminal, you will probably need to use @kbd{ESC} to type Meta
1183 characters.@footnote{In some cases, such as the Linux console and
1184 @code{xterm}, you can arrange for Meta to be converted to @kbd{ESC} and
1185 still be able type 8-bit characters present directly on the keyboard or
1186 using @kbd{Compose} or @kbd{AltGr} keys.} @xref{User Input}.
1189 You can use an input method for the selected language environment.
1190 @xref{Input Methods}. When you use an input method in a unibyte buffer,
1191 the non-ASCII character you specify with it is converted to unibyte.
1194 @cindex @code{iso-transl} library
1195 @cindex compose character
1196 @cindex dead character
1198 For Latin-1 only, you can use the
1199 key @kbd{C-x 8} as a ``compose character'' prefix for entry of
1200 non-ASCII Latin-1 printing characters. @kbd{C-x 8} is good for
1201 insertion (in the minibuffer as well as other buffers), for searching,
1202 and in any other context where a key sequence is allowed.
1204 @kbd{C-x 8} works by loading the @code{iso-transl} library. Once that
1205 library is loaded, the @key{ALT} modifier key, if you have one, serves
1206 the same purpose as @kbd{C-x 8}; use @key{ALT} together with an accent
1207 character to modify the following letter. In addition, if you have keys
1208 for the Latin-1 ``dead accent characters'', they too are defined to
1209 compose with the following character, once @code{iso-transl} is loaded.
1210 Use @kbd{C-x 8 C-h} to list the available translations as mnemonic
1214 @cindex @code{iso-acc} library
1215 @cindex ISO Accents mode
1216 @findex iso-accents-mode
1217 @cindex Latin-1, Latin-2 and Latin-3 input mode
1218 For Latin-1, Latin-2 and Latin-3, @kbd{M-x iso-accents-mode} installs a
1219 minor mode which provides a facility like the @code{latin-1-prefix}
1220 input method but independent of the Leim package. This mode is
1221 buffer-local. It can be customized for various languages with @kbd{M-x
1222 iso-accents-customize}.