ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by cygnus_odile »

先般、こちらの記事 viewtopic.php?f=13&t=2020&start=0 で記載したように

 wary-511-01j の 標準端末エミュレータ urxvt (rxvt-unicode) にて、
日本語の一部の全角記号文字(○△□)が、まともに表示されないことなどで困っており、
また、 
 mlterm 上でも 表示はOKだが、テキストエディタでの カーソル移動幅が合わない。
などの問題があった。そこで、web上の情報 http://vdr.jp/d/20070322.html を参考に、
locale での 文字幅定義 を 改変してみると解決できたので、報告しておきます。
なお、端末表示には、TakaoGothic フォントを用いて確認しました。

【 手順 1 】 改造版の utf-8 用 charmap を用意。

http://vdr.jp/d/20070322.html なるサイトに置かれている、UTF-8-EAW-FULLWIDTH.gz の
WIDTH から END WIDTH 
の間に記載されている char幅定義を頂いて、

Wary 511-01j の /usr/share/i18n/charmaps/UTF-8.gz の
WIDTH --- END WIDTH 間のchar幅を入れ替えたものを、 UTF-8-EAW-FULLWIDTH.gz として

/usr/share/i18n/charmaps/

下に配置した。


【手順 2】 locale の再定義

端末にて、以下のコマンドを実行する。

コード: 全て選択

# localedef -f UTF-8-EAW-FULLWIDTH -i ja_JP ja_JP.UTF-8
【手順 3】 X サーバをリスタート

【 結果 】 
 端末 urxvt 上で、○△□が全角幅できちんと表示され、 CUI な テキストエディタ GNU nano や mp(pup-431J から頂いた日本語対応版) での カーソル移動幅にも問題なくなった。
 副作用(?)として、SeaMonkey 2.0 での表示も、○△□ が同じ大きさに表示されるようになった。
  (改変前は、○とか□が小さく表示されていた。)

 なお、もとに戻すには

コード: 全て選択

# localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
として、X サーバをリスタートすれば良い。

ご興味ある方は、
http://www.geocities.jp/cygnus_odile/pu ... LLWIDTH.gz
をダウンロードして、 /usr/share/i18n/charmaps/ 下に配置してお試しください。

端末エミュ上で 日本語のテキストファイルを扱う人(私だけかも知れませんが)とか、
Webブラウザにて、 ○とか□がやたら小さく表示(半角幅サイズ)されるのが嫌な人には役に立つかも。

 蛇足ながら、ここらの問題は、 unicode に於ける East Asian Ambigous Character Width 問題 というものだそうです。

----------------------------------
Dell Latitude D600 SXGA+ model with Wary 511-01j (Frugal)
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by cygnus_odile »

(追記)
Puppy Linux 4.3.1JP でも、上記の改変した charmap ( UTF-8-EAW-FULLWIDTH.gz ) を、
同様に /usr/share/i18n/charmaps 下に配置して、
端末から

コード: 全て選択

localedef -f UTF-8-EAW-FULLWIDTH -i ja_JP ja_JP.UTF-8
を実行すると、 urxvt で、○△□が入力、表示出来るようになりました。
テキストエディタ mp にて、確認。

なお、 Xサーバの再起動は必要なかった。
端末(urxvt)の再起動で O.K.

----------------------------------
Dell Latitude D600 SXGA+ model with Puppy Linux 4.3.1JP (Frugal)
アバター
暇人
記事: 2392
登録日時: 07/08/12(日) 23:33
お住まい: 埼玉県xx市並4
連絡する:

Re: ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by 暇人 »

なるほど、興味深い。
管理人見習い
NEC Express5800 S70/SR G6950 2.8GHz/1G
lenovo S10-3 AtomN450 1.66G/1G
暇人/貳馬力/2CV
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by cygnus_odile »

【 ご参考 】

http://ja.wikipedia.org/wiki/East_Asian_Width (東アジアの文字幅)
に、解説されていますが、 unicode の付属書に定められる、East_Asian_Width 特性の値で、
「A (Ambiguous; 曖昧) 文脈によって文字幅が異なる」
と、されているものの扱いの問題のようです。

http://unicode.org/Public/UNIDATA/EastAsianWidth.txt

を見ると、各々の文字の その属性値が記載されています。
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by cygnus_odile »

以下、デフォルト状態 及び 文字幅定義改変 locale (ja_JP.UTF-8) での urxvt に於ける日本語表示サンプル。
< Wary 5.1.1(wary-511-k2.6.30.5) + lang_pack_ja-1.1-w5.sfs >

  * 表示フォントは、標準添付の M+1P+IPAG

1-1)デフォルト locale : more ('busybox more')コマンドでの表示例、○△□が 半角幅と認識されて化けてる。
  画像

1-2)改変 locale : more コマンドでの表示例、○△□が きちんと(全角幅にて)表示される。
  画像

2-1)デフォルト locale : less('busybox less') コマンドでの表示。○△□が 半角幅と認識される。文字化け多発。
  画像

2-2)改変 locale : less('busybox less') コマンドでの表示例、○△□は表示されるが、文字化け多発。
  画像

 Puppy / Wary に標準付属の less の実態は、'/bin/busybox' のようだが、unicode 対応が不完全なのだろう。
 別途、less を用意する必要がある。
探してみると、例えば、
   http://distro.ibiblio.org/pub/linux/dis ... ges-wary5/
に、 less-436-w5.pet 2010-Dec-16 15:12:24 50.5K
がある。(UTF-8 の 表示へ対応している筈)

Puppy Package Manager の find 欄に less と入力すると、less-436-w5 がリスト表示されるので、それを選択してインストールしてみた。

2-3)改変 locale : less (version 436) コマンドでの表示例、文字化け解消。
  画像

 なお、 wary 5.1.1 では、 この他、 先の more, tail, vi などのテキストファイルをハンドリングするコマンドが busybox を利用しているが、more, tail は、問題ない。 vi (テキストエディタ)は、全角文字にはまったく対応していないようだ。 私は使わないが、 vi を利用するなら、別途 vim などを入れる必要があるでしょう。

 また、その他のwary5 付属のコマンド cat, awk(gawk), head, grep, sed などでは、
locale 改変によって、○△□は正常に出力され、日本語(UTF-8)の扱いに問題は無いようです。

---------------------------------------------------------------
HP mini 2140 HD / Wary 5.1.1 (k2.6.30.5) + lang_pack_ja-1.1-w5.sfs
cygnus_odile
記事: 665
登録日時: 09/08/16(日) 14:30

Re: ja_JP.UTF-8 localeの改変 for ○△□の表示幅問題 (Wary-511-01j)

投稿記事 by cygnus_odile »

追記) wary-511 附属の e3 (console editor) は、locale 改変 によって正常に日本語ファイルが表示されものの、 カーソルの移動量が半角分固定で、入力・編集作業にはまったく使えない。
返信する