Library(日本語テキスト整列ライブラリ)は、文字列を均等割付で描画するためのライブラリです("Japanese"となっていますが、それ以外の言語でも使用できそうです)。均等割付で文字列を描画すると、文字列の幅が描画領域の幅より短いとき、文字列内の適当な箇所に隙間を入れることによって、描画領域の幅いっぱいに文字列が描画されます。文字列を描画するメソッドと言えばGraphics.DrawStringメソッドですが、Graphics.DrawStringメソッドの代わりに利用できるものと考えてよいでしょう。Libraryをインストールする手順は、第85号で紹介した方法とほぼ同じです。プロジェクトの参照に「JapaneseTextAlignment.dll」を追加する必要があることも前号と同じです。具体的な方法は、「「○○○.dllを参照に追加します」の意味は?」をご覧ください。Library\Library」というフォルダです。†はじめに断らせていただきますが、今号の内容も前号と同様に私独自の試行に基づく想像によって書かせていただいている部分が多々あります。よって、ここでの説明が正しいという保障はないということをご了承ください。Libraryで文字列を描画するには、Utility.DrawJapaneseStringメソッドを使います。StringFormat)メソッドに似ていますが、DrawJapaneseStringメソッドでは垂直方向の配置方法を指定できなかったり、右端で文字列を折り返して描画することができないなど違う点も多々あります。*1文字列を均等割付で描画する時、文字列内のどこに隙間を入れてどこに入れないかという規則をIAlignmentUnitInfoProviderインターフェイスを実装したクラスを使って変更することも出来ます。これを使えば、例えば、日本語の文字の間には均等な隙間を入れるが、英数字の間には隙間を入れないということもできます。LibraryにはIAlignmentUnitInfoProviderを実装したクラスとして、SimpleAlignmentUnitInfoProviderとSmartAlignmentUnitInfoProviderの2つのクラスが用意されています。Utility.DrawJapaneseStringメソッドをIAlignmentUnitInfoProviderを指定しないで呼び出したときは、SimpleAlignmentUnitInfoProviderが使われます。この2つのクラスの違いについては、後述します。†Utility.DrawJapaneseStringメソッドのパラメータであるTextAlignmentStyle構造体のStyleプロパティにより、整列スタイルを指定します。指定できる整列スタイルは以下の通りです。この中でJustifyとFullJustify以外はGraphics.DrawStringメソッドでも可能ですので、あまり使わないでしょう。文字列が左に配置されるように指定する。文字列が中央に配置されるように指定する。文字列が右に配置されるように指定する。両端に間を空けないで文字列が均等割付で配置されるように指定する。両端に間を空けて文字列が均等割付で配置されるように指定する。このような違い以外に、以下のような違いが確認できました。JustifyとFullJustifyでは改行文字で改行されませんが(スペース文字と同様に隙間は入る)、それ以外では改行されます。具体的にこれらにどのような違いがあるかを調べる例を以下に示します。ここではフォームにピクチャーボックス"PictureBox1"が配置されており、このPaintイベントハンドラとして"PictureBox1_Paint"が追加されているものとします。f.Dispose();}このコードを実行した結果、以下のように表示されます。上記の例では使いませんでしたが、TextAlignmentStyleInfo構造体のLeftMarginとRightMarginプロパティにより、左と右の余白を指定することも出来ます。†SimpleAlignmentUnitInfoProviderは最も単純なIAlignmentUnitInfoProviderで、全ての文字の間隔が同じになるように均等割付します。SmartAlignmentUnitInfoProviderでは、日本語の文字の間には間隔が空きますが、英数字の間には間隔が空かないように均等割付します。具体的には、以下のような箇所に間隔が空きます(ヘルプからの抜粋)。前の文字がCJK統合漢字。