ロシア語用仮想端末の設定
since Aug. 2 2002
 

概要

xterm、rxvt などの仮想端末ソフトでロシア語を入力、表示する。日本語が使えないと困るので、日本語が扱える仮想端末とは別にロシア語環境で起動するよう設定しよう。

以前、システムとユーザの窓口であるシェル(本稿では Tcsh)は 8 ビットクリーンではないため、日本語用の版を別途インストールするか、もしくは面倒な設定変更が必要であった。しかし現在 FreeBSD 4.6-RELEASE ではその必要はない(あらかじめ 8 ビットクリーンの Tcsh が組み込まれている)。

8 ビットクリーンとは 1 バイトのキャラクタコードのうち先頭 1 ビットを文字コードの一部として意識するプログラム構造をいっている。かつてネットワークの通信回線の信頼性が低かったころ先頭 1 ビットはパリティビットもしくは計算用符号ビットとして考慮され、ASCIIコード "char" は 7 ビットで収容されるよう設計された。これを受け文字コードは 7 ビットであるものとするプログラムが多かった。しかしこの場合キリル文字コードの先頭 1 ビットの情報が失われてしまうのである。

ちなみに KOI8-R の設計者はキリル文字を、 ASCII コードの同じ音価をもつ文字にできるだけ対応させるようにすることにより(たとえば М、Н、Х、Ц は先頭 1 ビットをオフにするとそれぞれ M、N、H、C になる)、先頭 1 ビットが落ちてもなんとなくロシア語が再現できる工夫をしている!

インターネット上ではどこで先頭 1 ビットが失われるかも知れないのである。

 

Rxvt のインストールと設定

Rxvt を ports でインストールする。ロシア語用の端末は標準的な Xterm でもよいが、Rxvt は背景画像を張り付けたり個性的な使い方のできる高機能なアプリケーションであり、組み込んでおいて損はない。ここではロシア語用に調整したいため、日本語用にチューニングされていないものを利用することをお勧めする。わたしは日本語環境用の仮想端末としては日本語向けに設定済の Eterm を、ロシア語環境用としては通常の(つまり japanese ports のものではない欧米向けの)Rxvt を、というように使い分けている。

# cd /usr/ports/x11/rxvt
# make install
	

以下のようなスクリプトを準備して実行するとよい。たとえば rterm とでも命名して実行許可を与えておく(chmod +x rterm)。


  #!/bin/sh
  #
  # rterm : KOI8-R Russian Terminal
  #
  RUSFONT="-etl-fixed-medium-r-normal--16-160-72-72-c-80-koi8-r"
  LC_CTYPE=en_US.ISO_8859-1
  LANG=en_US.ISO_8859-1
  LESSCHARSET=koi8-r
  CHARSET=KOI8-R
  MM_CHARSET=ru_RU.KOI8-R

  export RUSFONT LANG LC_CTYPE LESSCHARSET CHARSET MM_CHARSET 
  rxvt -sb -sl 1024 -fn $RUSFONT 
  # end of script
	   

 

スクリプトのなかで RUSFONT 変数にキリルフォントの XLFD (X11 の論理フォント名称)を指定している。ここでは etl の 16 ドットキリルフォントを設定しているが、 "xlsfonts -fn '*koi8-r*'" の出力から好みの XLFD を選択して指定すればよい。

上記スクリプトのポイントは "LC_CTYPE"、"LANG" に en_US.ISO_8859-1(ISO 8895-1 のロケール) を指定しているところだ。ロシア語用のロケールである ru_RU.KOI8-R を指定してもよさそうなのだが、そうするとキリル文字が入力できない。どうも X11 のバグのようだ。

しかしながら、仮想端末が起動した後に、再度ロシア語用のロケールを手動で入力すると、キリル文字が入力できるのみならず、コマンドの出力がロシア語で報告されるようになる。その様子を図に示す。

[2] "setenv LC_ALL ru_RU.KOI8-R" の後、 date 及び ls コマンドの結果がロシア語日付となっている。また [6] " setenv LANG ru_RU.KOI8-R" の後、存在しない xxx コマンド投入に対して、"xxx: Команда не найдена." (xxx なんてコマンドありません) とロシア語でエラーメッセージを返している。

 

ロシア語仮想端末

 

キリル文字は Xruskb で入力する。 8 ビットクリーンのプログラムならロシア語文字コードが受け付けられるはずだ。 sed、grep、awk など UNIX の強力なテキスト処理ツールはたいてい 8 ビットクリーンであり、これらを用いて仮想端末からロシア語テキストを編集・加工することが可能となる。

ただし日本語対応したユーティリティは注意が必要である。これらはキャラクタコードの先頭 1 ビットがオンの場合日本語 EUC としてテキストを扱おうとする結果、ロシア語テキストでは誤動作する可能性がある。よって sed、grep、awk などは /usr/bin ディレクトリ配下のものを明示的に指定して実行することをお勧めする。 FreeBSD においてこれらツールの日本語対応版は通常 /usr/local/bin に格納されるからである。