11 Dec 2004
(updated 11 Dec 2004 at 22:49 UTC) »
While the Linux Desktop has been fully converted to Unicode and UTF-8, the console is still lacking in one significant area. Before going into details, let's start from the basics.
Most mainstream Linux distributions already put the console in Unicode mode. In addition, they load a suitable font for the console to display common languages. For example, the font latarcyrheb-sun16 covers Latin-based alphabets, Arabic, Cyrillic and Hebrew. If a filename uses those characters, they show correctly. The font files have been updated to include information about what is their unique Unicode ID. If the character is not found, a generic character will appear in its place. You may have noticed it; it says "LF" in one character cell.
Suppose you want to view Greek? Replace the font with the corresponding Greek console font.
The file /etc/sysconfig/i18n contains information about I18n for the console (but not limited). Only this file needs to be edited to accomodate other languages. By default it looks like
To configure to display, for example, Greek, the file should look like
The font files are located in /lib/kbd/consolefonts/ and you need to use the variation that has the u character in the filename, denoting a file that for each character it lists the Unicode code point.
I am not sure if there is a tool to edit the i18n file, simply by selecting the system language. This would be the best.
The program script /sbin/setsysfont uses /etc/sysconfig/i18n to do all the dirty work. Read the script for the details.
Up to now we dealt with displaying. How do we write? We write thanks to /bin/loadkeys. The kernel comes with a default keymap so you can write common English in any case.
Both /sbin/setsysfont and /bin/loadkeys are invoked by /etc/rc.d/rc.sysinit, during system startup.
Now, what's the problem? Well, the writing part is not done in "full utf-8" but rather in 8-bit, making it impossible to add accents making it difficult to write crafts such as Iñtërnâtiônàlizætiøn.
There are some patches to enable support, see below.
I have just sent an e-mail to linux-kernel and I am waiting to see the response. I hope something happens.