MESCIUS MultiRow for Windows Forms 12.0J
環境依存文字を表示できない

MultiRowではGDI+互換モードによる文字描画を行う場合、環境依存文字が正しく描画されません。この現象は、当該文字を.NET Frameworkより提供されるGraphicsクラスのDrawStringメソッド呼び出しにて描画した場合と同様です。

ここで定義する環境依存文字とは次のものを指します。

MultiRowはGDI+互換モードによる文字描画を行う場合には、このGraphicsクラスの機能を用いて非編集セルへの文字列描画などを行っていますので、描画される結果はすべて.NET Frameworkの仕様に依存します。
環境依存文字の表示
.NET Framework 2.0以降では新たにSystem.Windows.Forms.TextRendererクラスが追加されており、GraphicsクラスがGDI+ベースの文字列描画を行うのに対し、TextRendererクラスはGDIベースの文字列描画を行います。このTextRendererクラスメンバであるDrawTextメソッド呼び出しを行った場合、上記の環境依存文字は正しく描画されます。詳細についてはMSDNライブラリをご覧ください。

MultiRowはCellStyle.UseCompatibleTextRenderingプロパティにFalseを設定した場合、GDIベースで文字列描画を行います。この場合は以下のように正しく描画されます。
GDI+の詳細は、「GDI+互換モード」を参照してください。
まとめ
MultiRowにて環境依存文字を扱う場合、GDIベースの描画モードによって対応できるのはセルの文字列描画に関する問題だけです。それ以外の機能(入力、データベース接続、印刷など)については注意すべき点があります。
新JIS漢字(JIS X 0213:2004、JIS2004)のサロゲート文字、Unicode6.0、IVSの詳細については、予めMSDNライブラリなどの各種参考文献をご覧いただくことをお勧めします。また、アプリケーション開発および運用の際には十分な注意を払い、入念な動作検証を行う必要があります。
  • テキスト型セルやマスク型セルで入力文字数を制御する場合、環境依存文字は2文字として扱われます。
  • 組み込みのセルバリデータの文字列の長さの検証(TextLengthValidator)ではLengthUnitプロパティの設定値に応じて文字数およびバイト数がカウントされます。
  • GcTextBoxCellおよびGcComboBoxCellではMaxLengthUnitプロパティの設定値に応じて文字数およびバイト数がカウントされます。
  • サロゲート ペア文字自体の入力制御はInputManCellでのみ可能です。(製品側からUnicode6.0で追加された絵文字やIVSを含む文字を制御する機能はありません。)
  • 環境依存文字の編集セル内でのキー操作(カーソルキー、Backspaceキー、Deleteキー)は標準のTextBoxコントロール等と同様です。
  • 編集中セルでは環境依存文字が正しく描画されます。MultiRowでは、編集コントロールにIEditingControlインタフェースとSystem.Windows.Forms.TextBoxクラスを継承したコントロールを利用しており、先述のような.NET Frameworkの仕様に依存しません。
  • 環境依存文字を含むデータベースとの接続を行う場合は、予めご利用のデータベースにおける当該文字の扱いに関して確認してください。MultiRowではデータベース側での問題(制限事項など)に対応することはできません。
  • セルノートではCellNoteStyle.UseCompatibleTextRenderingプロパティをサポートしています。このプロパティにFalseを設定した場合、セル型と同じようにGDIベースで文字列描画を行います。
   
関連トピック

 

 


© MESCIUS inc. All rights reserved.