我们假设您已经为您的键盘和区域设置调整了 Linux 控制台和 X11 配置。这在 Danish/International HOWTO 以及其他国家/地区的 HOWTO 中有解释:芬兰语、法语、德语、意大利语、波兰语、斯洛文尼亚语、西班牙语、西里尔语、希伯来语、中文、泰语、世界语。但是请不要遵循泰语 HOWTO 中给出的建议,即当您实际输入的是泰语字符 (U0E01..U0E5B) 时,假装您正在使用 ISO-8859-1 字符 (U0000..U00FF)。这样做只会在您切换到 Unicode 时引起问题。
我在这里没有过多谈论 Linux 控制台,因为在那些没有运行 xdm 的机器上,我只用它来输入我的登录名、密码和“xinit”。
无论如何,kbd-0.99 软件包 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz 和一个大量扩展的版本 console-tools-0.2.3 软件包 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-tools-0.2.3.tar.gz 在 kbd-0.99/src/(或 console-tools-0.2.3/screenfonttools/)目录中包含两个程序:`unicode_start' 和 `unicode_stop'。当您调用 `unicode_start' 时,控制台的屏幕输出将被解释为 UTF-8。此外,键盘被置于 Unicode 模式(参见“man kbd_mode”)。在这种模式下,作为 Alt-x1 ... Alt-xn(其中 x1,...,xn 是数字键盘上的数字)键入的 Unicode 字符将以 UTF-8 编码发出。如果您的键盘或更准确地说,您的普通键盘映射具有非 ASCII 字母键(如德语变音符号),并且您希望这些键可以进行大写锁定,则需要应用内核补丁 linux-2.2.9-keyboard.diff 或 linux-2.3.12-keyboard.diff。
您将希望在同一屏幕上使用来自不同文字系统的显示字符。为此,您需要一个 Unicode 控制台字体。ftp://sunsite.unc.edu/pub/Linux/system/keyboards/kbd-0.99.tar.gz 和 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/console-data-1999.08.29.tar.gz 软件包包含一个字体 (LatArCyrHeb-{08,14,16,19}.psf),它涵盖拉丁文、西里尔文、希伯来文、阿拉伯文字系统。它一次性涵盖了 ISO 8859 的第 1、2、3、4、5、6、8、9、10 部分。要安装它,请将其复制到 /usr/lib/kbd/consolefonts/ 并执行“/usr/bin/setfont /usr/lib/kbd/consolefonts/LatArCyrHeb-14.psf”。
Dmitry Yu. Bolkhovityanov <D.Yu.Bolkhovityanov@inp.nsk.su> 在 http://www.inp.nsk.su/~bolkhov/files/fonts/univga/index.html 和 http://www.inp.nsk.su/~bolkhov/files/fonts/univga/uni-vga.tgz 中提供了一种更灵活的方法。为了解决 VGA 字体一次只能覆盖 512 个字符的限制,他提供了一个丰富的 Unicode 字体(2279 个字符,涵盖拉丁文、希腊文、西里尔文、希伯来文、亚美尼亚文、IPA、数学符号、箭头等等),尺寸为典型的 8x16,以及一个脚本,允许提取任何 512 个字符作为控制台字体。
如果您希望剪切&粘贴与 UTF-8 控制台一起工作,您需要 Edmund Thomas Grimley Evans 和 Stanislav Voronyi 提供的补丁 linux-2.3.12-console.diff。
在 2000 年 4 月,Edmund Thomas Grimley Evans <edmundo@rano.org> 实现了 UTF-8 控制台终端模拟器。它使用 Unicode 字体并依赖于 Linux 帧缓冲设备。
不要犹豫安装西里尔文、中文、日文等字体。即使它们不是 Unicode 字体,它们也将有助于显示 Unicode 文档:至少 Netscape Communicator 4 和 Java 将在可用时使用外文字体。
以下程序在安装字体时很有用
以下字体是免费提供的(不是完整列表)
希望同时显示属于不同文字系统(如西里尔文和希腊文)的文本的应用程序可以通过为各种文本使用不同的 X 字体来实现。这是 Netscape Communicator 和 Java 所做的。然而,这种方法更复杂,因为程序员必须处理 `XFontSet' 而不是 `Font' 和 `XFontStruct',而且字体集中并非所有字体都需要具有相同的尺寸。
$ gunzip unifont.hex.gz
$ hex2bdf < unifont.hex > unifont.bdf
$ bdftopcf -o unifont.pcf unifont.bdf
$ gzip -9 unifont.pcf
# cp unifont.pcf.gz /usr/X11R6/lib/X11/fonts/misc
# cd /usr/X11R6/lib/X11/fonts/misc
# mkfontdir
# xset fp rehash
$ bdftopcf -o cu12.pcf cu12.bdf
$ gzip -9 cu12.pcf
# cp cu12.pcf.gz /usr/X11R6/lib/X11/fonts/misc
# cd /usr/X11R6/lib/X11/fonts/misc
# mkfontdir
# xset fp rehash
xterm 是 X11R6 和 XFree86 的一部分,但由 Tom Dickey 单独维护。http://www.clark.net/pub/dickey/xterm/xterm.html 较新版本(补丁级别 146 及以上)包含将击键转换为 UTF-8,然后再将其发送到在 xterm 中运行的应用程序的支持,以及显示应用程序输出为 UTF-8 字节序列的 Unicode 字符的支持。它还包含对双倍宽度字符(主要是 CJK 表意文字)和组合字符的支持,由 Robert Brady <robert@suse.co.uk> 贡献。
要使 UTF-8 xterm 运行,您需要
$ cd .../ucs-fonts
$ cat quickbrown.txt
$ cat utf-8-demo.txt
您应该看到(除其他外)希腊字符和俄语字符。
xterm*utf8: 1
xterm*VT100*font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
xterm*VT100*wideFont: -misc-fixed-medium-r-normal-ja-13-125-75-75-c-120-iso10646-1
xterm*VT100*boldFont: -misc-fixed-bold-r-semicondensed--13-120-75-75-c-60-iso10646-1
到您的 $HOME/.Xdefaults(仅适用于您自己)。对于使用双倍宽度字符的 CJK 文本处理,以下设置可能更好
xterm*VT100*font: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1
xterm*VT100*wideFont: -Misc-Fixed-Medium-R-Normal-ja-18-120-100-100-C-180-ISO10646-1
我不建议更改系统范围的 /usr/X11R6/lib/X11/app-defaults/XTerm,因为那样您的更改将在下次升级到新的 XFree86 版本时被擦除。
上面提到的字体是固定大小且不可缩放的。对于某些应用程序,尤其是打印,高分辨率字体是必要的。可缩放、高分辨率字体最重要的类型是 TrueType 字体。它们目前受以下支持:
Load "freetype"
或
Load "xtt"
到您的 XF86Config 文件的 "Module"
部分。一些具有大 Unicode 覆盖范围的免费 TrueType 字体是
涵盖罗马文、西里尔文、希腊文、希伯来文、阿拉伯文、组合变音标记、中文、韩文、日文等。
可从 ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/Cyberbit.ZIP 下载。它是免费供非商业用途的。
涵盖罗马文、西里尔文、希腊文、希伯来文、阿拉伯文、一些组合变音标记、越南文。
可下载;在搜索引擎中查找名为 arial.ttf
、ariali.ttf
、arialbd.ttf
、arialbi.ttf
的 ftp 文件。
涵盖罗马文、西里尔文、希腊文、希伯来文、组合变音标记。
下载:包含在 IBM 的 Linux JDK 1.3.0 中,网址为 http://www.ibm.com/java/jdk/linux130/,或直接从 ftp://ftp.maths.tcd.ie/Linux/opt/IBMJava2-13/jre/lib/fonts/ 下载为 LucidaSansRegular.ttf
和 LucidaSansOblique.ttf
。
涵盖中文(繁体和简体)。
下载:在 ftp://ftp.gnu.org/non-gnu/chinese-fonts-truetype/。这些字体是真正免费的。
这些字体和其他 TrueType 字体的下载位置可以在 Christoph Singer 的免费可下载 Unicode TrueType 字体列表 http://www.ccss.de/slovo/unifonts.htm 中找到。
TrueType 字体的安装方式与固定大小字体类似,只是它们放在单独的目录中,并且必须在 mkfontdir
之前调用 ttmkfdir
# mkdir -p /usr/X11R6/lib/X11/fonts/truetype
# cp /somewhere/Cyberbit.ttf ... /usr/X11R6/lib/X11/fonts/truetype
# cd /usr/X11R6/lib/X11/fonts/truetype
# ttmkfdir > fonts.scale
# mkfontdir
# xset fp rehash
TrueType 字体可以使用 Mark Leisher 的 ttf2bdf 实用程序 ftp://crl.nmsu.edu/CLR/multiling/General/ttf2bdf-2.8-LINUX.tar.gz 转换为低分辨率、不可缩放的 X11 字体。例如,要生成用于 cooledit 的比例 Unicode 字体
# cd /usr/X11R6/lib/X11/fonts/local
# ttf2bdf ../truetrype/Cyberbit.ttf > cyberbit.bdf
# bdftopcf -o cyberbit.pcf cyberbit.bdf
# gzip -9 cyberbit.pcf
# mkfontdir
# xset fp rehash
有关 TrueType 字体的更多信息,请参见 Linux TrueType HOWTO http://www.moisty.org/~brion/linux/TrueType-HOWTO.html。
Ricardas Cepas 的 ftp://sunsite.unc.edu/pub/Linux/system/keyboards/x-lt-1.24.tar.gz 软件包中的 testUTF-8.c 和 testUTF8.c 文件中可以找到一个小程序,用于测试 Linux 控制台或 xterm 是否处于 UTF-8 模式。但是,大多数应用程序不应使用此方法:它们应查看环境变量,请参见 “区域设置环境变量” 部分。