gnome-terminal上で、"○"など一部の全角文字が重なって表示される

Bug #191250 reported by Mitsuya Shibata
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Ubuntu Japanese Kaizen Project
Triaged
Medium
Unassigned

Bug Description

これは、以下のフォーラムの報告に基づくものです。
「gterm で一部の全角文字の右隣の文字が半分重なる」
http://forum.ubuntulinux.jp/viewtopic.php?pid=8512

重なるのはUnicodeでEast Asian Ambiguousと指定されている文字のようです。これは、ロケールによって幅が変わるような文字に指定されます。例えば白丸(U+25CB/○)は日本語ロケールでは全角ですが、英語ロケールでは半角として扱われる、らしい?

で、それぞれの文字の幅は、wcwidth()にワイド文字を渡せば/usr/share/i18n/charmaps/UTF-8.gzを参考にその幅を返してくれるようなのですが、UTF-8.gzでは基本的にAmbiguousはすべて半角であると指定されている(正確には何も指定されていないためにデフォルトの値である1が返る)ので、これらの文字は半角であるとして描画されてしまう、みたい?
参考:http://lists.debian.or.jp/debian-devel/200703/msg00038.html

これを回避するためにはwcwidth()がAmbiguousを扱えるように修正するとか(→影響範囲が広大)、端末やnanoが描画に使っているncursesのwcwidth()を独自のものにするとか(mltermやvi、w3mはこの方法?)を使うしかない、ような?

確証が持てないのでとってもあやふやな話になってしまいましたが、なんとかなるとうれしいです。ただし、一般ユーザにはほとんど関係ない話ですので、急ぐ必要はないかもしれません。

Tags: i18n
Revision history for this message
Fumihito YOSHIDA (hito) wrote :

http://logs.ubuntu-eu.org/freenode/2008/02/12/%23ubuntu-jp.html

gnome-terminalなど、vteを利用した環境ではVTE_CJK_WIDTH環境変数に1を与えることで(VTE_CJK_WIDTH=1)、この問題を回避することができます。

(gnome-terminalからgnome-terminalを起動する場合、何もしないと暗黙で既存のgnome-terminalの設定が転写されてしまうため、$ VTE_CJK_WIDTH=1; gnome-terminal --disable-factoryとして起動しなくてはいけません。ランチャなど、gnome-terminal外から起動する場合は$ VTE_CJK_WIDTH=1; gnome-terminal で問題ありません)

ただし、VTE_CJK_WIDTHには副作用があり、複数のアプリケーションで正常に描画ができなくなることから(w3m等のインテリジェントな罫線レンダリングを行うもので顕著・かつ、telnetなどで接続するルータなどのGUI設定画面でも表示が破綻します)、デフォルト設定にはできません

ランチャなどにgnome-terminalをもう一つ登録し、そちらは$ VTE_CJK_WIDTH=1; gnome-terminalで起動する、という手でJapanese Teamリポジトリに登録する手もありますが、現状では直しません。

参照:http://www.jp.redhat.com/support/errata/RHBA/RHBA-2007-0219J.html

Revision history for this message
Fumihito YOSHIDA (hito) wrote :

リクエストが多数ある場合は何らかの対処を考える可能性がありますが、現状ではディストリビューションレベルでの対処は行いません。

Changed in ubuntu-jp-improvement:
status: New → Won't Fix
Revision history for this message
Fumihito YOSHIDA (hito) wrote :

直すためのラッパを作るのでreopenします。

Changed in ubuntu-jp-improvement:
status: Won't Fix → In Progress
Revision history for this message
Fumihito YOSHIDA (hito) wrote :

memo:

VTE_CJK_WIDTH=auto すると、ロケールに応じて1(width)/0(narrow)を自動切り替えしてくれる。

gnome-terminal-cjkfix とかいうパッケージを作って、/etc/profile.d/以下に

VTE_CJK_WIDTH.csh:
setenv VTE_CJK_WIDTH auto

VTE_CJK_WIDTH.sh:
export VTE_CJK_WIDTH=auto

てのを配置する、が比較的安定な実装。

Fumihito YOSHIDA (hito)
Changed in ubuntu-jp-improvement:
importance: Undecided → Medium
Fumihito YOSHIDA (hito)
tags: added: i18n
Revision history for this message
Nobuto Murata (nobuto) wrote :

Nattyで、VTE_CJK_WIDTH=auto を設定して試してみましたが、重なりは解消されません。
VTE_CJK_WIDTH=1 を設定した場合は重なりが解消されますが、以下の問題がありました。

 1. "○△□" と入力
 2. Backspace を三回入力
 3. "○△" の表示が残ってしまう

Revision history for this message
Nobuto Murata (nobuto) wrote :

修正のための作業が行われていないので、一旦Triagedに戻します。作業を開始する場合はAssigned toの項目を変更してからIn Progressとしてください。

Changed in ubuntu-jp-improvement:
status: In Progress → Triaged
Revision history for this message
Kenichi Ito (ken-i54k) wrote :

gnome-terminal version 3.14?から
[編集]-[プロファイルの設定]-[互換性]タブに[曖昧幅の文字]が追加され、
ここを[全角]にすると重なりが解消されました

参照: http://gihyo.jp/admin/serial/01/ubuntu-recipe/0369
          http://syusui.tumblr.com/post/109057529483/gnome

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.