Skip to content

Instantly share code, notes, and snippets.

@z80oolong
Last active May 17, 2019 10:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save z80oolong/606a36ba7d1b456e60b30db17fdc8c54 to your computer and use it in GitHub Desktop.
Save z80oolong/606a36ba7d1b456e60b30db17fdc8c54 to your computer and use it in GitHub Desktop.
mutt 1.9.0 以降において East Asian Ambiguous Character を全角文字の幅で表示する

mutt 1.9.0 以降において East Asian Ambiguous Character を全角文字の幅で表示する

告知 (2019/05/17)

これまで、本稿の Gist にて公開しておりました mutt 1.9.0 以降において East Asian Ambiguous Character を全角文字の幅で表示する為の差分ファイルについて、差分ファイルの分量が多くなったことに伴い、今後は以下の Github のリポジトリにて muttEast Asian Ambiguous Character 対応差分ファイルを公開することと致します。

なお今後、本 Gist には本稿のみを残しておきますので、差分ファイルにつきましては上記 URL より取得して下さいますよう御願い致します。以上誠に勝手ながらどうか御了承下さいますよう御願い致します。

概要

mutt 1.9.0 以降において、 Unicode の規格における東アジア圏の各種文字のうち、いわゆる "◎" や "★" 等の記号文字及び罫線文字等、 East_Asian_Width 特性の値が A (Ambiguous) となる文字 (以下、 East Asian Ambiguous Character) が、日本語環境で文字幅を適切に扱うことが出来ない問題が十分に改善されない状況が発生しています。

差分ファイル mutt-x.y.z-fix.diff (ここに、 x.y.z は安定版のバージョン番号) 及び mutt-HEAD-xxxxxxxx-fix.diff (ここに、 xxxxxxxx は gitlab の commit のリビジョン番号) は、 "ttkzw's site 中の mutt patches" のページにて公開されている、滝澤隆史氏が作成された mutt 1.5.23 対応の East Asian Ambiguous Character の幅を漢字や全角カナ文字等と同じ幅 2 で表示する為の差分ファイル及び滝澤隆史氏及び吉田行範氏が作成された mutt 1.5.23 対応の各種機能拡張の為の差分ファイルを、 mutt 1.9.0 及び Gitlab 上の mutt に再適用及び修正し、一個の差分ファイルに纏めた物です。

なお、今回 mutt-x.y.z-fix.diff 及び mutt-HEAD-xxxxxxxx-fix.diff を作成するにあたって、安定版の mutt 及び Gitlab 版の mutt に再適用した差分ファイルは下記の通りです。

また、 Debian noroot 環境等、ハードリンクの作成が抑止されている環境の為に、システムコール link(2) の実行を回避する修正も同時に行っています。

差分ファイルの適用とソースコードのコンパイル

mutt 1.9.0 以降の安定版の場合

まず最初に、 mutt 1.9.0 以降の安定版のソースコードを取得して、適当なディレクトリに展開します。次に mutt-x.y.z-fix.diff を入手します。

そして、 mutt 1.9.0 以降の安定版のソースコードが置かれているディレクトリより、以下のようにして差分ファイル mutt-x.y.z-fix.diff を適用します。

 $ patch -p1 < /path/to/diff/mutt-x.y.z-fix.diff
 (ここに、/path/to/diff は、 mutt-x.y.z-fix.diff が置かれたディレクトリのパス名)

差分ファイルを適用後、安定版 mutt を、以下のようにして ./configure コマンドに --enable-cjk-ambiguous-width を指定してビルドしてインストールすると、安定版の mutt において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるようになります。

 $ ./configure --enable-cjk-ambiguous-width ... # (その他のオプションは適宜指定する。)
 $ make
 $ make install

また、 mutt において、システムコール link(2) の実行を回避するには、環境変数 CFLAGS にフラグ -DNO_USE_HARDLINK を追加してビルドします。

 $ /usr/bin/env CFLAGS="-DNO_USE_HARDLINK" ./configure --enable-cjk-ambiguous-width ... # (その他のオプションは適宜指定する。)
 $ make
 $ make install

なお、差分ファイル mutt-1.9.0-fix.diffmutt 1.9.1 から mutt 1.9.4 にも同様に適用可能です。 なお、以下に示す差分ファイルは、それぞれ右に示す mutt の安定版にも適用可能です。

GitLab 上の mutt の場合

GitLab 上の mutt の場合は、差分ファイル mutt-HEAD-xxxxxxxx-fix.diff を用いて、前述した mutt 1.9.0 以降の安定版と同様に、 GitLab 上の mutt のリポジトリを git clone コマンドを用いて入手し、以下のようにして差分ファイル mutt-HEAD-xxxxxxxx-fix.diff を適用します。

 $ patch -p1 < /path/to/diff/mutt-HEAD-xxxxxxxx-fix.diff
 (ここに、/path/to/diff は、 mutt-HEAD-xxxxxxxx-fix.diff が置かれたディレクトリのパス名)

差分ファイルを適用後のビルドの手法は前述とほぼ同様ですが、 GitLab 上の mutt では ./configure スクリプトが作成されていないため、 ./configure コマンドに代えて ./prepare コマンドを実行して、ソースコードのビルドを行います。

 $ ./prepare --enable-cjk-ambiguous-width ... # (その他のオプションは適宜指定する。)
 $ /usr/bin/env CFLAGS="-DNO_USE_HARDLINK" ./prepare --enable-cjk-ambiguous-width ... # (システムコール ```link(2)``` の実行を回避するには、環境変数 CFLAGS を指定する。)
 $ make
 $ make install

設定ファイル .muttrc のオプション指定

以上のようにコンパイルされた mutt において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるように設定するには、 mutt の設定ファイルである .muttrc に以下の設定を行う必要があります。

...
set cjk_width yes
...

その他各種の拡張機能に関する設定値に関しては、 "ttkzw's site 中の mutt patches" のページを参照して下さい。

謝辞

まず最初に、差分ファイル mutt-1.9.0-fix.diff を作成するにあたって、 mutt 1.5.23 対応の East Asian Ambiguous Character の幅を漢字や全角カナ文字等と同じ幅 2 で表示する為の差分ファイル及び mutt 1.5.23 対応の各種機能拡張の為の差分ファイルを作成された、滝澤隆史氏及び吉田行範氏に心より感謝致します。そして、 mutt の日本語化対応に尽力して下さった全ての方々に心より感謝致します。

最後に mutt の最初の開発者である Michael Elkins 氏及びその他の mutt の開発者の各氏を始め、 mutt に関する全てのことに関わった全ての方々に心より感謝致します。

追記及び御断り

2018/03/23 現在の追記

2018/02/23 現在の GitLab 上の mutt の HEAD の commit である e250c602 に対応した差分ファイル mutt-HEAD-e250c602-fix.diff を追加致しました。

これに伴い、 mutt-HEAD-338019b3-fix.diff を削除しました。どうか御了承下さい。

2018/10/08 現在の追記

mutt の最新の安定版である 1.10.1 を始め、その他の安定版の 1.10.0 及び 1.9.5 に対応した差分ファイル mutt-1.10.1-fix.diff, mutt-1.10.0-fix.diff, mutt-1.9.5-fix.diff を追加致しました。

また、 2018/10/08 現在の GitLab 上の mutt の HEAD の commit である f3e0742a に対応した差分ファイル mutt-HEAD-f3e0742a-fix.diff を追加致しました。

これに伴い、 mutt-HEAD-e250c602-fix.diff を削除しました。どうか御了承下さい。

2018/11/07 現在の追記

2018/11/07 現在の GitLab 上の mutt の HEAD の commit である c9ab8553 に対応した差分ファイル mutt-HEAD-c9ab8553-fix.diff を追加致しました。

これに伴い、 mutt-HEAD-f3e0742a-fix.diff を削除しました。どうか御了承下さい。

2019/01/24 現在の追記

2019/01/24 現在の GitLab 上の mutt の HEAD の commit である be40128c に対応した差分ファイル mutt-HEAD-be40128c-fix.diff を追加致しました。

また、 mutt の最新の安定版である 1.11.2 を始め、その他の安定版の 1.11.0 等に対応した差分ファイル mutt-1.11.0-fix.diff, mutt-1.11.2-fix.diff, mutt-1.9.5-fix.diff も併せて追加致しました。

これに伴い、 mutt-HEAD-c9ab8553-fix.diff を削除しました。どうか御了承下さい。

2019/03/07 現在の追記

2019/03/07 現在の GitLab 上の mutt の HEAD の commit である 2366e3d6 に対応した差分ファイル mutt-HEAD-2366e3d6-fix.diff を追加致しました。

これに伴い、 mutt-HEAD-be40128c-fix.diff を削除しました。どうか御了承下さい。

2019/05/15 現在の追記

2019/05/15 現在の GitLab 上の mutt の HEAD の commit である e8d057a9 に対応した差分ファイル mutt-HEAD-e8d057a9-fix.diff を追加致しました。

これに伴い、 mutt-HEAD-2366e3d6-fix.diff を削除しました。どうか御了承下さい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment