1-- $XFree86: xc/programs/xterm/README.i18n,v 1.1 2003/11/13 01:16:37 dickey Exp $ 2 3Using xterm in your language 4============================ 5 6Since XFree86 version 4.0, the internationalization (i18n) feature of 7xterm is gradually improved. Xterm is being improved even now. You 8need only set the standard locale environment variables such as 9LC_CTYPE, LC_ALL, LC_CTYPE, or LANG. Once the locale is set up you can 10use xterm in your favorite character encoding. 11 12This document explains how the i18n feature is realized and how to 13configure xterm for your character encoding. 14 15Refer to locale(7) for details of the locale mechanism. 16 17 18Basic i18n-related settings and resources 19========================================= 20 21These settings apply to XFree86 xterm patch #181, and the program luit 22which is distributed with XFree86 4.4 23 241. Usage of "locale mode" 25 26 On startup, xterm must be in "locale mode" to make it follow the 27 current locale. You can invoke xterm in locale mode in these ways: 28 29 a. Set "vt100.locale" resource "true". This resource was 30 introduced since XFree86 4.3. The default value of the "locale" 31 resource is "medium", which means xterm follows the locale only 32 in Chinese, Japanese, Korean, or Thai locales. For example, 33 34 XTerm*locale: true 35 36 in your ~/.Xresources file. 37 38 or 39 40 b. Invoke xterm with the "-lc" option. 41 422. Converter program "luit" 43 44 The "luit" must be available in the standard XFree86 binary 45 directory. It is usually available because it is part of the 46 XFree86 distribution. The standard binary directory may differ from 47 system to system. /usr/X11R6/bin/luit is an example. 48 49 "luit" is used to convert between Unicode and the character encoding 50 for your locale. When built for XFree86, xterm includes logic for 51 invoking luit. 52 533. Locale setting 54 55 Finally, you will need to configure your locale. We expect that you 56 have already configured your locale for other software. For example, 57 58 LANG=de_DE@euro 59 export LANG 60 61 in your ~/.xsession file. There are many ways to configure locale. 62 For example, your display manager may have a mechanism to invoke a 63 window manager in your favorite locale, or you may have system-wide 64 locale setting in /etc/environment. You may also have set the 65 LC_ALL variable instead of the LANG variable. 66 67 68How to use xterm in different locale temporarily 69================================================ 70 71You may sometimes need to invoke xterm in a different character encoding 72than your current locale. For example, use xterm to login remote systems 73in different locale. 74 75Do this by invoking xterm in the target locale. For example, 76 77 $ LANG=ru_RU.KOI8-R xterm & 78 79Previously, font setting has been used in such cases. 80 81 $ xterm -fn -misc-fixed-medium-r-normal--10-*-*-*-*-*-koi8-r & 82 83This does not work well in conjunction with the "locale" resource, 84because luit and xterm combined rely upon Unicode fonts. 85 86 87How to set fonts for UTF-8/locale modes 88======================================= 89 90Since xterm patch #181, xterm can automatically use Unicode fonts in 91UTF-8 mode and locale mode. Few of you will need to modify the default 92setting to display your language. In particular, Unicode fonts in 93combination with locale mode will satisfy the needs of not only 94ISO-8859-1 users but also East Asian and other non-ISO-8859-1 users. 95 96If you want to set your favorite Unicode font for UTF-8 and locale 97modes, you should add a line such as the following in your ~/.Xresources 98file: 99 100 XTerm*VT100.utf8Fonts.font: \ 101 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 102 103The leading "XTerm*" pattern is more specific than the system's 104app-defaults file, therefore it overrides the corresponding line 105beginning with 106 107 *VT100.utf8Fonts.font: 108 109Here is an additional note. If you want to display East Asian 110doublewidth characters (CJK Ideogram, Hiragana, Katakana, Hangul, 111and so on), we recommend using 112 113 -misc-fixed-medium-r-semicondensed--13-*-*-*-*-*-iso10646-1 114 115or 116 117 -misc-fixed-medium-r-normal--18-*-*-*-*-*-iso10646-1 118 119because these two fonts have corresponding doublewidth fonts. These 120fonts are used as default font and default "Large" font, respectively. 121 122 123The internals of xterm i18n 124=========================== 125 126You do not need to read this section if you only want to configure your 127xterm. Here we describe how xterm is implemented to support i18n. 128 129The original version of xterm does not support locale or character 130encoding. Its I/O stream is interpreted as a mere 8-bit index for a 131font. 132 133Beginning with XFree86 4.0, xterm supported UTF-8. It was implemented 134as a separate UTF-8 mode from the conventional 8-bit mode. Character 135encodings had no effect on the 8-bit mode. The UTF-8 mode has been 136extended to support doublewidth characters (for East Asian characters) 137and combining characters (such as accents for Latin alphabets and Thai 138vowels/tone marks). 139 140Doublewidth characters are characters that occupy two continuing 141columns on the terminal. Xterm uses separate fonts for normal 142(singlewidth) characters and doublewidth characters. Though xterm has 143configuration items for specifying doublewidth fonts, it will 144automatically search for a font with exactly twice as wide and the same 145name as the specified normal font. 146 147The default behavior of xterm was modified to use this UTF-8 mode in 148UTF-8 locales. A command line option of "-u8" and a resource of "utf8" 149were introduced to choose UTF-8 mode. 150 151"luit" was introduced to XFree86 at version 4.2. It converts between 152UTF-8 and other encodings. When luit is invoked in a UTF-8 terminal, 153the terminal acts as if it is really running in the other encoding. 154 155Since XFree86 version 4.3, xterm provides a new mode to invoke luit 156automatically to support various encodings. The mode where xterm 157invokes luit is called "locale mode". It is the third mode following 158conventional 8-bit mode and UTF-8 mode. In the locale mode, xterm is 159aware of the current locale and character encoding. Since locale mode 160uses luit, it is based on the UTF-8 mode. That is, xterm works in UTF-8 161mode and luit works as a converter between UTF-8 and the character 162encoding for your locale. This is why the locale mode always needs 163Unicode fonts. The default behavior of xterm is modified so that the 164"locale mode" will be adopted in Chinese (Big5 and GB2312), Japanese 165(EUC-JP), Korean (EUC-KR), and Thai (ISO-8859-11, as known as TIS-620) 166locales. Locale mode is chosen for these character encodings because 167these encodings are not supported by conventional 8-bit mode even by 168changing fonts (ISO-8859-11 needs combining characters and others need 169doublewidth characters). 170 171To control the locale mode, command line options of "-lc" and "-en" and 172a resource of "locale" were introduced. The command line option of 173"-u8" and a resource of "utf8" were made obsolete by them, though 174retained for compatibility. 175 176Since XFree86 version 4.4, xterm can have two sets of default fonts, 177one for conventional 8-bit mode and another for UTF-8 and locale modes, 178by introducing the "utf8Fonts" subresource. 179 180 181Future TODO Items 182================= 183 184We anticipate that xterm's locale mode will be used increasingly in the 185future. Since the UTF-8 and locale modes use more resources than 186conventional 8-bit mode (because it needs larger fonts and another 187process "luit"), faster hardware may be needed to gain complete 188acceptance by users. However, the locale mechanism allows users 189to manipulate data in a standard form. Its usefulness compensates 190in part for reduced performance. 191 192Xterm supports antialiased fonts ("-fa" and "-fs" command line options). 193Currently UTF-8 nor locale modes do not work with antialiased fonts. 194 195Xterm does not support bi-directional or RTL languages such as Hebrew 196and Arab. A simple standard how terminal should behave for these 197languages is needed. 198 199Xterm does not support Unicode characters above U+10000. 200