*日本語環境構築の Tips や FAQ だとか [#y378190c]

----

#contents

----


*まず最初にやるべき設定はなんですか? &aname(system-wide-lang); [#p3be6cba]
若干の「[[問題点>https://wiki.debian.org/ja/L10n/Japanese]]」はありますが、特にありません。

インストーラによってシステム標準のロケールが ''ja_JP.UTF-8'' に設定されており、アプリケーション側が対応していれば、何もせずとも日本語で表示されます。

この設定は /etc/default/locale に
>#  File generated by update-locale
>LANG="ja_JP.UTF-8"
<
として書かれています。
このファイルはログイン時に読み込まれ環境変数 LANGが ja_JP.UTF-8 に設定されます。

//**以前のリリースを使っていた人に注意 [#kdcca561]

//-sarge 以前に広く使われていた ''language-env'' パッケージ (コマンド名: ''set-language-env'') は''絶対に使わないでください''。
//(パッケージがまだ利用可能ですが、開発は停止状態です。)
//--[[[debian-devel:16535] language-envについて (Re: 10/16 IRC 会議議題予定)>http://lists.debian.or.jp/debian-devel/200611/msg00015.html]]

//-sarge, etch ではシステムの環境変数 LANG の値は /etc/environment に書かれていましたが、lenny 以降は廃止されています。
//[[後述>#system-wide-lang]]の方法で設定するか /etc/default/locale に書いてください。

//**ロケールがおかしくなったので再生成したい &aname(locales); [#p9c3db8f]
// # dpkg-reconfigure locales
//で
//-生成するロケールの選択: "ja_JP.UTF-8 UTF-8" にスペースキーを押してチェックを入れる。
//タブキーを押して「了解」を Enter
//-システム標準の環境変数として設定するデフォルトロケール: 「なし (None)」にすると LANG=C になります。お好みで。
**C と C.UTF-8 の違い [#aec27e0b]
-C は ASCII 文字しか使いませんし、扱えません。つまり日本語は表示も入力も一切不可。
-C.UTF-8 は ASCII 文字しか使いませんが、ASCII 文字以外も扱えます。日本語を表示でき入力も可。
** EUC-JP ロケールを追加したい場合 &aname(locales-euc); [#nb61b6df]
通常は必要ありませんが、一部のアプリ (例: TeX, Tgif) を使用したい場合、EUC-JP ロケールが必要になる場合があります。

EUC-JP ロケールを生成するには
 # dpkg-reconfigure locales
で ''ja_JP.EUC-JP'' を選択します。

----

*X Window System [#d4722e43]
**フォントの設定をカスタマイズする [#y85e41f7]
最近の X 対応アプリケーションの大半は、
旧来の X11 のフォントシステムではなく fontconfig によるフォントシステムを使用しています。

具体的な設定は [[Software/fontconfig]] を参照。
**Java アプリケーションで文字化けする &aname(java); [#d76a1d12]

OpenJDK のフォント設定ファイルは /etc/java-*-openjdk/fontconfig.properties です。
デフォルトの設定では fonts-vlgothic、fonts-ipafont のいずれかがインストールされていれば、文字化けしないはずです。

他ベンダ提供の JDK バイナリは squeeze 以降の Debian ではもはやサポートされないため、Debian 標準の Java 環境に入れ替えてください (手順は [[Software/Java#environment]] を参照)。
現在システムで有効になっている実装を確認してください (手順は [[Software/Java#alternatives]] 参照)。

**gv や ghostscript で日本語を処理できない [#tf71a8db]

//-[[Software/TeX]]

poppler-data、fonts-vlgothic、fonts-ipafont (その他の日本語フォント)
を導入すれば日本語の処理回りについて問題ありません。なければ導入してください。
**evince や xpdf などで日本語が表示されない &aname(dvi_pdf_japanese); [#m7b9e77f]

//-[[Software/TeX]]
//-[[Software/PDF]]

[[poppler-data>pkg:poppler-data]]
パッケージをインストールしてください。

なお、dvi 文書については、 evince ではまだ表示できません (?)
dvipsk-ja で pdf や ps に変換するか、xdvik-ja 等で代替してください。
**openbox で文字化けする [#x9a3f1ae]
一部のテーマが日本語に対応していないのが原因。
文字化けするテーマを
 $ 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

**fvwm で文字化けする [#g06d31a6]
デフォルトでは xlib 経由で表示しようとするので、そっち系のフォントを揃えないと化けます。
てっとり早い解消方法は、フォント設定を xft (fontconfig) 経由にすることです。
~~/.fvwm/config に
 DefaultFont "xft:sans-serif:size=10"


//**Tgif で日本語を使用する [#h73624a4]
// OpenOffice.org Draw や Inkscape など GTK+ や Qt に依存するドローイングツールを使う方が良いでしょう。
//
// ↑確かに重要度は低いので別ページ化するのならいいのですが、削除はやめてください。
// OOoDraw や Inkscape は日本語フォント埋め込みの PostScript しか吐けないので
// Tgif の完全な上位互換アプリケーションとはいえません。

//さざなみフォントを使う場合、 ttf-sazanami-gothic, ttf-sazanami-mincho, x-ttcidfont-conf をインストールし、
//次のように /etc/X11/app-defaults/Tgif か ~/.Xresources に追記して、X サーバを再起動します。

// Tgif.InitialFont: Ryumin
// Tgif.DoubleByteInputMethod: xim
// Tgif.SquareDoubleByteFonts: \n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\
//  \n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\
//  \n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
//  -sazanami-mincho-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,Ryumin-Light-EUC-V\n\
//  \n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
//  -sazanami-gothic-medium-r-*--%d-*-*-*-*-*-jisx0208.1983-*,V,GothicBBB-Medium-EUC-V\n\
//  -sazanami-gothic-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

//あとは、[[EUC-JP ロケールがあれば>#locales-euc]]、次のように実行できるはずです。

// $ LANG=ja_JP.EUC-JP tgif

----
*コンソール &aname(console); [#z2729e81]

**コンソールで文字化けする &aname(console_mojibake); [#n7f618bb]
基本的にコンソールでは日本語を表示できませんが、[[システム標準のロケールが ja_JP.UTF-8 に設定されている>#system-wide-lang]]ため、メッセージなどを日本語で出力しようとして化けます。

コンソールログインしたときに環境変数 LANG を未設定 (C) のままにするには、/etc/pam.d/login の
 session       required   pam_env.so readenv=1 envfile=/etc/default/locale
という行をコメントアウトします。

もし X を使わないのであれば、システム標準のロケールを未設定 (C) にするのも手です。
 # dpkg-reconfigure locales

**コンソールで日本語の表示をするには &aname(console_ja); [#x1589390]
現在の Linux カーネルは、 VGA コンソールの規格上の制限を引きずっているため、 
512 文字を越えるフォントをカーネルフォントに設定できません。

日本語フォントを表示させるためには、フレームバッファを準備しておき、それに
[[fbterm>pkg:fbterm]] (KMS, vesafb 環境で動作します。vga16fb では動作しません。)
等を被せる方法を取ることになります。

なお、fbterm の提供する擬似端末は securetty でないため、
デフォルトの設定ではフレームバッファターミナル上からユーザ権限による X の起動ができないなど、
いくつかのセキュリティ的制限があります。
***1. フレームバッファを準備する [#if1b590a]
フレームバッファの準備は、使うドライバによって手順が異なります。

:KMS (Kernel Modesetting) を有効にする|
squeeze 以降では [[KMS>Software/LinuxKernel#kernel_modesetting]] が有効な場合は
フレームバッファも有効にできる可能性があります。
KMS はカーネルコマンドラインに vga=xxx があるとエラーが出るので、有効化する前に必ず削除してください。
例: radeon ドライバの場合、radeondrmfb, i915 ドライバの場合、inteldrmfb が自動的に読み込まれます。

:vesafb を使う|
通常はこの方法が一番です。
Debian が配布しているカーネルでは、 vesafb が組み込まれていますので、
カーネルコマンドラインに vga=xxx を付けてやるだけです。~
ブートローダが GRUB 2 なら、/etc/default/grub の
>GRUB_CMDLINE_LINUX_DEFAULT="xxxxxxxx"
<
に、
>GRUB_CMDLINE_LINUX_DEFAULT="xxxxxxxx ''vga=791''"
<
と追記してください。
''vga='' に指定する値は
[[vesafb.txt>http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/fb/vesafb.txt;hb=HEAD]]
[[(日本語訳: 更新されていないので注意)>https://linuxjf.osdn.jp/JFdocs/kernel-docs-2.6/fb/vesafb.txt.html]]
を参照してください。動かない場合は表のより上の値、それでも動かない値は表のより左の値を使うようにするといいでしょう。

:その他のフレームバッファドライバを使う|
intelfb, radeonfb など各デバイス向けのドライバも、モジュールとして付いてきますが、
結局カーネル組み込みにして再構築しないとうまく動かない場合があります。
***2. 再起動、ユーザグループの確認、フレームバッファデバイスファイルの確認 [#m97c8485]
1. が完了したら、再起動して設定を有効にしたカーネルで起動します。

再起動後ログインし、ログインしたユーザが video グループのメンバか確認します。
 $ id (ユーザー名)
>uid=xxxxx(ユーザー名) gid=yyyyy(ユーザーグループ) 所属グループ=yyyyy(ユーザーグループ),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),''44(video)'',46(plugdev),107(nvram)

入っていなければユーザを video グループに入れてください。
 # adduser (ユーザー名) video

udev が正常に機能しているとフレームバッファデバイスファイルは以下のような感じで自動的に生成されています。
>crw-rw---- 1 root video 29, 0 2010-12-27 15:44 /dev/fb0

フレームバッファが用意できたら、 以下のコマンドを叩いてください。何も表示されない場合は
残念ながらフレームバッファが準備できていません。

 $ cat /proc/fb
 0 radeondrmfb

***3. フレームバッファ対応ターミナルの起動 [#w9ca6681]
fbterm を起動します。UTF-8 環境の場合、特にオプションは必要ありません。
fbterm は fontconfig で管理しているフォントならば全て使えます。
 $ fbterm
//***4. その他 [#i7346c45]
//[[kon2>pkg:kon2]] が使える場合があります。

//フレームバッファが使えない、フレームバッファターミナルが起動できない場合、
//あきらめて[[システム標準のロケールを LANG=C にしておく>#system-wide-lang]]のが無難かもしれません。

//**コンソールで日本語入力するにはどうしたらいいの? [#a0fccc8f]
//[[uim-fep を使えばコンソールで日本語入力ができる。>#uim-fep]]

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

----
*日本語入力 &aname(input); [#m6dfa573]

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

が必要ですが、インストール時に日本語と「デスクトップ環境」を選択していれば標準的な設定が済んでいると思います。
**キー配列を変更したいんだけど &aname(console-setup);&aname(keyboard-configuration); [#g9475662]
pc101 から jp106、qwerty から dvorak のようなおおまかな変更をする場合は
 # dpkg-reconfigure keyboard-configuration
設定は /etc/default/keyboard に保存されます。

/etc/default/keyboard の XKBOPTIONS の値には xorg.conf の指定 (/usr/share/X11/xkb/rules/base.lst) がそのまま使えます。
例えば CapsLock を Ctrl にするなら
 XKBOPTIONS="ctrl:nocaps"
という風に。
その場で設定を反映するには
 # service keyboard-setup restart

X Window System のキー配列は [[xmodmap>pkg:x11-xserver-utils]] コマンドで変更できます。
例えば CapsLock を Ctrl にするなら
 $ xmodmap -e "clear lock" -e "keycode 66 = Control_L" -e "add control = Control_L"
もしくは [[setxkbmap>pkg:x11-xkb-utils]] コマンドで
 $ setxkbmap -option ctrl:nocaps
キーコードは
 $ xev
してから調べたいキーを押せば表示されます。

コンソールのキー配列は /etc/console-setup/remap.inc で変更できます。
これには [[kbd>pkg:kbd]] が別途必要です。
例えば CapsLock を Ctrl にするなら
 keycode 58 = Control
//設定ファイルにある ctrll みたいな書式は間違ってないか?
のような感じで。
キーコードは
 $ showkey -k
してから調べたいキーを押せば表示されます。
その場で設定を反映するには
 # setupcon --force --save

なお VirtualBox 上で、上記のように CapsLock を他のキーに変更しようとすると、入力がおかしくなりますが、[[これに対応するとコードが複雑化するのでイヤザンス>https://www.virtualbox.org/ticket/13404]]とのことで、直る見込みはありません。どうしても変更したい場合は、ホスト側のキーを入れ換える等で頑張ってください。
**入力メソッドの設定 [#ma64ccb9]

etch 以降、標準の入力メソッドは [[uim>pkg:uim]] です。

インストールされていなければ
 # aptitude install uim
でインストールできます。

詳しくは [[Software/uim]] 参照。

標準以外の入力メソッドは、 
- [[SCIM>pkg:scim]]
- [[kinput2>pkg:kinput2]]
//- [[IIIMF>pkg:im-sdk]] (squeeze 以降廃止)
- [[GCIN>pkg:gcin]]
- [[iBus>pkg:ibus]] (squeeze 以降)
- [[fcitx>pkg:fcitx]] (squeeze 以降)
- [[hime>pkg:hime]] (wheezy 以降)

などがあります。

*** X Window System &aname(uim-xim); [#kcb0d1aa]
[[im-config>pkg:im-config]] という入力メソッドのためのフレームワークが
各環境変数等の面倒を見てくれるので、単に X を再起動すれば入力メソッドが自動的に起動するはずです。
ユーザ側で何か設定する必要はありません。

設定を変更するには
 $ im-config
もし "E: zenity がインストールされなければいけません。" と表示されても [[dialog>pkg:dialog]] が入っているなら
 $ DISPLAY= im-config
とすれば起動できます。

-[[im-config -- Input method configuration framework をITPしました>http://lists.debian.or.jp/debian-devel/201006/msg00018.html]]
-[[after deinstall of im-config, login in gdm no longer possible, purge needed>BTS:618021]]
*** コンソール &aname(uim-fep); [#d7f3cd44]

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

fbterm 等により[[日本語表示ができる状態にしてから>#console_ja]] 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 を参照のこと。

screen などを使う人は、以下の設定を $HOME/.screenrc に導入すると、

-<escape key> + m で uim-fep を起動、
-<escape key> + k で uim-fep を終了

できます。

 # Setup uim-fep like screen-uim
 bind m exec | uim-fep -S
 bind k eval 'exec cat' kill redisplay

詳しくは [[UimFep>http://code.google.com/p/uim-doc-ja/wiki/UimFep]] 参照。
もし uim ではなく fcitx を使っているなら、[[fcitx-frontend-fbterm>pkg:fcitx-fbterm]] で。
 $ fbterm -i fcitx-fbterm

//代替になりそうなもの
//scim-console 未パッケージ https://github.com/scim-im/scim-console
//ibus-fbterm 未パッケージ https://code.google.com/p/ibus-fbterm/

テキストなどに入力したいだけなら日本語入力システムを内蔵したエディタを使うのも手です。
-[[Emacs>#uim-el]]
-[[ng-cjk-canna>pkg:ng]]
-[[jvim-canna>pkg:jvim]]

など。
*** Emacs &aname(uim-el); [#nea94fa6]
Emacs には kkc.el という仮名漢字変換エンジンが付属しているので、Ctrl+\ を押せばとりあえず日本語入力できます。

uim で Emacs に入力する方法は
-Emacs 用フロントエンドである uim.el を用いる
-X11 上であれば XIM である uim-xim を用いる
-端末上 (-nw) であれば FEP である uim-fep を用いる

があります。
おすすめは Emacs 用フロントエンドを用いる方法です。
 # aptitude install uim-el
インストールすると Emacs 起動時に uim-leim がロードされるようになるので、~/.emacs に
 (setq default-input-method "japanese-anthy-uim")
などとするだけで使えるようになります。
//インライン候補表示などのその他オプションはドキュメントを参照してください。
//あとは /usr/share/doc/uim-el/README.ja.gz に従って、~/.emacs を修正してください。

詳しくは [[UimEl>http://code.google.com/p/uim-doc-ja/wiki/UimEl]] 参照。

なお、 Emacs のバージョンにより、XIM 側が優先されてしまう場合は、~/.Xresources に
 Emacs.UseXIM: false
と記述して、 X サーバを再起動(または X リソースを更新)してください。

Emacs で利用できる日本語入力は色々あります
-[[anthy-el>pkg:anthy-el]]
-[[yc-el>pkg:yc-el]]
-[[egg>pkg:egg]]
-[[emacs-mozc>pkg:mozc]]
-[[ddskk>pkg:ddskk]]
-[[t-code>pkg:t-code]]
*** mlterm &aname(mlterm-im-uim); [#sd386106]

mlterm 上で日本語入力する方法は IM プラグイン、XIM、uim-fep の 3 種類の方法がありますが、IM プラグインがおすすめです。

 # aptitude install mlterm-im-uim

そして、 ~/.mlterm/main

 input_method = uim
** uim における変換エンジンの設定 &aname(anthy); [#la3bfd17]

etch 以降、標準の変換エンジンは [[Anthy>pkg:anthy]] です。
インストールされていなければ
 # aptitude install uim-anthy
でインストールできます。

詳しくは [[Software/uim#uim-anthy]] 参照。

//**日本語入力エンジンの選択 [#yfdc7c46]
//
//利用可能な日本語入力エンジンは、
//- [[libskk>pkg:libskk]]
//- [[libkkc>pkg:libkkc]] (iBus のみ対応)
//- [[Mozc>pkg:mozc]]
//- [[Anthy>pkg:anthy]]
//- [[Canna>pkg:canna]]
//- [[FrewWnn>pkg:freewnn]] (kinput2 のみ対応)
//- [[T-Code>pkg:t-code]] (Emacs 用)
//- [[ddskk>pkg:ddskk]] (Emacs 用)
//
//などがあります。
** 言語バー (IME ツールバー) ぷりーず [#xe8cf429]
[[Software/uim#uim-toolbar]] 参照。
**[http://www.justsystems.com/jp/linux/ ATOK for Linux] を使う &aname(atok); [#u2776d91]

***ATOK X3 [#f68f1f33]
deb パッケージが同梱されており、
[http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=037227 FAQ]
のようにインストールすれば特に問題なく使える模様。

>
参考 (squeeze の場合には以下の全てが必要)
-[http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=048707 dpkg 1.15.8 対応 deb パッケージ]
-[http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042459 アップデートモジュール]
-[http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=044668 GTK+ 2.16 対応モジュール]
<

ただし lenny 以降だと、上記のやり方だけでは GTK の iiim モジュールの設定がされていないままのため、~
/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"
のように書いておく。

// ★ 既に sid には無い
// なお、 sid の iiimf 関連パッケージは ATOK X3 では使えないので、 全て ATOK X3 同梱のものにしないとダメ。

etch 以前を使っていた時に user-ja-conf 等により ~/.Xresources に
 *inputMethod: XIM
の行が書かれたままの状態が残っている場合には、この行をコメントアウトしないとパレットが表示されなくなる。

im-switch ではなく im-config パッケージを利用している場合には、
/opt/atokx3/bin/atokx3start.sh の内容を ~/.xinputrc に記述すると使えるようになる。

**wnn7 や vje-delta がインストールできない [#k126839a]

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 と書き換えればよい。

**コンソールのキーマップが変更できない [#fa95edf4]
/etc/vconsole.conf というファイルが存在しないかチェック。あれば削除。

**なんで uim が日本語標準のインプットメソッドなの? [#bc588ae5]
etch からは標準のインプットメソッドは uim だが、
-採用された当時は日本語が使えるまともなインプットメソッドは uim (と kinput) ぐらいしかなかった。
-(敢えて乱暴な言い方をすると) 他の IM も含めてどれも一長一短で、わざわざ変更する理由がない。
-X を使用せずコンソールで動作する uim-fep があることから、何らかの理由で X, emacs (uim-el) が使えない、
コンソールベースの環境を救済するには選択肢がこれしかない。

などの理由から etch 以降も変更されていない。

-[[[debian-devel:17749] Re: 日本語タスク(squeeze)>http://lists.debian.or.jp/debian-devel/201002/msg00009.html]]

----

* 日本語ファイル/ディレクトリ [#se59a870]

** ファイルシステム [#dfd152d5]

vfat など特殊なものを除き、ファイルシステム上でのファイル名の文字コード変換は必要ありません。~
ちなみに Linux のファイルシステム (正確には VFS) 上でのファイル名は内部ですべて Unicode (UCS4) で取り扱っています。~
必要に応じて fs/nls/ 以下の変換モジュールを利用しています。
*** NTFS [#re6b5d06]

NTFS では、ディスクには UTF-16 で記録されていますが、OS が文字コード変換を行うので特に意識する必要はありません。

[[ntfs-3g>pkg:ntfs-3g]] を使って以下のようにすればいいでしょう。

 # ntfs-3g (NTFSデバイス) (マウントポイント) -o locale=ja_JP.UTF-8

常時マウントするには、/etc/fstab に以下のように書いておきます。

 (NTFSデバイス) (マウントポイント) ntfs-3g locale=ja_JP.UTF-8  0 0

*** FAT [#vd89f7b1]

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

** zip を展開したら文字化け &aname(unzip); [#n96053d8]

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

Ubuntu では、 -O / -I オプションでファイル名の文字コードを指定できるようにする
[[パッチ>https://bugzilla.altlinux.org/attachment.cgi?id=1402]]が当たっています
([[LP#10979>https://bugs.launchpad.net/ubuntu/+bug/10979]])。

Debian でもこのパッチを適用してビルドしなおせば動きます。

Ubuntu Japanese Team でも、これとはまた別のパッチを適用した unzip を
[[PPA で配布している>https://launchpad.net/~japaneseteam/+archive/ubuntu/ppa]]ようです。

//lenny 向けに上記のパッチを適用したアンオフィシャル版が下記 URL で提供されています。
///usr/bin/uzcp932 というラッパースクリプトが含まれており、/usr/bin/unzip -O CP932 $@ を実行したのと同等になります。
//at your own risk.
//- http://infobsession.net/static/deb/unzip_ml/

//かなりバッドノウハウな例としては、
//unzip した後に convmv するようなスクリプトを組む
** EUC-JP 環境のディスクを使う [#l4a30421]

以前の EUC-JP 環境を使っていたディスクを使うには、記録されるファイル名自体を UTF-8 のものにリネームします。

このリネーム処理は、 [[convmv>pkg: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>http://www.da-cha.jp/fcc]] というのがあります。

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

bash の menu-complete 機能を使う
 $ bind TAB:menu-complete
 $ cd [TAB]

ls の行番号を使う
 $ ls | cat -n
 $ cd "`ls | head -n 番号 | tail -n 1`"

----

*その他 [#f780cfa4]

** バックスラッシュが円記号になる [#idc2c4ab]
IPA フォントを窓から投げ捨ててください。

** 全角が半角の 2 倍の幅にならないことがある [#d879c8c7]
フォントサイズが (ピクセル単位で) 奇数の場合そうなります。
**一部のアプリで ASCII 文字が全角幅の文字と同じ幅で表示される &aname(dual-width); [#s87dcb53]
恐らくそのアプリは、dual-width (2 種類の幅を持つフォント) の処理周りがバグってます。
 $ fc-list :spacing=dual
で表示されるフォントが dual-width です。

回避するには ~/.conf/fontconfig/fonts.conf や /etc/fonts/local.conf に
 <?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 <fontconfig>
 
   <match target="font">
     <test name="spacing">
       <const>dual</const>
     </test>
     <edit name="spacing">
       <const>proportional</const>
     </edit>
     <edit name="globaladvance">
       <bool>false</bool>
     </edit>
   </match>
 
 </fontconfig>
**一部の文字の幅がおかしい &aname(ambiguous-char); [#g01e077c]
-[[UAX #11: East Asian Width>http://unicode.org/reports/tr11/]]
-[[Unicode の曖昧な文字幅問題 その2>http://d.hatena.ne.jp/macks/20061001#p1]]
-[[screen + curses で表示がずれるよ、というお話>http://d.hatena.ne.jp/niha/20090130]]
-[[[debian-devel:16693] East Asian Width Problem at rxvt-unicode-ml>http://lists.debian.or.jp/debian-devel/200703/msg00038.html]]
-[[Bugzilla Bug 4335 EastAsianAmbiguous character width is always 1 in UTF-8 locale>http://sourceware.org/bugzilla/show_bug.cgi?id=4335]]
-[[locales: EastAsianAmbiguous character width is always 1 in UTF-8>BTS:471021]]
-[[Software/fontconfig/SandBox#ambiguous-char]]

基本的に (e)glibc がすべての文字幅を半角に決めうちしているので、(e)glibc に丸投げしているアプリでこの問題が起きます。
また、表示に使用するフォントにも依存しているので、Ambiguous 文字が全角になっていないフォント (fonts-mplus など) では正常な表示は期待できません。
***(e)glibc 側での対処方法 [#p195eadc]

+ [[UTF-8-EAW-FULLWIDTH.gz>https://vdlinux.osdn.jp/dists/UTF-8-EAW-FULLWIDTH.gz]] をダウンロードして /usr/share/i18n/charmaps に置く
+ root で echo "ja_JP.UTF-8 UTF-8-EAW-FULLWIDTH" >> /usr/local/share/i18n/SUPPORTED
+ dpkg-reconfigure locales を実行し、「ja_JP.UTF-8 UTF-8-EAW-FULLWIDTH」 を有効に

[[wcwidth-cjk>https://github.com/fumiyas/wcwidth-cjk]]を使うことでも同等の効果が得られます。

***独自対応しているアプリとその設定方法 [#kd5df849]

- vim
-- ~/.vimrc に set ambiwidth=double を追加
- emacs
-- 23 以降はロケールを見て自動設定されますが、set-language-environment を Japanese/English 等することで制御可能
- xterm
-- 起動オプションに -cjk_width をつける
-- ~~/.Xresources に XTerm*cjkWidth: true
- mlterm
-- 起動オプションに -a 2 をつける
-- ~~/.mlterm/main に col_size_of_width_a = 2 を追加
- vte (gnome-terminal、xfce4-terminal...)
-- 環境変数に VTE_CJK_WIDTH=1 を指定
- w3m
-- オプションの「ある種のUnicode文字を全角にする」を YES に
-- 0.5.3 未満は http://www.j10n.org/files/w3m-cvs-1.914-ambwidth.patch を当てる
- screen
-- ロケールを見て自動設定されますが、~/.screenrc に cjkwidth on/off を追加することで制御可能
- fbterm
-- 起動オプションに -a をつける

dialog などで罫線がおかしくなる場合、環境変数に NCURSES_NO_UTF8_ACS=0 というおまじないを指定してみる。
**ja_JP.eucJP や ja_JP.uft8 みたいな表記はなに? [#u9d42c51]
ja_JP.eucJP は ja_JP.EUC-JP の昔の表記です。更に前には ja_JP.ujis と表記していました。
:Linux における日本語ロケールに関する指針|http://archive.linux.or.jp/JF/JFdocs/Japanese-Locale-Policy/

ja_JP.utf8 は locale の内部表現です。locale -a すると見られます。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS