日本語環境構築の Tips や FAQ だとか



まず最初にやるべき設定はなんですか?

注意

ロケールの設定

etch の標準ロケールは UTF-8 です。適切に設定されているかは、次のように確認できます。

/etc/default/locale を表示

$ cat /etc/default/locale
#  File generated by update-locale
LANG=ja_JP.UTF-8

locale コマンドを実行

$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

もしロケールが ja_JP.UTF-8 になっていなければ、update-locale コマンドで、ロケールを ja_JP.UTF-8 に設定してください。

# update-locale LANG=ja_JP.UTF-8

もし update-locale コマンドを実行しても

*** update-locale: Error: invalid locale settings:  LANG=ja_JP.UTF-8

と表示される場合は、dpkg-reconfigure locales で ja_JP.UTF-8 ロケールを作成してください。

# dpkg-reconfigure locales

EUC-JP ロケールの追加

一部のアプリでは EUC-JP ロケールでの動作を期待しているものがあります (例: TeX, Tgif)

EUC-JP ロケールを生成するには

# dpkg-reconfigure locales

ja_JP.EUC-JP を選択します。 この時、どのロケールをシステム標準にするか聞かれますが、この設定は /etc/default/locale に書き込まれます。

後からロケールの変更するには

# update-locale LANG=ja_JP.EUC-JP

とします。


X Window System

X で日本語を表示するにはどうしたらいいの?

通常は何もする必要はありません。

ロケールが UTF-8 になっていることを確認しましょう。

X で日本語を入力するにはどうしたらいいの?

入力メソッドと変換エンジンが必要です。

Tgif で日本語を使用する

次のように /etc/X11/app-defaults/Tgif か ~/.Xresources に追記して、 X サーバリソースを更新するか、 X サーバを再起動します。

Tgif.InitialFont: Ryumin
Tgif.DoubleByteInputMethod: xim
Tgif.SquareDoubleByteFonts: \n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
 \n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
 \n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
 \n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
 -misc-fixed-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V
Tgif.MenuFontSet: a14,k14,r14
Tgif.MsgFontSet: a14,k14,r14
Tgif.BoldMsgFontSet: a14,k14,r14

X サーバリソースの更新

$ xrdb -merge ~/.Xresources

あとは、EUC-JPロケールがあれば、次のように実行できるはずです。

$ LANG=ja_JP.EUC-JP tgif

フォントの設定をカスタマイズする

TrueType フォントの埋め込みビットマップを表示したくない

fontconfig 2.4 以降では、埋め込みビットマップでの表示が優先されます。 これを止めさせるには、

# dpkg-reconfigure fontconfig-config

を実行し、「デフォルトでビットマップフォントを有効にしますか?」の質問に「いいえ」と答えてください。

和英文混在文章で、編集中にフォントがころころ変わって困る

フォントを固定するには、 /etc/fonts/local.conf や ~/.fonts.conf あたりに

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="append" binding="strong">
      <string>VL PGothic</string>
    </edit>
  </match>
  <match>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="append" binding="strong">
      <string>Sazanami Mincho</string>
    </edit>
  </match>
  <match>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="append" binding="strong">
      <string>VL Gothic</string>
    </edit>
  </match>
</fontconfig>

などと記述すればいいだろう。

複数のフォントの組み合わせ

上記の方法の発展として、複数のフォントを組み合わせたフォントに固定することができる。 ただし、この方法は、 Flash Player 9 で和文が豆腐になるというバグがあるので注意。

DejaVu Sans を元に Sazanami Gothic で補完する例を示す。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test name="family" qual="any">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="append" binding="strong">
      <string>dejavu sans</string>
      <string>sazanami gothic</string>
    </edit>
  </match>
</fontconfig>

不完全な英語グリフを持つ日本語フォントを英語表示に使いたい

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test name="lang" compare="eq"><string>en</string></test>
    <edit name="lang" mode="prepend"><string>ja</string></edit>
  </match>
</fontconfig>

IPA フォントで本来とは違う文字が表示される

Sun JVM (JRE, JDK) で文字化けする

sun-java6-jre パッケージをインストールした場合

/etc/java-6-sun/fontconfig.properties がフォントの設定になります。

ttf-sazanami-gothic, ttf-sazanami-minchoがインストールされていれば、デフォルトで文字化けしなくなっているかと思います。

sun-java5-jre パッケージをインストールした場合

/etc/java-1.5.0-sun/fontconfig.properties がフォントの設定になります。

ttf-sazanami-gothic, ttf-sazanami-minchoがインストールされていれば、デフォルトで文字化けしなくなっているかと思います。

gv や ghostscript で日本語を処理できない

そもそも、gs-gpl では日本語を処理できません。 とりあえずは、gs-esp を入れましょう。

あわせて、gs-cjk-resource、cmap-adobe-japan1、ttf-kochi-gothic, ttf-kochi-mincho なども入れましょう。

…で大丈夫だったはずなんですが、バージョンによって問題があるようです。 対処するノウハウは KeN's GNU/Linux Diary gs-esp 8.15.1.dfsg.1-1日本語周り にまとまっているので熟読してみては。

evince で日本語を表示できない

non-free コンポーネントの poppler-data パッケージをインストールしてください。

なお、dvi 文書については、 evince ではまだ表示できません (?) dvips や dvipdfmx で pdf や ps に変換するか、 xdvi 等で代替してください。

openbox で文字化けする

一部のテーマが日本語に対応していないのが原因。 文字化けするテーマを

$ cp -r /usr/share/themes/hogehoge .themes/

して、~/.themes/hogehoge/openbox-3/themerc の中の

なんちゃら.font: (フォント名):pixelsize=(サイズ)

のような部分を片っ端から Sans とか日本語フォント名に置き替えればオッケー。

参考:

[debian-users:44180] OpenBoxのメニューの文字化け
http://lists.debian.or.jp/debian-users/200507/msg00238.html

コンソール

コンソールのキーマップを変更したいんだけど

大きく分けて従来からの console-data と、 Ubuntu 由来の console-setup の二つの手法があります。

console-data の場合

pc101 から jp106 のようなおおまかな変更をする場合は

# dpkg-reconfigure console-data

Caps Lock キーを Control キーにするなどの細かい変更をするなら /etc/console-tools/remap (/etc/kbd/remap) を編集しましょう。 書式は sed です。

s/keycode  58 = Caps_Lock/keycode  58 = Control/;

Control + [ を Escape とするキーマップを追加するなら

/keycode  27 = Meta_braceleft/a        control keycode 27 = Escape

のような感じで。 その場で設定を反映するにはコンソールで

# /etc/init.d/console-screen.sh (/etc/init.d/console-screen.kbd.sh)

X 上ではできません。 キーマップの定義ファイル自体は /etc/console/boottime.kmap.gz なので、これを覗いてみましょう。

console-setup の場合 (debian lenny 以降)

console-setup は xkb のキーマップをコンソールにも適用しようという機構です。

pc101 から jp106 のようなおおまかな変更をする場合は

# dpkg-reconfigure console-setup

コンソールで日本語の表示をするには

etch をインストールしただけではコンソールで日本語の表示が化けます。

現在の Linux カーネルは、 VGA コンソールの規格上の制限を引きずっているため、 512 文字を越えるフォントをカーネルフォントに設定できません。日本語フォントを表示させるためには、フレームバッファを準備しておき、それを jfbterm 等のユーザアプリケーションで叩く、という方法が普通です。フレームバッファの準備は、使うドライバによって手順が異なります。

vesafb を使う
通常はこの方法が一番です。Debian が配布しているカーネルでは、 vesafb が組み込まれていますので、カーネル起動オプションにvga=xxxを付けてやるだけです。
Debian 的には、/boot/grub/menu.lst の
# defconfig=
という行を
# defconfig=vga=791 
のようにして update-grub コマンドを叩くのがいいでしょう。
xxxの値はhttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/fb/vesafb.txt.htmlを参照してください。動かない場合は表のより上の値、それでも動かない値は表のより左の値を使うようにするといいでしょう。
vga16fb を使う
Debian が配布しているカーネルには、 vga16fb がモジュールとして付いてきますので
# modprobe vga16fb && update-modules
とすれば OK です。うまく動いたら /etc/modules に追記する等しておくといいでしょう。
その他のフレームバッファドライバを使う
intelfb, radeonfb など各デバイス向けのドライバも、モジュールとして付いてきますが、結局カーネル組み込みにして再構築しないとうまく動かない場合があります。

フレームバッファが用意できたら、 jfbterm を起動します。UTF-8 環境の場合、特にオプションは必要ありません。

$ jfbterm

フォントには標準で unifont が使われます。

EUC-JP環境の場合は、

$ jfbterm -c other,EUC-JP,iconv,UTF-8

などとする必要があります。

なお、jfbterm の提供する擬似端末は securetty でないため、デフォルトの設定では jfbterm 上からユーザ権限による X の起動ができないなど、いくつかのセキュリティ的な制限はあります。

関連記事

蛇足だが、フレームバッファが使えないなど、jfbterm が動かない場合、あきらめてシステム標準のロケールを LANG=C にしておくのが無難かもしれません。

# dpkg-reconfigure locales

を実行し、どのロケールをシステム標準にするか (Default locale for the system environment) という質問で「なし (None)」を選択します。次に /etc/default/locale かつ /etc/environment に

LANG=C

を設定または LANG をコメントアウトします。

コンソールで日本語入力するにはどうしたらいいの?

uim-fep を使えばコンソールで日本語入力ができる。

テキストなどに入力したいだけなら日本語入力システムを内蔵したエディタを使う方法もある。 emacs ではuim-el や anthy-el 使う。 その他 ng-cjk-canna、jvim-canna など。

コンソールで文字化けしたディレクトリの中に入れない

bash の menu-complete 機能を使う

$ bind TAB:menu-complete
$ cd [TAB]

ls の行番号を使う

$ ls | cat -n
$ cd "`ls | head -n 番号 | tail -n 1`"

日本語入力

一般に、日本語の入力をするためには、

  • キーの入力、候補リストの表示などユーザとの対話を司る「入力メソッド」、
  • 実際に文節区切りやかな漢字変換を行う「変換エンジン」

が必要です。

入力メソッドの設定

etch 以降、標準の入力メソッドは uim です。 インストールされていなければ

# aptitude install uim

でインストールできます。

標準以外の入力メソッドしては、

  • Ubuntu / Fedora などで標準の SCIM
  • かつて標準だった kinput2
  • 一時的に RedHat が採用した IIIMF

などがあります。

scim などのパッケージをインストールすることで、使用できる入力メソッドを追加できます。

X Window System

im-switch という入力メソッドのためのフレームワークが 各環境変数等の面倒を見てくれるので、単に X を再起動すれば入力メソッドが自動的に起動するはずです。 ユーザ側で何か設定する必要はありません。

利用可能な入力メソッド一覧を表示

$ im-switch -l

入力メソッドを uim-systray に切り換え

$ im-switch -s uim-systray

ユーザ権限で実行するとユーザーごとでの切り換えを、root 権限で実行するとシステムワイドでの切り換えができます。 また、none に切り換えると、im-switch による設定を行わなくなります。

コンソール

uim-fep を使えばコンソールで日本語入力ができます。

jfbterm 等により日本語表示ができる状態にしてから uim-fep を起動。

$ uim-fep

コンソールでは、全角半角キーや Shift + Space キーなど、いくつかのキーシンボルを扱えないため、キーバインドをデフォルトのままにしていると問題があります。例えば、 ON/OFF の切り替えは、 Ctrl + \ など代替手段を用意する必要があります。これには、 uim-pref で別のキーを割り当てるか、 ~/.uim に

(define-key generic-on-key? '("zenkaku-hankaku" "<Shift> " "<IgnoreShift><Control>\\"))
(define-key generic-off-key? '("zenkaku-hankaku" "<Shift> " "<IgnoreShift><Control>\\"))

などと記述すればいいでしょう。その他、 /usr/share/doc/uim-fep/README.ja.gz を参照のこと。

Emacs

Emacs 上で日本語入力する方法は、 uim-el などの Emacs 用フロントエンドを用いる方法、また X11 上であれば XIM を用いる方法があります。後者の方法は、起動時間に影響があるなどの問題があるため、 X11 上で使うのであっても前者の方法をおすすめします。

# aptitude install uim-el

インストールすると Emacs 起動時に uim-leim がロードされるようになるので、 ~/.emacs に

(setq default-input-method "japanese-anthy-uim")

などとするだけで使えるようになります。インライン候補表示などのその他オプションはドキュメントを参照してください。

なお、 Emacs のバージョンにより、 XIM 側が優先されてしまう場合は、~/.Xresources に

Emacs.UseXIM: false

と記述して、 X サーバを再起動(または X リソースを更新)してください。

uim-el の代わりに anthy-el や yc-el 等をインストールすることにより、 特定の変換エンジンを直接使用することもできます。

mlterm

mlterm も Emacs と同様に mlterm 用 IM と XIM の 2 種類の方法がありますが、前者がおすすめです。

# aptitude install mlterm-im-uim

そして、 ~/.mlterm/main

input_method = uim

uim における変換エンジンの設定

etch 以降、標準の変換エンジンは Anthy です。 インストールされていなければ

# aptitude install uim-anthy

でインストールできます。

uim の設定ツールを起動

$ uim-pref-gtk &
$ uim-pref-qt &

変換エンジンの切り換えツールを起動

$ uim-im-switcher-gtk &
$ uim-im-switcher-qt &

標準以外の変換エンジンとしては、

  • 独特の操作体系を持つ SKK
  • かつて標準だった Canna
  • Wnn
  • ATOK

などがあります。

uim-canna や uim-skk などパッケージをインストールすることで、これらの変換エンジンを追加できます。

ATOK for Linux を使う

ATOK X3

deb パッケージが同梱されており、 FAQ のようにインストールすれば特に問題なく使える模様。

ただし、iiimf 関連パッケージも全て ATOK X3 のものに変えないとダメ。

user-ja-conf 等により ~/.Xresources に

*inputMethod: XIM

の行が書かれている場合には、この行をコメントアウトしないとパレットが表示されなくなる。

lenny だと /usr/lib/gtk-2.0/2.10.0/immodule-files.d/iiim-gtk2.0.immodules とでもいうファイルを作成し、

"/usr/lib/gtk-2.0/immodules/im-iiim.so"
"iiim" "Internet/Intranet Input Method" "iiimgcf" "/usr/share/locale" "ja"

のように書いておく。

etch で ATOK for Linux (ATOK X2) をインストールする

etch では iiimf 関連パッケージがバッサリ削除されている。 このため、そのままでは sarge のように atokx2 パッケージを使ったインストールはできない。 CD-ROM に入っているオリジナルインストーラを使うか、 sid の atokx2 パッケージを借りてくる 必要がある。

GTK+ アプリ以外 (KDE や X 端末) で使えない

atokx2 パッケージによりインストールされる im-switch の設定を少し変えて ~/.xinput.d/ja_JP に

# ATOK for Linux
XIM=htt
if [ -x /usr/bin/httx ]; then
    XIM_PROGRAM=/usr/bin/httx
    XIM_ARGS="-if atokx2 -lc_basiclocale ja_JP -xim htt_xbe"
else
    XIM_PROGRAM=/usr/bin/iiimx
    XIM_ARGS="-if atokx2 -xim iiim-xbe"
fi
GTK_IM_MODULE=iiim
QT_IM_MODULE=xim
DEPENDS=atokx2

HTT_DISABLE_STATUS_WINDOW=t
HTT_GENERATES_KANAKEY=t
HTT_USES_LINUX_XKEYSYM=t
export HTT_DISABLE_STATUS_WINDOW
export HTT_GENERATES_KANAKEY
export HTT_USES_LINUX_XKEYSYM

のように書くと使えるかも…。(QT_IM_MODULE の項)

Adobe Reader 8.1.1 等がハングする

etch では iiimgcf との相性が悪く、 ファイル名を指定せずに起動した時のダイアログや File->Save a Copy... メニュー等でハングする。 上記 ~/.xinput.d/ja_JP を修正して

GTK_IM_MODULE=xim

とするとハングしなくなる。

ATOK X3 でも synaptic 等のアプリで検索文字列入力等でハングし、 同様に GTK_IM_MODULE=xim とすることで解決するという情報がある。

Iceweasel / Firefox がハングする

lenny で Iceweasel + ATOK X3 を使う場合、 GTK_IM_MODULE=xim の設定だとハングする。 上記 iiim-gtk2.0.immodules の設定をした上で GTK_IM_MODULE=iiim の設定で使う。

emacs から使う

ATOK X2 では iiimecf (lenny 以降では iiimf-client-el パッケージ) を使うことで XIM を介さずに入力可能。

ATOK X3 では、今のところ iiimecf を使って入力する方法は見つかっていない。

im-switch が動かない

以下を確認

  • 日本語のロケールがちゃんとつくられていますか?
  • im-switch に対応した日本語入力システムはインストールされてますか?
  • /etc/default/locale か /etc/environment に LANG=ja_JP.* がありますか?
  • X を startx ではなく xinit で起動してませんか?

Flash で日本語入力がおかしい

uim 1.3 以降では対策は入っていますが、etch の 1.2.1 では Flash 9 の入力に色々と問題が出ます。 症状としては、入力中の文字が表示されない、変換候補窓がおかしな場所に出るなど。

入力自体はできるので我慢して使うか、SCIM 他を使ってください。

変換候補窓をキャレットの近くに表示したい

GTK+ や Qt ツールキットを利用したアプリでは、左端ではなくキャレットの近くに表示できます。

GTK+ なら uim-gtk2.0、Qt なら uim-qt をインストール

# aptitude install uim-gtk2.0 uim-qt

そして ~/.xinput.d/ja_JP の中身を

GTK_IM_MODULE=uim
QT_IM_MODULE=uim

に変更する。

iceweasel で uim-xim が時々暴走する

uim-xim の代わりに uim-gtk で入力すれば回避できるはず。

im-switch の設定ファイルを生成する

$ im-switch -s uim (uim-systray とか適宜自分の設定したいものに)

シンボリックリンクになるので、その内容をコピーして ~/.xinput.d/ja_JP の中身を

GTK_IM_MODULE=uim

に変更する。

Wine で一度に 9 文字以上の日本語を入力できない

Wine のバグ。

wnn7 や vje-delta がインストールできない

XFree86-4.3.0 以降では xlib6g をサポートしなくなった事が原因らしい。

回避案1
依存関係を無視してインストール
# dpkg -i --ignore-depends=xlib6g wnn7-server_1.01-1_i386.deb
回避案2
debian/control を書き直す
# dpkg-deb -x wnn7-server*.deb wnn7-server
# dpkg-deb -e wnn7-server*.deb wnn7-server/DEBIAN
wnn7-server_1.01-2_i386/DEBIAN/control の depend の行にある xlib6g のところを xlibs, libxaw6 に書き換えて
# dpkg-deb -b wnn7-server wnn7-server_1.01-2_i386.deb
# dpkg -i wnn7-server_1.01-2_i386.deb
回避案3
関係パッケージを hold しておく。

参考:

[debian-users:39770] Wnn7 の debianパッケージ onsid
http://lists.debian.or.jp/debian-users/200403/msg00045.html

パッケージ libglib1.2 が libglib1.2ldbl に変更されたため、wnn7-server, wnn7-xclients の依存関係に問題が出る。

上記回避案2 と同様に debian/control を修正する。debian/control の depend の行にあるlibglib1.2 を libglib1.2ldbl と書き換えればよい。

SCIM-bridge を使いたい

sid/lenny 限定です。(2008/01/31現在) バグが修正されたら、この項目は削除してください。

sid/lenny に scim-bridge のパッケージはあります (scim-bridge-agent, scim-bridge-client-gtk, scim-bridge-client-qt, scim-bridge-client-qt4)が、そのままインストールしても日本語の設定は自動でされません。 使用するには以下の設定を行う必要があります。

システムワイドで有効にする場合

# update-alternatives --install /etc/X11/xinit/xinput.d/ja_JP xinput-ja_JP /etc/X11/xinit/xinput.d/scim-bridge 0
(末尾の「0」は優先度なので、im-switch -l などを元に適当に設定する。詳しくは update-alternative のヘルプ参照)
# im-switch -s scim-bridge

skim をインストールしている場合、/etc/X11/xinit/xinput.d/scim-bridge で起動を無効にされているので、次のように修正する必要があります (例)。

*** scim-bridge.old     Thu Jan 31 21:07:57 2008
--- scim-bridge Thu Jan 31 21:08:10 2008
***************
*** 1,6 ****
  XIM=SCIM
  if [ -e /usr/bin/skim ]; then
!     XIM_PROGRAM=" "
  else
      XIM_PROGRAM=/usr/bin/scim
  fi
--- 1,6 ----
  XIM=SCIM
  if [ -e /usr/bin/skim ]; then
!     XIM_PROGRAM="/usr/bin/skim"
  else
      XIM_PROGRAM=/usr/bin/scim
  fi

ユーザーのみで使用する場合

~/.xinput.d/ja_JP に以下のファイルを作成します。

XIM=SCIM
if [ -e /usr/bin/skim ]; then
    XIM_PROGRAM=/usr/bin/skim
else
    XIM_PROGRAM=/usr/bin/scim
fi
XIM_ARGS="-d"
GTK_IM_MODULE=scim-bridge
QT_IM_MODULE=scim-bridge
DEPENDS="scim | skim, scim-bridge-agent, scim-bridge-client-gtk | scim-bridge-client-qt"

日本語ファイル名

Linux ファイルシステム (ext3 など)

ext3 などのファイルシステムでは、 OS カーネルでの文字コード変換はありません。 UTF-8 環境から扱うためには、ディスクに記録されるファイル名自体を UTF-8 のものにリネームします。

このリネーム処理は、 convmv パッケージが便利です。

カレントディレクトリ以下のファイル名を EUC-JP や Shift_JIS (CP932) から UTF-8 に変更するには、

$ convmv -f euc-jp -t utf8 * --notest
$ convmv -f sjis -t utf8 * --notest

または

$ convmv -f euc-jp -t utf8 -r . --notest
$ convmv -f sjis -t utf8 -r . --notest

とします。

また、パッケージ化はされていませんが、似たようなツールに FCC というのがあります。

NTFS

NTFS では、ディスクには UTF-16 で記録されており、 OS が文字コード変換を行います。 UTF-8 環境から扱うためには、マウントオプションに utf8 を指定します。

FAT

FAT では、 Windows 用の長いファイル名は UTF-16 、 MS-DOS 用の短いファイル名は日本語圏では cp932 で それぞれディスクに記録されており、 OS が文字コード変換を行います。 これを UTF-8 環境から扱うためには、マウントオプションに iocharset=utf8,codepage=932 を指定します。

zip

unzip コマンドは、ファイル名の文字コードを Latin として扱うため、 Shift JIS (cp932) で記録されていると文字化けします。

Ubuntu 本家では、 -O / -I オプションでファイル名の文字コードを指定できるようにする パッチが当たっています (LP#10979)。 Debian でもこのパッチを適用してビルドしなおせば動きます。

Ubuntu-ja でも、これとはまた別のパッチを適用した unzip を配布しているようです。


UTF-8 で使う

Emacs

emacs21 は、デフォルトでは Unicode のサポートがありません。 Unicode をサポートするために mule-ucs を入れてください。

# aptitude install mule-ucs

あるいは、testing のパッケージ emacs22 を入れる手もあります。 こちらはデフォルトで Unicode をサポートしているため、 mule-ucs より軽快に動作するようです。

続いて、~/.emacs の設定します。 よくわからなければ、euc-jp の場合を参考に、 utf-8 に置換しておけば問題ないでしょう。 emacs21 + mule-ucs の場合は、さらに

(require 'un-define)

を追記しておきましょう。

ちなみに、パッケージを使わず、自前で cvs を取って来た場合は、いまのところ emacs21 で byte-compile したファイルが通るようなので、~/.emacs に

;; for emacs-dev
(if (not (boundp 'debian-emacs-flavor))
    (if (load "/usr/share/emacs/site-lisp/debian-startup.el" t)
        (progn
          (setq flavor 'emacs21)
          (add-to-list 'load-path "/usr/share/emacs21/site-lisp")
          (add-to-list 'load-path "/usr/local/share/emacs21-dev/site-lisp")
          (debian-startup 'emacs21)
          (debian-startup 'emacs21))))

とでも記しておくと、emacs21 の lisp がそのまま使えます。 /usr/local/share/emacs21-dev は実際には存在してなくてもいいですが、debian 特有の startup をだますために必須です。

vim

" Ambiguous characters を全角幅に
set ambw=double

xterm

Ambiguous characters を全角幅に

$ xterm -cjk_width

mlterm

Ambiguous characters を全角幅に

$ mlterm -a 2

もしくは ~/.mlterm/main に

col_size_of_width_a = 2

vte (gnome-terminal、xfce4-terminal...)

VTE_CJK_WIDTH=1 gnome-terminal

w3m

0.5.2以降を使い、「ある種のUnicode文字を全角にする」を YES に設定。

screen

lenny 以降の screen では Ambiguous characters 対応パッチが当たっていますが、mlterm だと debconf (whiptail や dialog) の表示が崩れます。 dialog 使っている場合 (whiptail と dialog が両方インストールされていると、whiptail が使われます) なら、terminfo から acsc、rmacs、smacs を削除すれば回避できます。

$ infocmp > foo
foo から acsc、rmacs、smacs を削除
$ tic foo

その他の問題

まだ満足な UTF-8 サポートが提供されているとは言えません。

特に UAX #11: East Asian Width 周りは、アプリ毎に手動での設定を必要としたり、パッチを当ててリビルドする必要があります。

また、現状では glibc に頼っているアプリ全てで問題が起きます。

この問題は表示に使用するフォントにも依存しているので、最新の Unicode 仕様に対応していないフォント (ttf-kochi-* や ttf-sazanami-*、ttf-vlgothic など) では正常な表示は期待できません。


その他



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-03-30 (月) 14:31:54 (3011d)