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