LoginSignup
2
2

More than 5 years have passed since last update.

FreeBSDのurxvtで□とかの文字幅が変なのをどうにかする

Last updated at Posted at 2015-03-03

FreeBSDでurxvt使ってるけど、全角の記号(□■○●◇◆など)が半角の文字幅で表示されてキモかった。
いわゆる East Asian Ambiguous Character Width とか略して EAW とか言われる問題で、噂によるとurxvt的にはlocaleが示す幅を尊重するからurxvt側でそれを勝手に2バイト幅に直して表示とかはしないぜ!って事になってるらしい。

まあ経緯とか細かい実装の話はさておき、localeの側が全角記号を2バイト幅ですよって言うようにしてやればよろしいみたい。

FreeBSDのロケールの設定は、/usr/share/locale/ の下に保存されてて、ここの ./ロケール名/LC_CTYPE が今回直したい部分。
こいつはバイナリファイルで、 /usr/src/share/mklocale/ の下にある .src ファイルを mklocale コマンドでコンパイルした物がそれにあたるっぽい。

/usr/share/locale/ja_JP.UTF-8/LC_CTYPE/usr/share/locale/UTF-8/LC_CTYPE にシンボリックリンクを貼ってるので、今回はそうするのをやめて ja_JP.UTF-8 専用に LC_CTYPE を作るように直してみる。

まずは src ファイルを書かないといけないんだけど、書くのがめんどくさい。探してみたらmutt-jaのリポジトリに良さげなのが置いてあったのでそいつを使う。

$ wget http://sourceforge.jp/projects/mutt-j/scm/svn/blobs/146/mutt-ja-doc/trunk/samples/UTF-9.src?export=raw -O ja_JP.UTF-8.src

こいつを /usr/src/share/mklocale/ にコピーする。

$ sudo cp ja_JP.UTF-8.src /usr/src/share/mklocale/

んであとは /usr/src/share/mklocale/Makefile を編集。


--- share/mklocale/Makefile     (リビジョン 275347)
+++ share/mklocale/Makefile     (作業コピー)
@@ -8,6 +8,7 @@
                hi_IN.ISCII-DEV \
                hy_AM.ARMSCII-8 \
                ja_JP.SJIS \
+           ja_JP.UTF-8 \
                ja_JP.eucJP \
                kk_KZ.PT154 \
                ko_KR.CP949 \
@@ -82,7 +83,7 @@
                en_AU en_CA en_GB en_IE en_NZ en_US es_ES et_EE eu_ES fi_FI \
                fr_BE \
                fr_CA fr_CH fr_FR he_IL hr_HR hu_HU hy_AM is_IS it_CH it_IT \
-               ja_JP kk_KZ ko_KR lt_LT lv_LV mn_MN \
+               kk_KZ ko_KR lt_LT lv_LV mn_MN \
                nb_NO nl_BE nl_NL nn_NO no_NO pl_PL pt_BR pt_PT \
                ro_RO ru_RU sk_SK sl_SI sr_YU sv_SE tr_TR uk_UA zh_CN zh_HK \
                zh_TW

あとはビルドするだけ。

$ cd /usr/src/share/mklocale/
$ sudo make
$ sudo make install

うまくいくと、/usr/src/share/mklocale/LC_CTYPE がシンボリックリンクじゃなくなって実ファイルになってる。

で、あとは X の再起動とかすれば2バイト幅で綺麗に表示されるようになってるはず。やったね!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2