vine-users ML アーカイブ



[vine-users:079888] Re: [ - ](ハイフン) について

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:079888] Re: [ - ](ハイフン) について
  • Date: Sat, 26 Dec 2009 17:17:25 +0900 (JST)
長南です。

もうわたし以外、この問題に興味を持っている方はいないようですが、
もう一度だけ続けます。

UTF 環境の man ページでマイナス/ハイフンの表示がおかしくなるのは、
有名な問題だったんですね。「groff man hyphen」を Google で調べたら、
いっぱい出てきました。

わたし流に乱暴にまとめてしまうと、こういうことのようです。

・ '-' 文字は ascii では 0x2d である。これは、マイナスにも
   ハイフンにもダッシュにも使われて、非常に曖昧である。

・ ユニコードでは、マイナス、ハイフン、ダッシュに相当すする文字が
   いくつもある。

・ そのため、UTF 環境で man のソースを groff (nroff) で整形するとき、
   マイナス/ハイフン/ダッシュの処理は頭の痛い問題になっている。

   Vine 5.0 では、UTF 環境で英語の man ページを整形するとき、
   groff (nroff) はデフォルトでは、'-' (つまり、裸の - ) を
   ハイフン (UTF-16: 0x2010、UTF-8: 0xE2 0x80 0x90) に変換し
   (ソースに裸の - を書くのは、お行儀が悪いらしいのですが)、
   '\-' (バックスラッシュでエスケープされた - ) をマイナス
   (UTF-16: 0x2212、UTF-8: 0xE2 0x88 0x92) に変換している。

・ その結果、ターミナル・エミュレータによっては、マイナス/ハイフン
   の表示がおかしいことになる。

・ 見かけがおかしいという以上に問題なのは、「-a」といったマイナスの
   入った文字列で man ページの検索ができないことである。キーボード
   から打ち込むマイナスは 0x2d なので。

・ man ページでマイナス入りの文字列を検索できるようにするため、
   たとえば debian では、man ページのソースに出てくる裸の - や、
   エスケープされた \- を UTF 環境でも ASCII-compatible HYPHEN-MINUS
   (UTF-8: 0x2D) にしている。

   Vine 5.0 でも、日本語 man ページについてはそうなっているようです。

対処法としては、わたしが前のメールに書いた方法でも、一応用が足りると
思います。Google で調べたところでは、次のようなやり方もあるそうです。
/usr/share/groff/1.18.1/tmac/troffrc に以下を追加します。

  .if '\*[.T]'utf8' \{\
  .    char - \N'45'
  .    char \- \N'45'
  .    char ' \N'39'
  .\}

わたしとしては、「. char \' \N'39'」もカッコの中に入れておいた方が
よいのではないかと思います。なお、上の指定は /usr/share/groff/
site-tmac の man.local と mdoc.local に記述してもよさそうです。
完璧な解決法ではないらしいですけれど。

-- 
長南洋一