[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mule-ja-2009:09578] East Asian Ambiguous (Re: Re: (string-width "×"))



岩室と申します。

At Mon, 11 May 2009 22:04:28 +0900,
Kenichi Handa wrote:
> 端末での East Asian Ambiguous (A) 文字
> (<http://www.unicode.org/reports/tr11/tr11-16.html>) の扱いは
> 悩ましいところです。 Emacs からは端末がどんなフォントを使って
> いるのか分からないので。

脱線する上に、このMLでやるのが適切とは言えないかもしれませんが、これ、
何とかしたいと強く思ってます。現状だと、アプリ側はEmacs, vim, w3m, 
screen等、ターミナルエミュレータ側はxterm, mlterm, gnome-terminal,
putty, mintty等、ひたすら個別対応状態です……。

上記の資料には、推奨として、以下のような記載があります。(日本語は超訳。
間違ってたら突っ込んでください)

> 5 Recommendations
> 5 推奨
<略>
> When processing or displaying data
> データを処理したり表示したりするとき:
<略>
> Ambiguous characters behave like wide or narrow characters depending
> on the context (language tag, script identification, associated
> font, source of data, or explicit markup; all can provide the
> context). If the context cannot be established reliably, they should
> be treated as narrow characters by default.
> Ambiguous charactersの振舞いは、コンテキスト(言語タグ、スクリプト識別
> 子(?)、フォント依存、データ生成元、あるいは明示的なマークアップ、といっ
> たものは全てコンテキストを提供します)によって、wide文字とnarrow文字の
> どちらかが決まります。もしコンテキストを完全に決めることができないな
> らば、デフォルトではnarrow文字として扱わなければなりません。

個人的な案としては、以下のような方法がよいかな、と思うのですが、如何で
しょうか?

・アプリ側: 新規のlocaleカテゴリ(LC_CONTEXTとか)を定義し、それによって
  文字幅の判断を切り換える。
・端末側: 以下のようなエスケープシーケンス(?)を規定する。
  - 端末の能力を取得 (特定のコンテキストのみ使用可、ユーザによる明示的
    な設定で変更可、エスケープシーケンスで変更可)
  - 現在のコンテキストを取得
  - コンテキストを指定
・コンテキストがCJKVのとき、文字幅は2、それ以外のときは1

こういうのが標準化されると一番良いのですが……。(どう動けばいいのか、
どこで議論すればいいのか、さっぱり)
-- 
IWAMURO Motonori <http://vmi.jp/>