中本です。

On Tue, 03 Oct 2006 23:21:41 +0900
Yoshiyuki Masutomi <[EMAIL PROTECTED]> wrote:

> curvirgoです。
> 
> Yoshiyuki Masutomi wrote:
> > convertIntoFullWidth_Impl()で前もって2byte文字に変換しておけばと思
> > い、まずXPで1byte文字の時の振り仮名と2byte文字の時の振り仮名を確認し
> > てみた所、初めに1byte文字で入力したときは振り仮名も1byte文字で表示さ
> > れるのに対し、続けて2byte文字を別のセルに入れると、先ほど表示されて
> > いた1byte文字の振り仮名も後から入力した2byte文字の振り仮名に併せて
> > 2byte文字で表示されてしまいました。
> もう少し手直ししてみました。
> 自分の所のXPで気になる点は一つ、
> 2byteの「ABC」を入力すると、「ABC」ではなく「アbc」と表示され
> てしまう点です。検証用のWindows98SE(クリーンインストール直後の状態)で
> は期待どおりの結果が表示されるのでIME側(若しくは学習結果やバージョン
> 間)の違いによるものと思われますが、ほぼいい感じにはなったと思います。
> ただし、1byte→2byte変換してから振り仮名を取得するようにした為、現在の
> Linux版とは結果が異なるのでそちらもWindows版に近い結果になるように
> 1byte→2byte変換してから振り仮名を取得する様に変更するか決めなければな
> らないと思います。

与えられた文字列に1byte文字が含まれている場合、

1. 1byte文字列をデリミタとして、文字列を複数の2byte文字列と1byte文字列
に分解
2. 2byte文字列にのみ逆変換
3. 逆変換した2byte文字列と1byte文字列を結合

というような方法で逆変換するというのはどうでしょうか?
例えば、「私の名a前bcd中本efg崇志」という文字列の場合、

1. 私の名, a, 前, bcd, 中本, efg, 崇志
2. ワタシノナ, a, ゼン, bcd, ナカモト, efg, タカシ
3. ワタシノナaゼンbcdナカモトefgタカシ

という感じで。これならば、変換前に全角だった英数字と半角だった英数字に
区別が付けられると思います。

-- 
 中本 崇志 ( Takashi Nakamoto )
 E-Mail  : [EMAIL PROTECTED], [EMAIL PROTECTED]
 Homepage: http://bd.tank.jp/
 blog    : http://bd.tank.jp/diary

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

メールによる返信