テキストの品質

StiTextコンポーネントとそれを継承したコンポーネントは、TextQualityプロパティを持ちます。このプロパティは、テキストの品質を選択/表示することができます。このプロパティには、次の3つの値のいずれかが設定されます。

標準

 Typographic

 Wysiwyg

StandardモードとTypographicモードでは、GDI+システムライブラリを使ってテキスト表示が行われます。これらのモードの違いは、Typographicモードでは、テキストがアンチエイリアス付きで出力され、見た目は良いのですが、レンダリングが遅いことです。Wysiwygモードでは、GDIシステムライブラリを使ってテキストが表示されます。このモードでは、テキストは他の2つのモードほど美しく表示されないかもしれません。

GDI +が存在し、より美しく、使いやすいのに、なぜGDIが必要なのでしょうか?この質問に答えるために、WYSIWYGの定義に目を向けてみましょう。

WYSIWYG(What You See Is What You Getの頭文字)とは、編集中のコンテンツが最終出力と非常によく似ている編集方法のことで、「What You See Is What You Get」の略。レポートツールでいえば、テンプレートを編集するときと、紙に印刷した完成レポートを見るときとで、レポートの見た目が同じであることを意味します。しかし、実際にはそう簡単にはいきません。 多くの方法は、モニターによってテキストの表示方法が異なり、プリンターによって印刷方法が異なることがあります。これは特に大きなテキストで顕著です。プレビューで異なるズームモードで表示した場合と印刷した場合では、改行の位置が異なることがあります。この現象は、さまざまな理由で発生します。 GDI + システムライブラリでは、これらの問題のほとんどは解決されましたが、すべてではありませんし、まだ不正確な表示が発生することもあります。残りの問題を解決するためには、テキスト出力の完全な制御が必要です。GDI +はそのような制御を提供しません。そこで、Wysiwygモードが追加されました。このモードでは、GDIを使ってテキストが出力されます。GDIメソッドでは、テキストの各文字の出力を制御することができます。これによって、ほとんどすべての問題を解消することができます。このように、Wysiwygモードは、他の2つの方法ほどきれいではありませんが、より正確にテキストを表示します。

この2つのモードにはもう一つ違いがあり、それぞれのモードでのテキストの表示方法が異なるため、行の長さの測り方が異なります。例えば、「Test string」というテキストを含む3つのテキストボックスがあるとします。最初のテキストボックスのTextQualityをStandardに、2番目のテキストボックスをTypographicに、3番目のテキストボックスをWysiwygに設定します。すべてのテキストボックスのAutoWidthプロパティをtrueに設定します。レポートのデザイン・モードでは、次のようになります。

目視では、これらの線の違いは見えません。しかし、レンダリング後、テキストボックスの幅はテキストの幅に応じて計算され、すぐにモードの違いを見ることができます。

上の図では、フォントの種類や大きさが異なると、まったく異なる結果が得られることがよくわかります。このことは、例えばCross-Tabコンポーネントを使用する場合、考慮しなければなりません。このコンポーネントでは、表の列の幅がテキストに応じてフィットし、異なるモードでは、表の幅を変更することができます。


上の図では、フォントの種類とサイズが異なると、全く異なる結果が得られることが明確に示されています。あなたはコンポーネントCrossTabを使用しようとしている場合、これは、例えば、考慮する必要があります:テキストに合わせてテーブルの列のこのコンポーネントの幅、および別のモードでは、テーブルの幅はかなり変更することができます。

また、実践でわかることですが、これらのアプリケーションのWYSIWYGは正しく動作していないことが多いです。例えば、EXCELで編集モードで作成したレポートと印刷プレビューで作成したレポートでは、見た目が異なる場合があります。編集モードで50%から200%にページスケールを変更するために開始されます場合は、さらに多くの違いが表示されます:100%のスケールテキストは50%でセルの端に到達しなかった、そして200%で最後の単語が次の行に転送することができるセルに配置することができる。別の例として、複数行のテキストがあります。異なるスケールで常に正しい計算行間ではなく、セル内のテキストの高さが異なる場合があります。セル内の1つのレベルでは、すべてのテキスト文字列を収まらない、すなわち、テキストを切り捨てることができます。別のレベルでは、同じテキストを圧縮することができ、セルの底部は空白のままになります。でも、Excelのチームは、”行の高さの自動調整 “は、特に小さなフォントで、予測できない結果を与える可能性があります。

そのため、MS-Officeでレポートを書き出す際には、以下に説明するいくつかのテクニックを使用することをお勧めします。推奨事項は、レポート作成の一般的なガイドラインと各エクスポートの推奨事項の2つに分けることができます。

MS-Officeでのレポートのエクスポートに関する一般的な推奨事項は、レポート・テンプレートを設計することです。

可能な限り、行末とテキストボックスの端の間隔を空けるようにすれば、問題は発生しないはずです。

前の段落から次のようになります。この場合のテキストボックスのサイズは隙間なく計算されるため、不必要にプロパティAutoWidthを使用しないでください。

TextQualityというテキストの値を選んで、最も長いテキストを受け取る行にすると、エクスポート後のテキストが正常に表示される可能性が高まります。

MS-Wordでのレポート出力に関する推奨事項

MS-Wordにエクスポートする場合、次のトリックを使用します:テキストの各行ごとにフォントをインストールするシール。フォントの密度の値は twips の単位で測定され、静的プロパティ StiOptions.Export.Rtf.SpaceBetweenCharacters (StiOptions.Export.Word2007.SpaceBetweenCharacters) に格納されています。デフォルトでは、このプロパティは-2に設定されています。 見た目には、この量のテキスト圧縮は目立ちませんが、ほとんどの場合、これで十分です。必要であれば、この値を変更することができます。このプロパティのゼロ値は通常のフォントに対応し、正の値は疎なフォントに対応します。

MS-Excelへのレポート出力に関する推奨事項

MS-Excelにエクスポートする場合は、次のトリックを使用する:すべての問題のテキストボックスの右/またはテキストボックスの左境界を設定することをお勧めします。Excelのテーブルセルは、ボーダーを持っていないので、ボーダーはgarantiroovannyギャップとしてテキストボックスをレンダリングするときにのみ考慮されます。ボーダーテキストボックスは、マージンを設定し、100分の1インチで指定された値です。ほとんどの場合、右の境界線は100分の1インチ(プロパティ0, 1, 0, 0に書かれている)に等しいと設定すれば十分です。