home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 1999 August
/
PCWorld_1999-08_cd.bin
/
doc
/
HOWTO
/
Thai-HOWTO
< prev
next >
Wrap
Text File
|
1998-08-18
|
43KB
|
1,321 lines
The Linux Thai HOWTO
Poonlap Veeratanabutr, poon-v@fedu.uec.ac.jp
v0.4, 4 August 1998
This document describes how to use Thai language with Linux. This will
cover setting Thai fonts, Thai keyboard and some Thai applications.
______________________________________________________________________
Table of Contents
1. Introduction
2. Thai Input and Output
2.1 Linux console
2.1.1 Thai fonts
2.1.2 Keyboard layout
2.2 X Window system
2.2.1 Thai fonts
2.2.1.1 Installing Thai fonts
2.2.2 Thai keyboard layout There are two ways to map Thai keyboard on X window, using X Keyboard Extension (XKB) and using
2.2.2.1 XKB and Thai keyboard layout.
2.2.2.2 Thai keyboard layout with xmodmap
3. Applications with Thai language
3.1 Some X applications and Thai language
3.1.1 txterm
3.1.2 Emacs, Mule
3.1.3 vi
3.1.4 pine
3.1.5 Netscape
3.1.6 Ss, Simple thai word Separator
3.1.7 Xzthai, X keyboard configurator + simple editor
3.2 Printing Thai document
3.2.1 Latex and Thai language
3.2.2 Latex's configuration for Thai language
3.2.3 Use Thai
3.2.4 Editing
3.3 X Application Resources
3.4 Thai Extension for Linux (TE)
4. References and FTP sites
4.1 Other documents of relevance
4.2 Thai related stuffs
4.3 FTP and Web sites
5. Acknowledgments and Copyright
______________________________________________________________________
1. Introduction
It's about one year that I didn't update this document. There were a
lot of movement in Thai computing and using Linux in Thailand. For
example, Linux boxes are used as server in many schools in Thailand
<http://www.school.net.th>.
The purpose of this document is to show how to set your Linux to use
Thai language. I use Linux RedHat 5.0 as I wrote this document, so
directories which I mention in this document may be different from
other distribution.
First I would like to talk about Thai standard character set. Thai
standard character set is TIS-620. There are also other Thai standard
character sets such as ISO-IR-166, CP874, etc. Please see
http://www.inet.co.th/cyberclub/trin/thairef/
<http://www.inet.co.th/cyberclub/trin/thairef/> for further
information about Thai standard character set. TIS-620 is 8-bit
character set. It has the same range as ISO-8859-1, so we can use
apllications that support ISO-8859-1 character set also. Although we
can use Thai language with apllications that support ISO-8859-1
character set, but it does not mean those applications support Thai
language.
Thai characters are different from English characters. There is a
variation of position, normal position, character can be on other
character, character can be under other character. There is no space
between words. These are some problems in developing Thai supported
application.
You can find the lastest version of Thai-HOWTO document from
http://www.fedu.uec.ac.jp/ZzzThai/Linux
<http://www.fedu.uec.ac.jp/ZzzThai/Linux>. Your comment is welcome.
2. Thai Input and Output
2.1. Linux console
Thai characters do not display properly in Linux console. If you
mainly use X window, you may pass this section.
2.1.1. Thai fonts
You can obtain Linux Thai console fonts which created by Mr. Phaisarn
Techajaruwong from ZzzThai ftp site
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Sofware/Linux/fonts/console>
For example, there is a font name "phaisarn.psf". Put it in
/usr/lib/kbd/consolefonts/ directory. Then, you can load the new font
from Linux console by command
%setfont phaisarn.psf
2.1.2. Keyboard layout
You can set keyboard behavior as you like by using loadkeys command.
Usually, you use loadkeys to load the file located in
/usr/lib/kbd/keytables. You can create a US/Thai keyboard-map file and
save it in this directory. Here is a sample.
keycode 0 =
keycode 1 = Escape Escape
alt keycode 1 = Meta_Escape
keycode 2 = +one exclam +0x0e5 plus
alt keycode 2 = Meta_one
alt shift keycode 2 = Meta_exclam
keycode 3 = +two at +slash 0x0f1
control keycode 3 = nul
control shift keycode 3 = nul
alt keycode 3 = Meta_two
alt shift keycode 3 = Meta_at
keycode 4 = +three numbersign +underscore 0x0f2
control keycode 4 = Escape
alt keycode 4 = Meta_three
alt shift keycode 4 = Meta_numbersign
keycode 5 = +four dollar +0x0c0 0x0f3
control keycode 5 = Control_backslash
alt keycode 5 = Meta_four
alt shift keycode 5 = Meta_dollar
keycode 6 = +five percent +0x0b6 0x0f4
control keycode 6 = Control_bracketright
alt keycode 6 = Meta_five
alt shift keycode 6 = Meta_percent
keycode 7 = +six asciicircum +0x0d8 0x0d9
control keycode 7 = Control_asciicircum
alt keycode 7 = Meta_six
alt shift keycode 7 = Meta_asciicircum
keycode 8 = +seven ampersand +0x0d6 0x0df
control keycode 8 = Control_underscore
alt keycode 8 = Meta_seven
keycode 9 = +eight asterisk +0x0a4 0x0f5
control keycode 9 = Delete
alt keycode 9 = Meta_eight
keycode 10 = +nine parenleft +0x0b5 0x0d6
alt keycode 10 = Meta_nine
keycode 11 = +zero parenright +0x0a8 0x0f7
alt keycode 11 = Meta_zero
keycode 12 = +minus underscore +0x0a2 0x0f8
control keycode 12 = Control_underscore
control shift keycode 12 = Control_underscore
alt keycode 12 = Meta_minus
keycode 13 = +equal plus +0x0aa 0x0f9
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete Delete Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab Tab Tab
alt keycode 15 = Meta_Tab
keycode 16 = +q Q +0x0e6 0x0f0
keycode 17 = +w W +0x0e4 quotedbl
keycode 18 = +e E +0x0d3 0x0ae
keycode 19 = +r R +0x0be 0x0b1
keycode 20 = +t T +0x0d0 0x0b8
keycode 21 = +y Y +0x0d1 0x0ed
keycode 22 = +u U +0x0d5 0x0ea
keycode 23 = +i I +0x0c3 0x0b3
keycode 24 = +o O +0x0b9 0x0cf
keycode 25 = +p P +0x0c2 0x0ad
keycode 26 = +bracketleft braceleft +0x0ba 0x0b0
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
alt shift keycode 26 = Meta_braceleft
keycode 27 = +bracketright braceright +0x0c5 comma
control keycode 27 = Control_bracketright
alt keycode 27 = Meta_bracketright
alt shift keycode 27 = Meta_braceright
keycode 28 = Return Return Return Return
alt keycode 28 = 0x080d
keycode 29 = Control Control Control Control
keycode 30 = +a A +0x0bf 0x0c4
keycode 31 = +s S +0x0cb 0x0a6
keycode 32 = +d D +0x0a1 0x0af
keycode 33 = +f F +0x0b4 0x0e2
keycode 34 = +g G +0x0e0 0x0ac
keycode 35 = +h H +0x0e9 0x0e7
keycode 36 = +j J +0x0e8 0x0eb
keycode 37 = +k K +0x0d2 0x0c9
keycode 38 = +l L +0x0ca 0x0c8
keycode 39 = +semicolon colon +0x0c7 0x0ab
alt keycode 39 = Meta_semicolon
keycode 40 = +apostrophe quotedbl +0x0a7 period
control keycode 40 = Control_g
alt keycode 40 = Meta_apostrophe
keycode 41 = +grave asciitilde +minus percent
control keycode 41 = nul
alt keycode 41 = Meta_grave
keycode 42 = Shift Shift Shift Shift
keycode 43 = +backslash bar +0x0a3 0x0a5
control keycode 43 = Control_backslash
alt keycode 43 = Meta_backslash
alt shift keycode 43 = Meta_bar
keycode 44 = +z Z +0x0bc parenleft
keycode 45 = +x X +0x0bb parenright
keycode 46 = +c C +0x0e1 0x0a9
keycode 47 = +v V +0x0cd 0x0ce
keycode 48 = +b B +0x0d4 0x0da
keycode 49 = +n N +0x0d7 0x0ec
keycode 50 = +m M +0x0b7 question
keycode 51 = +comma less +0x0c1 0x0b2
alt keycode 51 = Meta_comma
alt shift keycode 51 = Meta_less
keycode 52 = +period greater +0x0e3 0x0cc
alt keycode 52 = Meta_period
alt shift keycode 52 = Meta_greater
keycode 53 = +slash question +0x0bd 0x0c6
control keycode 53 = Delete
alt keycode 53 = Meta_slash
keycode 54 = Shift Shift Shift Shift
keycode 55 = KP_Multiply
keycode 56 = Alt Alt Alt Alt
keycode 57 = space space space space
control keycode 57 = nul
alt keycode 57 = Meta_space
keycode 58 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock
keycode 59 = F1 F11 Console_13
control keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
keycode 60 = F2 F12 Console_14
control keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
keycode 61 = F3 F13 Console_15
control keycode 61 = F3
alt keycode 61 = Console_3
control alt keycode 61 = Console_3
keycode 62 = F4 F14 Console_16
control keycode 62 = F4
alt keycode 62 = Console_4
control alt keycode 62 = Console_4
keycode 63 = F5 F15 Console_17
control keycode 63 = F5
alt keycode 63 = Console_5
control alt keycode 63 = Console_5
keycode 64 = F6 F16 Console_18
control keycode 64 = F6
alt keycode 64 = Console_6
control alt keycode 64 = Console_6
keycode 65 = F7 F17 Console_19
control keycode 65 = F7
alt keycode 65 = Console_7
control alt keycode 65 = Console_7
keycode 66 = F8 F18 Console_20
control keycode 66 = F8
alt keycode 66 = Console_8
control alt keycode 66 = Console_8
keycode 67 = F9 F19 Console_21
control keycode 67 = F9
alt keycode 67 = Console_9
control alt keycode 67 = Console_9
keycode 68 = F10 F20 Console_22
control keycode 68 = F10
alt keycode 68 = Console_10
control alt keycode 68 = Console_10
keycode 69 = Num_Lock
keycode 70 = Scroll_Lock Show_Memory Show_Registers
control keycode 70 = Show_State
alt keycode 70 = Scroll_Lock
keycode 71 = KP_7
alt keycode 71 = Ascii_7
keycode 72 = KP_8
alt keycode 72 = Ascii_8
keycode 73 = KP_9
alt keycode 73 = Ascii_9
keycode 74 = KP_Subtract
keycode 75 = KP_4
alt keycode 75 = Ascii_4
keycode 76 = KP_5
alt keycode 76 = Ascii_5
keycode 77 = KP_6
alt keycode 77 = Ascii_6
keycode 78 = KP_Add
keycode 79 = KP_1
alt keycode 79 = Ascii_1
keycode 80 = KP_2
alt keycode 80 = Ascii_2
keycode 81 = KP_3
alt keycode 81 = Ascii_3
keycode 82 = KP_0
alt keycode 82 = Ascii_0
keycode 83 = KP_Period
altgr control keycode 83 = Boot
control alt keycode 83 = Boot
keycode 84 = Last_Console
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
keycode 87 = F11 F11 Console_23
control keycode 87 = F11
alt keycode 87 = Console_11
control alt keycode 87 = Console_11
keycode 88 = F12 F12 Console_24
control keycode 88 = F12
alt keycode 88 = Console_12
control alt keycode 88 = Console_12
keycode 89 =
keycode 90 =
keycode 91 =
keycode 92 =
keycode 93 =
keycode 94 =
keycode 95 =
keycode 96 = KP_Enter
keycode 97 = Control
keycode 98 = KP_Divide
keycode 99 = Control_backslash
control keycode 99 = Control_backslash
alt keycode 99 = Control_backslash
keycode 100 = AltGr_Lock
keycode 101 = Break
keycode 102 = Find
keycode 103 = Up
keycode 104 = Prior
shift keycode 104 = Scroll_Backward
keycode 105 = Left
alt keycode 105 = Decr_Console
keycode 106 = Right
alt keycode 106 = Incr_Console
keycode 107 = Select
keycode 108 = Down
keycode 109 = Next
shift keycode 109 = Scroll_Forward
keycode 110 = Insert
keycode 111 = Remove
altgr control keycode 111 = Boot
control alt keycode 111 = Boot
keycode 112 =
keycode 113 =
keycode 114 =
keycode 115 =
keycode 116 =
keycode 117 =
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =
string F1 = "\033[[A"
string F2 = "\033[[B"
string F3 = "\033[[C"
string F4 = "\033[[D"
string F5 = "\033[[E"
string F6 = "\033[17~"
string F7 = "\033[18~"
string F8 = "\033[19~"
string F9 = "\033[20~"
string F10 = "\033[21~"
string F11 = "\033[23~"
string F12 = "\033[24~"
string F13 = "\033[25~"
string F14 = "\033[26~"
string F15 = "\033[28~"
string F16 = "\033[29~"
string F17 = "\033[31~"
string F18 = "\033[32~"
string F19 = "\033[33~"
string F20 = "\033[34~"
string Find = "\033[1~"
string Insert = "\033[2~"
string Remove = "\033[3~"
string Select = "\033[4~"
string Prior = "\033[5~"
string Next = "\033[6~"
string F21 = ""
string F22 = ""
string F23 = ""
string F24 = ""
string F25 = ""
string F26 = ""
Suppose you save this file as thai.map. From Linux console, use
command loadkeys to load thai.map.
%loadkeys thai.map
You can switch to Thai keyboard by pressing the right Alt key. If you
want to switch the keyboard back, press the right Alt key again.
2.2. X Window system
2.2.1. Thai fonts
You can obtain Thai fonts in bdf format or pcf format from internet.
You can also use scalable fonts such as Type1 or TrueType fonts. But I
will not describe about these.
2.2.1.1. Installing Thai fonts
You must log in as root. Let's put Thai fonts in
/usr/X11R6/lib/X11/fonts/misc/, this is a default font path. Change
directory to /usr/X11R6/lib/X11/fonts/misc/ and run command
%mkfontdir
%xset fp rehash
If you put Thai fonts in different directory, you must use xset to add
the new font path. Please see man-page for further information. You
can check the new fonts by running command xlsfonts and see whether
there are Thai fonts or not. If you can not see any Thai fonts from
this command, you may need to restart X window.
2.2.2. There are two ways to map Thai keyboard on X window, using X
Keyboard Extension (XKB) and using xmodmap . Please select how you map
Thai keyboard. I recommend using XKB. Thai keyboard layout
2.2.2.1. XKB and Thai keyboard layout.
Beginning with XFree86 3.1.2D, you can use the new X11R6.1 XKEYBOARD
extension to manage the keyboard layout. This is very helpful.
During X server configuration with xf86config you will be asked about
XKB, if you want to to set Thai keyboard layout for your system, say
yes. There are a list of pre-configured keymaps. Choose Standard
101-key, Thai encoding.
XF86Setup is the graphical X server configuration utility for XFree86
X server. It is easier than traditional xf86config. You can select a
keyboard layout easily with this tool.
Ther are many choices of keyboard switch key to select. The default is
LeftAlt+RightShift switch to Thai and LeftAlt+LeftShift switch to US.
You can type Thai characters in any applications which support
ISO-8859-1 character set, but don't forget to use Thai fonts with
those applications too.
I found that pre-configured keymaps that came with XFree86-3.2 is not
correct. You may not be able to type THO THUNG which located at " 5
key " . To fix this problem, you should add the line
key <AE05> { [], [ paragraph, ocircumflex ] };
in the file /usr/X11R6/lib/X11/xkb/symbols/th as the example.
.................
key <AE03> { [], [ minus, ograve ] };
key <AE04> { [], [ Agrave, oacute ] };
key <AE05> { [], [ paragraph, ocircumflex ] };
key <AE06> { [], [ Ooblique, Ugrave ] };
key <AE07> { [], [ Odiaeresis, ssharp ] };
.................
You can not type SORUSI also. Please change the line from
key <AC08> { [], [ Ograve, eacute ] };
to
key <AC08> { [], [ Ograve, Eacute ] };
Note that eacute is equal to MAITHO and Eacute is equal to SORUSI.
There are also XKB extension utilities such as setxkbmap, xkbcomp,
etc. Please see man-page for more information. I recommend to use
xkbvled. The leds will be on when you are using Thai keyboard so you
can know your keyboard's status.
The following is part of XF86Config file about keyboard section. If
you want to configure the keyboard by hand, change the content of
/usr/X11R6/lib/X11/XF86Config as an example below. This configuration
uses the default toggle key.
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5
LeftAlt Meta
RightAlt Meta
ScrollLock Compose
RightCtl Control
# XkbDisable
XkbKeycodes "xfree86"
XkbTypes "default"
XkbCompat "default"
XkbSymbols "us(pc101)"
XkbGeometry "pc"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "th"
EndSection
If you use XKB extension, Thai keyboard mapping with xmodmap may not
work. See XF86Config man-page for mor information.
2.2.2.2. Thai keyboard layout with xmodmap
You can use the utility xmodmap to map Thai keyboard. Normally
xmodmap is used to load a keyboard configured file. For most Linux
distributions, when you start X window with startx, X server will find
.Xmodmap in /usr/X11R6/lib/X11/xinit/ first. If .Xmodmap does not
exist, X server will find .Xmodmap in your home directory. Please see
the content of /usr/X11R6/lib/X11/xinit/xinitrc.
The following is the sample of .Xmodmap for Thai Kedmanee keyboard
layout.
!
! Linux/XFree86 Thai Kedmanee layout (based on US keyboard)
! Use ScrollLock to switch to Thai keyboard.
! This file will work with XFree86 only.
!
keycode 0x09 = Escape
keycode 0x43 = F1
keycode 0x44 = F2
keycode 0x45 = F3
keycode 0x46 = F4
keycode 0x47 = F5
keycode 0x48 = F6
keycode 0x49 = F7
keycode 0x4A = F8
keycode 0x4B = F9
keycode 0x4C = F10
keycode 0x5F = F11
keycode 0x60 = F12
keycode 0x6F = Print
keycode 0x4E = Mode_switch XF86ModeLock
keycode 0x6E = Pause
keycode 0x31 = grave asciitilde minus percent
keycode 0x0A = 1 exclam 0x0e5 plus
keycode 0x0B = 2 at slash 0x0f1
keycode 0x0C = 3 numbersign underscore 0x0f2
keycode 0x0D = 4 dollar 0x0c0 0x0f3
keycode 0x0E = 5 percent 0x0b6 0x0f4
keycode 0x0F = 6 asciicircum 0x0d8 0x0d9
keycode 0x10 = 7 ampersand 0x0d6 0x0df
keycode 0x11 = 8 asterisk 0x0a4 0x0f5
keycode 0x12 = 9 parenleft 0x0b5 0x0f6
keycode 0x13 = 0 parenright 0x0a8 0x0f7
keycode 0x14 = minus underscore 0x0a2 0x0f8
keycode 0x15 = equal plus 0x0aa 0x0f9
keycode 0x33 = backslash bar 0x0a3 0x0a5
keycode 0x16 = BackSpace
keycode 0x6A = Insert
keycode 0x61 = Home
keycode 0x63 = Prior
keycode 0x4D = Num_Lock
keycode 0x70 = KP_Divide
keycode 0x3F = KP_Multiply
keycode 0x52 = KP_Subtract
keycode 0x17 = Tab
keycode 0x18 = q Q 0x0e6 0x0f0
keycode 0x19 = w W 0x0e4 quotedbl
keycode 0x1A = e E 0x0d3 0x0ae
keycode 0x1B = r R 0x0be 0x0b1
keycode 0x1C = t T 0x0d0 0x0b8
keycode 0x1D = y Y 0x0d1 0x0ed
keycode 0x1E = u U 0x0d5 0x0ea
keycode 0x1F = i I 0x0c3 0x0b3
keycode 0x20 = o O 0x0b9 0x0cf
keycode 0x21 = p P 0x0c2 0x0ad
keycode 0x22 = bracketleft braceleft 0x0ba 0x0b0
keycode 0x23 = bracketright braceright 0x0c5 comma
keycode 0x24 = Return
keycode 0x6B = Delete
keycode 0x67 = End
keycode 0x69 = Next
keycode 0x4F = KP_7
keycode 0x50 = KP_8
keycode 0x51 = KP_9
keycode 0x56 = KP_Add
keycode 0x42 = Caps_Lock
keycode 0x26 = a A 0x0bf 0x0c4
keycode 0x27 = s S 0x0cb 0c0a6
keycode 0x28 = d D 0x0a1 0x0af
keycode 0x29 = f F 0x0b4 0x0e2
keycode 0x2A = g G 0x0e0 0x0ac
keycode 0x2B = h H 0x0e9 0x0e7
keycode 0x2C = j J 0x0e8 0x0eb
keycode 0x2D = k K 0x0d2 0x0c9
keycode 0x2E = l L 0x0ca 0x0c8
keycode 0x2F = semicolon colon 0x0c7 0x0ab
keycode 0x30 = apostrophe quotedbl 0x0a7 period
keycode 0x53 = KP_4
keycode 0x54 = KP_5
keycode 0x55 = KP_6
keycode 0x32 = Shift_L
keycode 0x34 = z Z 0x0bc parenleft
keycode 0x35 = x X 0x0bb parenright
keycode 0x36 = c C 0x0e1 0x0a9
keycode 0x37 = v V 0x0cd 0x0ce
keycode 0x38 = b B 0x0d4 0x0da
keycode 0x39 = n N 0x0d7 0x0ec
keycode 0x3A = m M 0x0b7 question
keycode 0x3B = comma less 0x0c1 0x0b2
keycode 0x3C = period greater 0x0e3 0x0cc
keycode 0x3D = slash question 0x0bd 0x0c6
keycode 0x3E = Shift_R
keycode 0x62 = Up
keycode 0x57 = KP_1
keycode 0x58 = KP_2
keycode 0x59 = KP_3
keycode 0x6C = KP_Enter
keycode 0x25 = Control_L
keycode 0x40 = Alt_L Meta_L
keycode 0x41 = space
keycode 0x71 = Alt_R Meta_R
keycode 0x6D = Control_R
keycode 0x64 = Left
keycode 0x68 = Down
keycode 0x66 = Right
keycode 0x5A = KP_0
keycode 0x5B = KP_Decimal
clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R
add Mod2 = Mode_switch
Just put .Xmodmap in your home directory will be OK. When you start X
window, X server will load this file.
You can also load .Xmodmap from command line.
%xmodmap ~/.Xmodmap
In above .Xmodmap file, US/Thai switch key is assigned to keycode 0x4E
(78), Scroll Lock key, with the statement
______________________________________________________________________
keycode 0x4E = Mode_switch XF86ModeLock
______________________________________________________________________
XF86ModeLock is the special keysym for XFree86 X server. If you don't
add this keysym, you have to hold the scroll lock key while you are
typing Thai characters. Note that if you use commercial X server, some
keycodes are different. You may have to map keyboard by yourself. See
man-pages of X and xev for further information.
Note: If you are using XFree86 version 3.1.2D or later, you need to
add the line XkbDisable in keyboard section of XF86Config file. You
may config the keyboard section like the following sample.
Section "Keyboard"
Protocol "Standard"
AutoRepeat 500 5
LeftAlt Meta
RightAlt ModeShift
ScrollLock ModeLock
RightCtl Compose
XkbDisable
EndSection
3. Applications with Thai language
This is the tricky part. Most applications support ISO-8859-1
character set. For example, emacs can display ISO-8859-1 character. If
we set emacs to display ISO-8859-1 and use Thai font, you can edit
Thai document with emacs. But this is not a good policy. You should
avoid using this trick as possible. What we need is Thai locale or
Thai supported applications to manage these things.
To make X window application displays Thai font, you should run the
application with -fn option. For example,
%xedit -fn thai8x16
Note that thai8x16 is just a one of Thai font names. You can see all
available fonts by command xlfonts. If you don't want to fill -fn
option every time you run application. You should set Thai font in
your ~/.Xdefaults or ~/.Xresources like this
XTerm*font: thai8x16
3.1. Some X applications and Thai language
3.1.1. txterm
txterm is Thai version of xterm. There are several programs running
under xterm such as shell, pine, vi, less, etc. We can type Thai
characters without any problems with txterm. Txterm also provides its
own Thai input method by pressing " F1 " key. Txterm will use fonts
thai9x13 as default Thai font. You can change this by add -fn option.
You can get txterm from Thaigate <http://thaigate.nacsis.ac.jp> or
ZzzThai
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux>.
bash shell :
Normally, shell accepts only ASCII character set. To type Thai
characters in shell command line, you should set environment
LC_CTYPE to iso_8859_1.
I don't set LC_CTYPE environment variable to iso_8859_1 because
this environment variable will effect other applications too.
With bash shell, you can specify which environment variable to
be passed to the application. For example, I can make a fake
Thai X terminal with this syntax.
LC_CTYPE=iso_8859_1 xterm -fn thai8x16
This xterm display Thai characters well, but not good for typing
Thai characters. I strongly recommend you to use txterm.
ls :
If you name a filename in Thai. Issue the command as
ls -N
You may set alias in ~/.bashrc or ~/.cshrc, so you can type ls
without option. If you don't use ls with -N option, you may see
Thai filename as ?????.
3.1.2. Emacs, Mule
Mule stands for " Multilingual Enhancement to GNU Emacs " . It has the
same functions as emacs and supports many languages. Mule provides its
own input method, so you don't need any configuration for typing Thai.
You needs only Thai fonts for mule which you can get from, ZzzThai
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/fonts/>
or Etl site <ftp://etlport.etl.go.jp/pub/mule/fonts/ETL/>. These Thai
fonts are fixed width fonts.
You need some configuration for mule. Puts the following lines in your
.emacs.
;;
;; Thai System, add in .emacs
;;
(set-file-coding-system-for-read '*tis620*)
(set-default-file-coding-system '*tis620*)
(set-display-coding-system '*tis620*)
(set-keyboard-coding-system '*tis620*)
(setq-deafault quail-current-package (assoc "thai" quail-package-alist))
Add the following lines in .Xdefaults.
!
! Emacs, Mule - Font menu
!
Emacs*FontSetList: thai14, thai16, thai24
Emacs*FontSet-thai14:\
-etl-fixed-medium-r-normal--14-140-72-72-m-70-tis620.2529-1
Emacs*FontSet-thai16:\
-etl-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1
Emacs*FontSet-thai24:\
-etl-fixed-medium-r-normal--24-500-72-72-m-120-tis620.2529-1
When you hold shift key and press left mouse's button, you can select
Thai fonts to display in mule window. To type Thai characters, press
" Ctrl + ] " . To type English, press " Ctrl + ] " again.
You can get mule from ElectroTechnical Laboratory(ETL)
<ftp://etlport.etl.go.jp/pub/mule/>
3.1.3. vi
Vi should be run on txterm.
3.1.4. pine
In the past, we could not send 8-bit characters through E-mail. Now,
although mail transfer agent can handle 8-bit characters but some old
mail transfer agent can not. We can send Thai e-mail by using e-mail
application that supports MIME (Multipurpose Internet Mail Extensions)
E-mail applications that support MIME are pine, elm, Netscape mail,
etc.
Put the following definition in your ~/.pinerc file:
character-set=ISO-8859-1
This can also be set via the Setup option in pine window. You can find
it under Config. You can read Thai news from pine, too.
Pine should be run in txterm.
3.1.5. Netscape
If you have Thai fonts in your system. Just set Thai font from
preference. Thai fonts will appear in User defined area. See
http://www.fedu.uec.ac.jp/ZzzThai/unix
<http://www.fedu.uec.ac.jp/ZzzThai/unix> for setting Thai language on
Netscape.
Some movement about Thai Mozilla project at
http://members.xoom.com/inThai/mozthai.html
<http://members.xoom.com/inThai/mozthai.html>.
3.1.6. Ss, Simple thai word Separator
ss is a dictionary based Thai word separation program similar to
cttex. It can be used to insert a configurable string between Thai
words. It can also show words that cannot be found in the dictionary.
More words can be added to the dictionary. Developed by Mr.Teera
Kittichareonpot.
We can use this program to insert < WBR > tag between Thai words in
html file. Browser will display Thai homepage better than normal html
document.
3.1.7. Xzthai, X keyboard configurator + simple editor
Xzthai, this is the Tcl/Tk application for mapping Thai keyboard on
any keyboard with graphical user interface. Also provides simple
editor and keyboard layout figure. It actually uses xmodmap program in
background to map Thai keyboard. This may be useful for commercial X
server and X server on UNIX.
3.2. Printing Thai document
Thai2ps is used to convert plain text file to postscript file.You can
use ghostscript(gs) to print your Thai document. For better quality
document, you have to use (La)TeX.
3.2.1. Latex and Thai language
Dr. Manop Wongsaisuwan first tried to use Thai language with latex. He
wrote some perl script as filter for latex source code that contains
Thai language. Then pass the result to latex. Mr. Vuthichai
Ampornaramvech used this concept and wrote a program in C language,
cttex, to handle this. It runs faster and makes Thai word segmentation
based on dictionary. Cttex also fixes the position of Thai characters
in word, so SARA and WANNAYUK will be placed in the beautiful
position.
You can find Thai latex filter from
http://thaigate.nacsis.ac.jp/files/ttex.html
<http://thaigate.nacsis.ac.jp/files/ttex.html>.
3.2.2. Latex's configuration for Thai language
You must have latex installed in your computer. First, download Thai
postscript (Type1) fonts, tfm fonts and Thai style file. These fonts
are needed by Latex. This is the list of files you should download.
tfm fonts:
dbtt.tfm dbttb.tfm dbttbi.tfm dbtti.tfm
postscript fonts:
dbtt.pfa dbttb.pfa dbttbi.pfa dbtti.pfa
style files:
thai.sty sakka.sty
Thai Latex filter:
cttex
Sample Latex file:
ttex.ttex test.ttex
There is latex's directory at /usr/lib/texmf/texmf/ (RedHat 5.0). I
will call /usr/lib/texmf/texmf/ as " $texroot " . We will concentrate
at $texroot/texmf/ directory. In $texroot/texmf/ directory, there are
many files about tex's configuration. You have to edit files in dvips,
fonts, tex subdirectories.
Add the following lines to $texroot/texmf/dvips/misc/psfonts.map
dbtt DBThaiText <dbtt.pfa
dbttb DBThaiTextBold <dbttb.pfa
dbttbi DBThaiTextBoldItalic <dbttbi.pfa
dbtti DBThaiTextItalic <dbtti.pfa
Make a new directories and copy files to the appropriate directories.
%mkdir /usr/lib/texmf/texmf/fonts/tfm/public/thai
%mkdir /usr/lib/texmf/texmf/fonts/type1/public/thai
%mkdir /usr/lib/texmf/texmf/tex/generic/thai
%cp *.tfm /usr/lib/texmf/texmf/fonts/tfm/public/thai
%cp *.pfa /usr/lib/texmf/texmf/fonts/type1/public/thai
%cp *.sty /usr/lib/texmf/texmf/tex/generic/thai
Run texhash or MakeTeXls-R(in some system) to update Tex database.
%/usr/bin/texhash
texhash: updating /usr/lib/texmf/texmf/ls-R ...
texhash: Done.
3.2.3. Use Thai LaTeX filter
We can use cttex as filter like this,
%cttex < ttex.ttex > ttex.tex
C-TTeX $Revivsion: 1.15 $
Usage : cttex [cutcode] < infile > outfile
Usage : cutcode=0 forces operation in HTML mode.
Build-in dictionary size: 9945 words
343
Done
%latex ttex.tex
...
%xdvi ttex.dvi
You can convert dvi file to postscript file by,
%dvips -o ttex.ps ttex.dvi
Finally, you can print ttex.ps by using gs or lpr. You must configure
printer before printing. See man-pages of printcap, gs, lpr for more
information.
3.2.4. Editing LaTex source file
For new latex user, lyx is helpful. But I recommend to use mule to
edit Thai latex source file because mule supports Thai language and it
is a powerful editor. You may take a look a Thai Latex tutorial
<http://www.fedu.uec.ac.jp/ZzzThai/Linux/ttex>.
3.3. X Application Resources
Because Xt based applications allow user to configure the applications
by resources. We can make the menu or label to be Thai language.
For example, if you want xman to display Thai labels. You may add
these lines in your .Xdefaults
......
!! Xman section
Xman*Font: thai8x16
Xman*helpButton.Label: ¬Φ╟┬
Xman*quitButton.Label: ══í
Xman*manpageButton.Label: ñ┘Φ┴╫═í╥├π¬Θ
......
You can use the same idea to set window manager to be more Thai
environment too.
3.4. Thai Extension for Linux (TE)
Thai Extension for Linux is a installation package comes with
applicaions and Thai fonts. You don't have to configure Linux system
and applications by yourself. Let TE do configuration task for you.
After installation, you can use Thai language suddenly. Get TE from
ftp://fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/
<ftp://fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux/>
4. References and FTP sites
4.1. Other documents of relevance
The HOWTOs ought to be available from all mirrors of sunsite.unc.edu.
The Linux Danish/International HOWTO by Niels Kristian Bech Jensen
The Linux Cyrillic HOWTO by Alexander L. Belikoff
The Keystroke mini-HOWTO by Zenon Fortuna.
The Locales mini-HOWTO by Peeter Joot. (This one is mainly for
developers.)
The ISO-8859-1 FAQ and Programming for Internationalization FAQ (plus
much more) by Michael Gschwind is available from his homepage
<http://www.vlsivie.tuwien.ac.at/mike/i18n.html>.
4.2. Thai related stuffs
" NACSIS R& D Thai Project Page " ,http://thaigate.nacsis.ac.jp
<http://thaigate.nacsis.ac.jp>
╖ Information about Thai computing.
╖ Discussion groups in Thai language, such as thai-l (Thai Mailing
list), Thai news, etc.
╖ Thai references and Thai softwares.
╖ Thai Latex filter.
" ZzzThai Project " , http://www.fedu.uec.ac.jp
<http://www.fedu.uec.ac.jp/ZzzThai/>
╖ Most softwares and Thai fonts introduced here can download from
ZzzThai.
╖ Describe how to use Thai with 3 main computer platforms, UNIX like,
Windows and Mac.
╖ Linux information at http://www.fedu.uec.ac.jp/ZzzThai/Linux
<http://www.fedu.uec.ac.jp/ZzzThai/Linux>, TE, Thai LaTeX tutorial,
etc.
╖ By The group of students at The University of Electro-
Communications, Tokyo.
" Vuthichai's Page " , http://www.ctrl.titech.ac.jp:80/~vuthi/
<http://www.ctrl.titech.ac.jp:80/~vuthi/>
╖ Information about Thai computing by Mr. Vuthichai Ampornaramveth.
" An annotated reference to the Thai implementations " ,
http://www.inet.co.th/cyberclub/trin/thairef/
<http://www.inet.co.th/cyberclub/trin/thairef/>
╖ Information about Thai character standard.
╖ By Mr.Trin Tantsetthi.
" X window and Thai language " , http://members.xoom.com.cwg.x11th/
<http://members.xoom.com/cwg/x11th/>
╖ By Mr.Rawat S.Pirom
" SchoolNet Internet Sever " , http://www.school.net.th/linux-sis/
<http://www.school.net.th/linux-sis/>
╖ Using Linux in School, Thailand.
╖ By NECTEC <http://www.nectec.or.th> (National Electronics and
Computer Technology Center).
" Thai Open Source Development " , http://members.xoom.com/inThai
<http://members.xoom.com/inThai>
╖ Mozilla Thai enabling.
╖ Open source Thai softwares and Libraries.
╖ By Mr.Samphan Raruenrom
" Linux Thai Project " , http://www.geocities.com/SiliconValley/8302
<http://www.geocities.com/SiliconValley/8302>
╖ Information about Linux in Thai language.
╖ By Kaiwal Development Team.
" ThaiLinux unofficial Webboard " ,
http://lulu.mptc.eng.cmu.ac.th/HyperNews/get/ThaiLinux.html
<http://lulu.mptc.eng.cmu.ac.th/HyperNews/get/ThaiLinux.html>
╖ Questions and answers about Linux in Thai language.
╖ By Mr.Pruet Boonma
" Thai Linux installation project " ,
http://www.geocities.com/Tokyo/Bay/4521/
<http://www.geocities.com/Tokyo/Bay/4521/>
╖ Installation guide in Thai language
4.3. FTP and Web sites
Most softwares and Thai fonts which introdued in this howto.
╖ ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux
<ftp://ftp.fedu.uec.ac.jp/pub/thai/UEC/ZzzThai/Software/Linux>
╖ http://thaigate.nacsis.ac.jp/files/index.html
<http://thaigate.nacsis.ac.jp/files/index.html>
╖ http://www.nectec.or.th/pub/software/i18n/thai
<http://www.nectec.or.th/pub/software/i18n/thai>
Mule
╖ ftp://etlport.etl.go.jp/pub/mule <ftp://etlport.etl.go.jp/pub/mule>
Ss
╖ http://members.xoom.com/theera/ss/
<http://members.xoom.com/theera/ss/>
SunSite <ftp://sunsite.unc.edu/pub/linux/> and mirrors. doc/howto has
the above mentioned HOWTOs. utils/nls and subdirectories contain files
related to National Language Support. Developers should take a look
at locale-tutorial-0.8.txt.gz, locale-pack-0.8.tar.gz and cat-
pack.tar.gz.
The GNU archives <ftp://prep.ai.mit.edu/pub/gnu/> has the recode
package for character table conversion, the ABOUT-NLS file and the
gettext package for locale support of some GNU applications and (of
course) the latest versions of GNU emacs.
5. Acknowledgments and Copyright
Some parts of this HOWTO comes from The Linux Danish/International
HOWTO by Thomas Petersen, petersen@post1.tele.dk (the original author)
and Niels Kristian Bech Jensen, nkbj@image.dk.
Thank you to Phaisarn Techajaruwong for building Thai fonts and
valuable discussion.
Thank you to Thai students at The University of Electro-Communications
and Mr. Vuthichai Ampornaramveth for every help.
This HOWTO is copyrighted by Poonlap Veeratanabutr, poon-
v@fedu.uec.ac.jp. It is distributed as other Linux HOWTOs under the
terms described below.
Linux HOWTO documents may be reproduced and distributed in whole or in
part, in any medium physical or electronic, as long as this copyright
notice is retained on all copies. Commercial redistribution is allowed
and encouraged; however, the authors would like to be notified of any
such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO coordinator at the address given below.
If you have questions, please contact Tim Bynum, the Linux HOWTO
coordinator, at linux-howto@sunsite.unc.edu via email.