点字ディスプレイでカーソル出力がずれる
日本語点訳エンジンで文字数の変化を管理するための「ポジションマッピング」処理の実装を、jpmain とは別に、下記のブランチで始めました。
lp:~nishimotz/nvdajp/jpposmap
ただし、まだメソッドの仕様を決めただけで、中身は実装していません。
方針としては、カナ表記から点字パターンへの変換(H1)と、漢字からカナ表記への変換(H2)の、それぞれポジションマッピングを実装し、 2つのマッピングを組み合わせて最終的な出力のマッピングを得たいと考えています。 それぞれの段階でのデバッグを容易にすることが狙いです。 ただ、外国語引用符や情報処理点字のサポートなどで、H1 と H2 の処理の分担が未検討の部分もあります。
日本語点訳エンジンにおけるポジションマッピングの実装に着手しました。
lp:~nishimotz/nvdajp/jpposmap
rev 4494 の作業で、出力文字列の各キャラクタに対応する入力文字列中の位置を表すinbufをH1とH2のそれぞれの段階の変換について harness.py に記述できるようにしました。 また、2つの段階の inbuf を1つの inbuf に統合する処理、入力文字列の各キャラクタに対応する出力文字列中の位置を表す outbuf の生成、カーソル位置 cursorPos の変換など、liblouis の translate に対応する処理を実装しました。
メモ帳と KGS BM46 を使って '11111' や 'aaaaaaaa' のような数字とアルファベットだけの行が書かれているときだけ、カーソル位置もタッチカーソルも正しく動きます。
ポジションマッピングの処理そのものはまだダミー実装なので、数字とアルファベットの行以外では正しく動きません。
スナップショット jppos130304 https://dl.dropbox.com/u/62564469/nvda_snapshot_jppos130304.exe
lp:~nishimotz/nvdajp/jpposmap 4509 までの作業で、タッチカーソル対応の基本は完成したので、スナップショットを作りました。 動作確認をしていただければ幸いです。
漢字からカナに変換するときの文字とセルの対応付けは正確ではない場合があります。
正解を得る手段がないこともあります。均等割り付けのような方法を工夫できるかも知れません。
また、マッピングの仕様がわからないところがあるので、1文字ずらしたほうが使いやすい、といったことがあるかも知れません。
なお、このスナップショットは jpmain の派生ブランチなので、jpime でやっている文字入力サポートの改良はマージされていません。
jppos130304 からの変更として、マスアケのマッピング先を直後の文字ではなく直前の文字にする、漢字とカナの対応付けを均等割り付けに変更する、という修正をしました。
jpposmap 4513 を jpmain 4543 にマージしました。
以下のご指摘をいただいています。
本家の実装で、点訳される前の文字数に基づいてカーソルが制御されているためと思います。
点訳エンジンの日本語化と、カーソル位置の制御をうまく連携させる必要があります。