このトピックでは、WPF の主な文字体裁機能について説明します。 これらの機能には、テキストレンダリングの品質とパフォーマンスの向上、OpenType タイポグラフィのサポート、強化された国際テキスト、拡張フォントのサポート、および新しいテキスト アプリケーション プログラミング インターフェイス (API) が含まれます。
テキストの品質とパフォーマンスの向上
WPF のテキストは Microsoft ClearType を使用してレンダリングされ、テキストのわかりやすさと読みやすさが向上します。 ClearType は、ノート PC 画面、ポケット PC 画面、フラット パネル モニターなど、既存の LCD (液晶ディスプレイ) 上のテキストの読みやすさを向上させる、Microsoft によって開発されたソフトウェア テクノロジです。 ClearType はサブピクセル レンダリングを使用します。これにより、ピクセルの小数部に文字を配置することで、テキストを真の図形に忠実に表示できます。 余分な解像度は、テキスト表示の小さな詳細のシャープネスを高め、長い期間にわたってはるかに読みやすくします。 WPF での ClearType のもう 1 つの改善点は、y 方向のアンチエイリアシングです。これは、テキスト文字の浅い曲線の上下を滑らかにします。 ClearType 機能の詳細については、「 ClearType の概要」を参照してください。
ClearType y 方向アンチエイリアシングを含むテキスト
コンピューターが必要なハードウェアの最小レベルを満たしている場合、WPF ではテキスト レンダリング パイプライン全体をハードウェアアクセラレータにすることができます。 ハードウェアを使用して実行できないレンダリングは、ソフトウェア レンダリングにフォールバックします。 ハードウェア アクセラレーションは、個々のグリフの格納、グリフの実行へのグリフの合成、効果の適用、表示される最終的な出力への ClearType ブレンド アルゴリズムの適用など、テキスト レンダリング パイプラインのすべてのフェーズに影響します。 ハードウェア アクセラレーションの詳細については、「 グラフィックス レンダリング層」を参照してください。
さらに、アニメーション化されたテキストは、文字またはグリフに関係なく、WPF で有効になっているグラフィックス ハードウェア機能を最大限に活用します。 これにより、スムーズなテキスト アニメーションが作成されます。
豊富な文字体裁
OpenType フォント形式は、TrueType® フォント形式の拡張です。 OpenType フォント形式は、Microsoft と Adobe が共同で開発し、高度な文字体裁機能の豊富な品揃えを提供します。 Typography オブジェクトは、スタイル代替やスワッシュなど、OpenType フォントの高度な機能の多くを公開します。 Windows SDK には、Pericles フォントや Pescadero フォントなどの豊富な機能を備えた OpenType フォントのサンプル セットが用意されています。 詳細については、「サンプル OpenType Font Pack」を参照してください。
Pericles OpenType フォントには、標準のグリフ セットのスタイル代替を提供する追加のグリフが含まれています。 次のテキストには、様式の異なる文字が表示されます。
スワッシュは、書道に関連する複雑な装飾を使用する装飾的なグリフです。 次のテキストには、Pescadero フォントの標準グリフと斜めグリフが表示されます。
OpenType 機能の詳細については、「 OpenType フォント機能」を参照してください。
拡張された国際テキスト サポート
WPF は、次の機能を提供することで、強化された国際テキスト サポートを提供します。
アダプティブ測定を使用して、すべての文字システムで自動行間設定を行います。
国際テキストの幅広いサポート。 詳細については、「 WPF のグローバリゼーション」を参照してください。
言語ガイド付きの改行、ハイフネーション、および正当な理由。
拡張フォントのサポート
WPF には、次の機能が用意されており、フォントのサポートが強化されています。
すべてのテキストの Unicode。 フォントの動作と選択に文字セットやコード ページが不要になりました。
システム ロケールなど、グローバル設定に依存しないフォント動作。
FontWeightを定義するために、FontStretch、FontStyle、およびFontFamilyの型を分離します。 これにより、フォント ファミリを定義するために斜体と太字のブール値の組み合わせを使用する Win32 プログラミングよりも柔軟性が高くなります。
フォント名に関係なく処理される書き込み方向 (水平方向と垂直方向)。
複合フォント テクノロジを使用した移植可能な XML ファイルでのフォント リンクとフォント フォールバック。 複合フォントを使用すると、フルレンジの多言語フォントを構築できます。 複合フォントには、不足しているグリフが表示されないようにするメカニズムも用意されています。 詳細については、 FontFamily クラスの解説を参照してください。
単一言語フォントのグループを使用して複合フォントから構築された国際フォント。 これにより、複数の言語のフォントを開発するときのリソース コストが節約されます。
ドキュメントに埋め込まれた複合フォントにより、ドキュメントの移植性が提供されます。 詳細については、 FontFamily クラスの解説を参照してください。
新しいテキスト アプリケーション プログラミング インターフェイス (API)
WPF には、開発者がアプリケーションにテキストを含めるときに使用できるテキスト API がいくつか用意されています。 これらの API は、次の 3 つのカテゴリにグループ化されます。
レイアウトとユーザー インターフェイス。 グラフィカル ユーザー インターフェイス (GUI) の共通テキスト コントロール。
軽量テキスト描画。 オブジェクトにテキストを直接描画できます。
高度なテキストの書式設定。 カスタム テキスト エンジンを実装できます。
レイアウトとユーザー インターフェイス
テキスト API は、最高レベルの機能で、 Label、 TextBlock、 TextBoxなどの一般的な UI コントロールを提供します。 これらのコントロールは、アプリケーション内の基本的な UI 要素を提供し、テキストを表示および操作する簡単な方法を提供します。 RichTextBoxやPasswordBoxなどのコントロールにより、より高度なテキスト処理や特殊化されたテキスト処理が可能になります。 また、 TextRange、 TextSelection、 TextPointer などのクラスを使用すると、便利なテキスト操作が可能になります。 これらの UI コントロールには、 FontFamily、 FontSize、 FontStyleなどのプロパティが用意されており、テキストのレンダリングに使用するフォントを制御できます。
ビットマップ効果、変換、およびテキスト効果の使用
WPF を使用すると、ビットマップ効果、変換、テキスト効果などの機能を使用して、テキストの視覚的に興味深い用途を作成できます。 次の例は、テキストに適用されるドロップ シャドウ効果の一般的な種類を示しています。
次の例は、ドロップ シャドウ効果とテキストに適用されるノイズを示しています。
次の例は、テキストに適用される外側の光彩効果を示しています。
次の例は、テキストに適用されるぼかし効果を示しています。
BlurBitmapEffect を使用して
次の例は、x 軸に沿って 150% にスケーリングされたテキストの 2 行目と、y 軸に沿って 150% スケールされた 3 行目のテキストを示しています。
次の例は、x 軸に沿って傾斜したテキストを示しています。
TextEffect オブジェクトは、テキストをテキスト文字列内の 1 つ以上の文字グループとして扱うことを可能にするヘルパー オブジェクトです。 次の例は、回転される個々の文字を示しています。 各文字は、1 秒間隔で個別に回転します。
フロー ドキュメントの使用
WPF には、一般的な UI コントロールに加えて、テキストプレゼンテーション用のレイアウト コントロール ( FlowDocument 要素) が用意されています。 FlowDocument要素は、DocumentViewer要素と組み合わせて、レイアウト要件が異なる大量のテキストのコントロールを提供します。 レイアウト コントロールは、他の UI コントロールの Typography オブジェクトとフォント関連のプロパティを使用して、高度な文字体裁にアクセスできるようにします。
次の例は、検索、ナビゲーション、改ページ、コンテンツスケーリングのサポートを提供する、 FlowDocumentReaderでホストされているテキスト コンテンツを示しています。
詳細については、WPFにおけるドキュメント
軽量テキスト描写
DrawText オブジェクトのDrawingContext メソッドを使用して、WPF オブジェクトにテキストを直接描画できます。 このメソッドを使用するには、 FormattedText オブジェクトを作成します。 このオブジェクトを使用すると、テキスト内の各文字を個別に書式設定できる複数行のテキストを描画できます。 FormattedText オブジェクトの機能には、Windows API の DrawText フラグの機能の多くが含まれています。 さらに、 FormattedText オブジェクトには、省略記号のサポートなどの機能が含まれています。この機能では、テキストがその境界を超えたときに省略記号が表示されます。 次の例は、2 番目と 3 番目の単語の線形グラデーションなど、複数の形式が適用されているテキストを示しています。
テキスト を使用して表示されます。
書式設定されたテキストを Geometry オブジェクトに変換して、他の種類の視覚的に興味深いテキストを作成できます。 たとえば、テキスト文字列のアウトラインに基づいて Geometry オブジェクトを作成できます。
線形グラデーション ブラシ を使用してテキストアウトラインを
次の例では、変換されたテキストのストローク、塗りつぶし、強調表示を変更して、興味深い視覚効果を作成するいくつかの方法を示します。
塗りとストロークの色が異なるテキスト
ストローク にイメージ ブラシを適用したテキスト
を強調表示
FormattedText オブジェクトの詳細については、「書式設定されたテキストの描画」を参照してください。
高度なテキストの書式設定
最も高度なレベルのテキスト API では、WPF では、TextFormatter名前空間の System.Windows.Media.TextFormatting オブジェクトやその他の型を使用してカスタム テキスト レイアウトを作成できます。 TextFormatterおよび関連するクラスを使用すると、文字形式、段落スタイル、改行ルール、およびその他の国際テキストのレイアウト機能の独自の定義をサポートするカスタム テキスト レイアウトを実装できます。 WPF テキスト レイアウト サポートの既定の実装をオーバーライドする場合はほとんどありません。 ただし、テキスト編集コントロールまたはアプリケーションを作成する場合は、既定の WPF 実装とは異なる実装が必要になる場合があります。
従来のテキスト API とは異なり、TextFormatter は一連のコールバック メソッドを介してテキスト レイアウト クライアントと対話します。 クライアントは、TextSource クラスの実装でこれらのメソッドを提供する必要があります。 次の図は、クライアント アプリケーションと TextFormatterの間のテキスト レイアウトの相互作用を示しています。
の図
カスタム テキスト レイアウトの作成の詳細については、「 テキストの詳細設定」を参照してください。
こちらも参照ください
.NET Desktop feedback