D Sivaraj - Initial conversion from LaTeX to Docbook XML
Copyright © 2002, 2003 V. Venkataramanan
This document will help set up a working Tamil Linux environment. This describes setting up fonts, keyboard drivers, editing and printing Tamil/bilingual documents, and working with the X Window system. The information is kept as generic as possible. When it pertains to a specific distribution (say RedHat or Debian), it is explicitly noted.
This document will help set up a working Tamil Linux environment. Step-by-step instructions are provided for setting up fonts, editors, etc. This document also describes the essential instructions need to use web browsers, edit documents and print them.
Comments and suggestions about this document may be directed to the author (<firstname.lastname@example.org>)
© 2002, 2003 V.Venkataramanan.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no invariant Front-Cover text, no Back-Cover text and no invarient sections.
A verbatim copy of the license can be obtained from the Free Software Foundation Website at http://www.gnu.org/licenses/fdl.html
Tamil is a member of the Dravidian languages. Its origin is in southern India and the language is written with non-Roman alphabets. So there is a need for special fonts, encoding, keyboard layout and drivers, besides localization, including currency, date format, etc. This document will give a complete overview of setting up and working in the Tamil Linux environment. There are several pieces of information and tools available for Linux in Tamil; this how-to will serve as a meta-index to all the scattered resources.
A word before you enter - most of the fonts, tools, RPMs and documents are being gathered under one site. So try the resources at http://tamil.homelinux.org before you embark on treasure-hunting.
It can seem like anarchy. There are an unknown number of fonts, each encoded with their own tables, driven by arbitrary keyboard layouts and outputs. In my opinion, Tamil can seriously compete with any other language for maximum number of font tables. Added to this commotion are the dynamic fonts for the web pages, that enable anyone to get away with a non-standard font as long as his pages are viewable.
Adding to all these is the official Indian Standard Code for Information Interchange (ISCII), the Government of India sponsored "unifying" scheme to bring all Indian fonts under the Devanagari umbrella. Anyone familiar with the way the characters are written in Tamil and in Devanagari script will understand the lack of any rationale in this approach.
Needless to say, this is serving to only add to the confusion. A good analysis of this and the unicode for Tamil is once again written by Sivaraj and can be found at . For those not familiar with the Tamil script, a good introduction written by Sivaraj is at .
Let us ignore the anarchy for a moment and get a picture of the frequently used font encodings. There are two main contenders and luckily they will converge soon. The first and most popular one is the Tamil Standard Code for Information Interchange (TSCII), developed by volunteers throughout the world, and the other, TAmil Monolingual (TAM), and TAmil Bilingual (TAB) encodings, were proposed by the Tamil Nadu Government. Once again, TAM is of limited use in an OS environment and we can safely ignore that. Almost all Linux efforts are in TSCII (Console, KDE, GNOME localizations).
TSCII is a glyph-based, 8-bit bilingual encoding. It uses a unique set of glyphs; the usual lower ASCII set. Roman letters with standard punctuation marks occupy the first 128 slots and the Tamil glyphs occupy the upper ASCII segment (slots 128-256). A good overview of the early font encoding schemes and a the rationale behind the TSCII approach can be found at http://www.geocities.com/Athens/5180/tscii.html.
The home URL for TSCII volunteers is http://www.tamil.net/tscii. This site discusses the TSCII encoding and provides tools including fonts, keyboard drivers, editors and inter-conversion tools for various platforms. The font encoding table according to TSCII-1.6 can be found at http://www.tamil.net/tscii/charset16.gif.
The current version of TSCII is 1.6, and a revision is expected anytime now that will fix some anomalies in using various slots for encoding. This version 1.7 will be fully backward compatible with 1.6 and is expected to gain popularity. The TSCII discussion group currently brainstorms on modifications to TSCII-1.6. You may be able to participate in the discussions by becoming a member. You may also be able to download various beta tools from there. The font encoding table according to TSCII-1.7 (draft) can be found at .
TAB is a character based bilingual standard proposed by the government of Tamil Nadu. The TAB bilingual encoding table can be found at http://www.tamilnet99.org/annex4.htm. Tools for TAB encoding (mostly restricted to the Windows platform) can also be downloaded in the vicinity of this page.
This so far has been a one man effort - once again by Sivaraj. He has written a set of console tools for Tamil that include a monospace font, keyboard driver and locale setup. In his words:
The tools can be downloaded here. Follow the instructions in the REAME file to install and use.
Welcome! This is where you will find the most useful tools for Tamil. Even for basic users, it is now possible to have close to a total Tamil-localized office suite. Tamil GUI is achieved in KDE or GNOME environment with localization settings (more about this later in this document), and Tamil character input is achieved using keymanager programs. But first you need to get some fonts to do all this.
Linux, by default, uses "pcf" fonts and one can also use "bsd" fonts; these are bitmapped fonts that display under X and can be printed. But, as is common with all bitmapped fonts, these are not always WYSIWYG in print. For high-quality printing you need "Type-I" fonts (Adobe), with Ghostscript you need PS fonts and for "afm" fonts (American Font metrics) are used. But most of the Tamil fonts that are freely available are TrueType (ttf). We will see next how to get all these fonts working.
A bitmapped font is a matrix of dots; because of this, these fonts are device-independent. A 75 dpi font, which is good enough for displaying, is still a 75 dpi font in your 1200 dpi printer. So usually bitmapped fonts are created for a specific purpose, such as for displaying on a monitor or for printing. Linux usually uses bdf or pcf font for console or X display. Fonts like those created by dvips or dvi are printer-related bitmapped fonts. These fonts occupy large sizes, but programs circumvent this by dynamically creating them as and when they are needed, and at a specific resolution.
When an application makes a font request to the X Server, XFree86 looks for fonts in specific directories. This means that when you add fonts to your system and you want them to be recognized by X Server, you need to tell X about the location of these fonts. Simply add a directory to your font path with the commands:
where the family directory is the name of the directory where you have fonts. Once you have done this you have to ask the server to get this registered for the session, with the command
xset fp rehash
Since you will want these commands to run automatically, you should put them in your .xinitrc file ( or possibly your .Xclients or .xsession file -- this depends on how you start X. Another way to have the commands set automatically is edit XF86Config. For example, to add /usr/share/fonts/myfonts to the font path when X is started, edit XF86Config like this:
The advantage of editing XF86Config is that the resulting changes are system wide.
You may get TrueType fonts for TSCII, TAB and TSCII1.7 encoding from the download section of http://tamil.homelinux.org/. Alternate sources for these fonts are
TSCII - http://www.tamil.net/tscii/
TSCII-1.7 (experimental) - http://groups.yahoo.com/group/tscii/files/
Installing these fonts are either too easy or too difficult. Too easy if you have one of the latest distributions, like RedHat7.x or Mandrake7.x. This is because RedHat (and Mandrake, maybe SuSE) come with xfs pre-packaged. It is also easy to find xfs for Debian, but as far as I know, Debian does not come with xfs packaged.
Debian users are now redirected to this mini-howto on TrueType fonts in Debian - http://www.linuxdoc.org/HOWTO/mini/TT-Debian-3.html
There is also another utility, xfstt, which is easier to install and use, but xfs is becoming popular as it can handle Adobe Type1 in addition to TrueType fonts.
If you do not have either of these, consider getting either xfs (not to be confused with Silicon Graphics (SGI) sponsored XFS journaling file system) from http://www.xfree86.org.
You need to run these commands as root. If you are currently logged in as a normal user, you can use su to do this now.
You should now have xfs availability, otherwise use the steps in the previous section to obtain it.
In some distributions like Mandrake, installing TrueType fonts is a cakewalk. Just go to DrakConf and use the font install utility - follow a few easy steps there and you'll have them all.
Put your TrueType fonts in whatever directory you want. For example, /usr/share/tamiltt.
From within the directory containing your new fonts, type:
ttmkfdir -m 50 -o fonts.scale
This makes a file that will contain the necessary information about the fonts for the xfs server. The option -m 50 specifies the magnification for the fonts; I have seen some Tamil fonts working well only with -m 100.
Now you can add the new directory to your xfs search path. Red Hat (and Red Hat-like) distributions come with a neat utility to do this called chkfontpath. Run chkfontpath like this:
chkfontpath --add /usr/share/tamiltt
This will add the new font directory to your font path.
(Other users, who have an xfs font server, without ttf support, can do this by editing their xfs configuration file.
If xfs is already installed on your system, you should see which port it is running on. You can do this with the following command:
ps ax grep xfs
Then check your XFree86 font path with this command:
If your font path includes something like "unix:/port number," where port number is the port on which the server is running, then you already have xfs set up properly. Otherwise, you should add it to your XFree86 font path with these commands:
xset fp+ <unix/:port number>
xset fp rehash
You can add the fontpath permanently by editing your .xinitrc. To add it system-wide, edit your XF86Config file (either under /etc/X11/XF86Config, /etc/X11/XF86Config-4, /etc/XF86Config, or /usr/X11R6/lib/X11/XF86Config), by adding the following line to the Files section:
FontPath "unix/:port number"
Here is an example of how it should look:
If xfs is already properly installed, then you can restart it like this as root:
service xfs restart
After restarting xfs, it is a good idea to restart your X session.
As most of the users in Tamil will be doing this, let me summarize the essential steps.
There is another project, X-TrueType Server, worth looking into, at http://www.io.com/~kazushi/xtt/.
Another interesting project with broader scope is FreeType; check http://www.freetype.org.
I personally feel xfs is a great utility; it can handle Type1 fonts (very useful if you use programs like GIMP). Besides, a stand alone xfs server is not attached to X server. This means that you can deliver these fonts for remote X displays. I use this feature extensively with VNC Server running in my host and VNC Viewer running locally in Windows. It's something of a luxury having a Tamil Linux desktop while working for my employer.
Once again, lack of standards shows up here. There are quite a few Tamil keyboard layouts, the traditional typewriter keyboard; then with the surge of internet arrived the romanized transliteration keyboards; later the TAmil-Nadu government played its part by prescribing a tamilnet99 keyboard. These are only a few to talk about; we have a few others which do not fall into any of these "standards."
There are two Tamil keyboard drivers for the X Window System, both of them set to tamilnet99 standards (see tamilnet99 website for the details on the keymap). You will be able to download both the keydrivers from the Yahoo! tamilinix group files section .
The first driver is tamil_kmap, created by Vasee. It is based on the original version of Siva. It is operable under both TSCII 1.6 and TAB encodings. The detailed installation instructions are given in the README file in the package. It is very simple to install. First, untar the package into a temporary directory. Then type:
cp ta /usr/X11R6/lib/X11/xkb/symbols/
then: cp Compose /usr/X11R6/lib/X11/locale/iso8859-1
and put the shell script setkb into a directory on your system PATH . You may need to become root to copy these files into these directories.
To use the Tamil keyboard, type setkb tscii or setkb tab. From inside the keyboard driver you will be able to switch between the two standards, and also between Roman and Tamil fonts.
The other keyboard driver, tamilvp (vp for Visaip Palakai) is written and maintained by Dinesh. As indicated above, you may download that from the Yahoo! tamilinix group file section. It is available as rpm (I have not tried it out yet). Just install the rpm and files will be in appropriate locations. To run the program type tamilvp and you will get the GUI cell to choose between Tamil (TSCII 1.6 or TAB) and English.
Historically, the K Desktop Environment (KDE) was the first full Tamil user interface. Though far from complete, KDE was there for Tamil, and Tamil among the Indic languages, for the first time. Under KDE, with your localization properly set to Tamil, you may be able to do almost everything (from editing files, to browsing the web and e-mail, to administrative tasks such as user management and task scheduling) with a Tamil user interface.
For the newbie, it is very easy to search the web for Tamil KDE localizations RPMs. They are usually labelled something like kde-i18n-Tamil-2.0-1mdk.i586.rpm. i18n is just that: i(nternationalizatio)n, 18(18letters). Tamil is the localization setting corresponding to the Tamil language. mdk signifies the package for Mandrake distribution. Then comes the most important part; 2.0-1, the KDE version number. Your base KDE version and this should be the same, so when downloading, make sure that you get the proper localized menus for the proper KDE version. i586 signifies the precompiled binaries for the intel 586 platforms. Make sure that you get the proper binary (there are usually source rpms and rpms for other platforms such as alpha). If you are a newbie you are better off using GUI based rpm installer such as GNORPM or KPackage. First do a test install and check if your system has all the needed packages. If not go to the same source from where you downloaded the Tamil localization and get them. After making sure that you installed all dependencies, install the kde-i18n-tamil package as well.
If you are not a newbie, you know it. Get KDE Tamil i18n files, and if you have time, get the sources and compile them!
KDE localization uses TSCII 1.6 encoding. This means that you will need at least one TSCII font. Read the section on fonts as to how to get it.
This section assumes that have installed at least one TSCII font (preferably several, to jazz up your GUI) and the KDE Tamil localization package.
From, go to > > and choose (c) location.
> > . Accept this. All changes will be activated, and will work on all windows opened subsequently.
Your user interface is now set in Tamil. If you see some garbage on the window header etc., pat yourself on the back. You are ready to see Tamil; move on!
Again, fromgo to > > . You will see a set of fonts for most (these are the ones used in display). Choose a Tamil font instead for all these. Accept.
Well done, you now see Tamil everywhere on your desktop. You are ready, with a fully operational Tamil system.
As with every other project, KDE-Tamil also needs a lot of volunteers. Contact either Sivakumar or Vaseeharan (both of them can be reached through the egroup
KDE's i18n process is unicode-based. As a work around, Trolltech's QTsciiCodec class provides conversion to and from the Tamil TSCII encoding. This codec uses the mapping table found at . Unfortunately Tamil uses composed Unicode. As such, Unicode fonts cannot be used under KDE-TSCII; you need to have TSCII fonts. The TSCII codec was contributed to Qt by Hans Petter Bieker <email@example.com>.
GNOME Tamil localization works have just begun. There are few applications for which Tamil menus are translated, and are available. But it is yet to become the official member of GNOME i18n distribution.
In order to use them, download the currently available files from:
and put them into the directory /usr/share/locale/ta/LCMESSAGES/.
Under GNOME Control Panel you have set the fonts (both in Themes and the Window Manger applet) to a TSCII font.
You need to create binary messages from the po files. This is done as follows:
msgfmt xxx.po -o /usr/share/locale/ta/LCMESSAGES/xxx.mo.
Note that the binary messages files contain an extension .mo as opposed to .po for the text file.
In order for you see Tamil, you have to set the locale to Tamil.
If you are using bash as your shell, then enter the following line in your home directory.
Restart the X server. You should see Tamil menus and dialogs in many of the GNOME enabled applications. Once again, please consider contributing to the Tamil GNOME Project; we need a lot of volunteers. Contact Dinesh <(firstname.lastname@example.org)> or through tamilinix yahoogroups.
This section is all about getting high-quality Tamil output in printing. While it is one issue to load a binary font and start using Tamil in Linux, if your work is to destroy the forests, you need high-quality printing too!
LATEX is perhaps the mother of all typographic systems. It frees the author from the trivia of typesetting and concentrate on the content. It does not use the WYSWYG input, but the end result is great. Recent developments are centered toward internationalization. Unfortunately lack of unicode standard does not permit Tamil to be tried under the more ambitious Omega Project. Once again, workaround is the only way. A first step in Tamil has been attempted by Thuraiappah Vaseeharan. You may get the the package from the tamillinux.org site. The tar ball contains a great readme file that describes the installation and usage. The tamiltex package does a short work by keeping all related stuff under one directory (which means that you need to keep your work under the same directory to compile your source files). But the great thing about this package is that it is compatible with both TSCII and TAB encodings and the results are just what you would expect from a LATEX package - great!
Many Linux applications use Ghostscript to print, which means that you must have Ghostscript configured if you want to use Tamil in printed documents. If LATEX is there, can PostScript be far away? Not thanks to Vasee. Set the environment variable GS_FONTPATH to point to your TrueType font directory. For example, I have:
You should be able to view Tamil PostScript files.
Once TrueType fonts are installed properly, there is no problem using them in Abiword, GNumeric or KOffice. However, StarOffice needs Type 1 fonts. (I hear the latest StarOffice supports TrueType fonts?). You can expect Type 1 Tamil fonts to be available shortly:-).
For receiving and sending email, KMail works well with TrueType fonts. You should also be able to use PINE with Sivaraj's console fonts and utils.
Konquerer supports Tamil fonts neatly, once made at the proper scale under your font directory and served to X. Widely used Netscape, however, is a problem. Netscape uses only 75 dpi fonts for display. You might have noticed this even while viewing Roman fonts, and got annoyed seeing small fonts. That being the case with Roman, Tamil is impossible to comprehend under 75 dpi. This can, however, be fixed by specifying the appropriate resources in your .Xdefaults file:
Remember that TSCII fonts are used as ISO-8859-1 fonts. The parameter 150 is arbitrary; I have seen some fonts scaling neatly under 100 itself (TSCparanar, for one) which is good enough for viewing. If you are still not satisfied with what you see, try using anti-aliasing under X.
Pango provides an open-source framework for the layout and rendering of internationalized text and uses Unicode for all of its encoding. It aims to eventually support output in all the major languages. When GNOME 2.0 comes out, the text rendering is expected to be by Pango. Pango is expected to be the panacea for complex font schemes like kanji, arabic/hebrew (bidirectional), so Tamil is no problem. Tamil is one of the early languages in Pango - right there in the first public version. Sivaraj provided TSCII support, which was later extended to TAB by Vikram.
For the latest news, views and tools in Tamil Linux:
Issues related to Tamil localization are mostly discussed at:
Under the files section there you may get some tools, few HOWTOs (most of those issues are unified in this document already) and some tutorials.
If you want to read about Open Source (Free Software) history in Tamil, see:
Ganesan Rajagopal is checking in CVS for Tamil locales under the Sourceforge project on Tamil Linux, you may be get them from:
There is a simple guide to setting up a working Tamil Linux environment, addressed to newbies, available at:
There are several non-standard font encoding schemes for Tamil. Then there are a whole lot of fonts (used mostly by publishing houses in Tamil Nadu, such as Vikatan, Kumutham, thinamaNi, etc.) which do not comply with any of these. The three major font encoding schemes are;
TSCII (Tamil Standard Code of Information Interchange - currently running in beta version 1.7); the first efforts by volunteers throughout world.
TAB (TAmil Bilingual); proposed and approved by the Tamil Nadu government