週刊これは夢?!

それとも…。
すぐ忘れちゃうので備忘録用ブログ。
週1ペースで書くことを、ゆるい目標にしていました。

jman 文字化け 対策

2018-05-28 | 電脳
2014年2月23日に次のように書いた。(追記あり)

□不具合
jman で日本語マニュアルのないマニュアルを読もうとすると、左上の "NAME" が "1mNAME0m" のように表示される。
FreeBSD 9.2-RELEASE-p3

□原因
おそらく、太字にするなどの整形処理がうまくないのだろう。
FreeBSD 9ぐらいからの問題らしく、grotty の処理が関係するらしい。

ということで、man grotty を見る。

   デフォルトでは、テキスト属性 (ボールド、イタリック、色) を変えるために、
   grotty は SGR エスケープシーケンスを出力します。(略)
   昔の動作に戻すには -c を使用してください。(略)
   同じ効果を得るには、環境変数 GROFF_NO_SGR を設定するか、(略)

つまり、整形にSGRを使っているので、不具合が生じている。
SGRを使わず、以前の形式で出力するようにすれば良い。
manにはlessにオプションをつけるなどの例があったが、私の環境では解決できず。

□対策
alias を利用し man を実行する時だけ、GROFF_NO_SGR=1 を設定することにした。
また、man に w3mman を利用しているので、あわせたものを、.zshrc に記述。

   alias jman="GROFF_NO_SGR=1 W3MMAN_MAN=jman w3mman"


〔追記(2018/05/28)〕
現在、jman では上記の不具合がなくなり、w3mman でのみ不具合が残った。
またw3mmanを使っていると発生する不具合を解消できなかった。

□不具合1:manのキャッシュの文字化け
過去に見た man を再度見ると、文字化けすることがある。
たとえば/usr/share/man/man1/man.1.gz であれば /usr/share/man/cat1/man.1.gz ができる。
catフォルダのファイルを削除すれば文字化けしなくなる。
w3mmanで見るために、 GROFF_NO_SGR=1 をしているが、これが原因かもしれない。
何度か原因を特定しようと試みたが、再現できなかった。

w3mman ではなく、jman であれば GROFF_NO_SGR を指定しなくても日本語は文字化けしない。

□不具合2:w3mman のプチ文字化けがなおらない
w3mmanで見ると「名称」や「書式」「解説」といった太字の部分が、下のように微妙に文字化けする。
太字が途中で普通の文字になったりもしている。jman では文字化けしない。

jman → w3mman
名称 → 名松
書式 → 十饉式
解説 → 臆鮴説

色々環境変数などを見直してみたが、これも原因を特定できず。


結局、man でオリジナル(英語、オプション"-o"を利用)、 jman で日本語マニュアルと使い分けることにした。
w3mmanのリンク機能はとても便利だが、PAGER に w3m を使うだけにして、w3mman の使用はあきらめた。
コメント    この記事についてブログを書く
« 2019年のgoogleカレンダー用... | トップ | FreeBSD ports : Libressl 2... »

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

電脳」カテゴリの最新記事