ScintillaNET


ScintillaNET(→ http://scintillanet.codeplex.com/ )は、世界的に使われているScintillaを.NET用にwrapしたものだ。現在の最新のバージョンは2.2。


早速使ってみた。行番号表示、C#シンタックスハイライトともに問題ない。


しかし日本語を入力時に入力中の文字のフォントが小さくなる。またscintilla.Fontを変更しても表示されているフォントが反映されない。scintillaAPIを直接呼び出せば解決するのかも知れないが、そんなことはしたくない。きちんとwrapして欲しい。


あとscintilla.InsertTextを行なう場合、1行前に日本語文字が使ってあると挿入場所がおかしくなる。


たぶん内部的にはutf-16になっておらず、utf-8で扱われているのではないかと思う。文字列の検索・置換などでもこの問題がある。


私は、このコンポーネントは日本語環境で使い物になるとは思えなかった。ひとつかふたつぐらいのバグなら自力で直してパッチをcommitするつもりだったが、内部的にutf-8だったりするようなコンポーネントを修正しててもキリが無い。utf-16で作り直せと言いたくなる。


そんなわけで、私はScintillaNETは現段階で日本語環境で満足に使えるとは思えないのでお薦めしない。バージョンがあがればまたfixされるかも知れないがきちんと.NET FrameworkのTextBoxと互換性があるようにwrapしてくれないと非常に使いにくい。


例えばReadOnlyにするとTextプロパティに代入しても反映されない。ReadOnlyって普通ユーザーからのUIでの操作に対してread onlyにするのであって、誰が本当にTextまでread onlyにしろと…と言った感じで、使っているといろいろおかしいところに気づく。