WPF のタイポグラフィTypography in WPF

このトピックでは、WPFWPF の主要な文字体裁の機能について説明します。This topic introduces the major typographic features of WPFWPF. これらの機能には、テキストレンダリングの品質とパフォーマンスの向上、OpenType 文字体裁のサポート、強化されたインターナショナルテキスト、フォントサポートの強化、および新しいテキストアプリケーションプログラミングインターフェイス (Api) が含まれます。These features include improved quality and performance of text rendering, OpenType typography support, enhanced international text, enhanced font support, and new text application programming interfaces (APIs).

テキストに関する品質とパフォーマンスの向上Improved Quality and Performance of Text

WPFWPF のテキストは Microsoft ClearType を使用してレンダリングされます。これにより、テキストの明瞭さと読みやすさが向上します。Text in WPFWPF is rendered using Microsoft ClearType, which enhances the clarity and readability of text. ClearType は、Microsoft によって開発されたソフトウェアテクノロジで、ラップトップの画面、Pocket PC の画面、フラットパネルモニターなど、既存の Lcd (液晶ディスプレイ) でのテキストの読みやすさを向上させます。ClearType is a software technology developed by Microsoft that improves the readability of text on existing LCDs (Liquid Crystal Displays), such as laptop screens, Pocket PC screens and flat panel monitors. ClearType では、ピクセルレンダリングが使用されます。これにより、ピクセルの小数部に文字を配置することで、実際の図形に対する忠実度の高いテキストを表示できます。ClearType uses sub-pixel rendering which allows text to be displayed with a greater fidelity to its true shape by aligning characters on a fractional part of a pixel. 解像度が上がるとテキスト表示の微細部の鮮明度が高くなるため、長時間にわたって読んでも苦になりません。The extra resolution increases the sharpness of the tiny details in text display, making it much easier to read over long durations. WPFWPF での ClearType のもう1つの改良点は、y 方向のアンチエイリアシングです。これにより、テキスト文字での浅い曲線の上部および下部を滑らかにすることができます。Another improvement of ClearType in WPFWPF is y-direction anti-aliasing, which smoothes the tops and bottoms of shallow curves in text characters. ClearType 機能の詳細については、「 cleartype の概要」を参照してください。For more details on ClearType features, see ClearType Overview.

ClearType y 方向アンチエイリアシングを含むテキスト
ClearType の y 方向アンチエイリアシングを適用したテキストText with ClearType y-direction antialiasing

WPFWPF では、コンピューターがハードウェアの最小要件を満たしている限り、テキスト レンダリング パイプライン全体に対してハードウェア アクセラレータを使用できます。The entire text rendering pipeline can be hardware-accelerated in WPFWPF provided your machine meets the minimum level of hardware required. ハードウェアを使用して実行できないレンダリングは、ソフトウェア レンダリングとなります。Rendering that cannot be performed using hardware falls back to software rendering. ハードウェアアクセラレータは、テキストレンダリングパイプラインのすべてのフェーズに影響を及ぼします。これは、個々のグリフの格納、グリフの実行へのグリフの合成、効果の適用、最終的に表示される出力への ClearType ブレンディングアルゴリズムの適用に関するものです。Hardware-acceleration affects all phases of the text rendering pipeline—from storing individual glyphs, compositing glyphs into glyph runs, applying effects, to applying the ClearType blending algorithm to the final displayed output. ハードウェア アクセラレータの詳細については、「グラフィックスの描画層」をご覧ください。For more information on hardware acceleration, see Graphics Rendering Tiers.

パイプラインを描画するテキストのダイアグラム

また、アニメーション化されたテキストは、文字とグリフのいずれによる場合でも、WPFWPF で有効化されているグラフィックス ハードウェア機能をすべて利用できます。In addition, animated text, whether by character or glyph, takes full advantage of the graphics hardware capability enabled by WPFWPF. これにより、テキスト アニメーションが滑らかになります。This results in smooth text animation.

多彩な文字体裁Rich Typography

OpenType フォント形式は、TrueType®フォント形式を拡張したものです。The OpenType font format is an extension of the TrueType® font format. OpenType フォント形式は、Microsoft と Adobe が共同で開発したものであり、高度な文字体裁機能が豊富に用意されています。The OpenType font format was developed jointly by Microsoft and Adobe, and provides a rich assortment of advanced typographic features. Typography オブジェクトは、スタイルの代替や巻きひげなど、OpenType フォントの高度な機能の多くを公開します。The Typography object exposes many of the advanced features of OpenType fonts, such as stylistic alternates and swashes. Windows SDK には、Pericles や Pescadero フォントなどの豊富な機能を使用して設計されたサンプルの OpenType フォントのセットが用意されています。The Windows SDK provides a set of sample OpenType fonts that are designed with rich features, such as the Pericles and Pescadero fonts. 詳細については、「OpenType フォント パックのサンプル」を参照してください。For more information, see Sample OpenType Font Pack.

Pericles OpenType フォントには、グリフの標準セットに対してスタイルの代替を提供する追加のグリフが含まれています。The Pericles OpenType font contains additional glyphs that provide stylistic alternates to the standard set of glyphs. 次のテキストでは、スタイル代替グリフが表示されています。The following text displays stylistic alternate glyphs.

OpenType のスタイル代替グリフを使用するテキストText using OpenType stylistic alternate glyphs

飾り付きは装飾的なグリフで、カリグラフィを連想させる、手の込んだ装飾が使用されます。Swashes are decorative glyphs that use elaborate ornamentation often associated with calligraphy. 次のテキストは、Pescadero フォントの標準グリフと巻きひげグリフを示しています。The following text displays standard and swash glyphs for the Pescadero font.

OpenType の標準グリフとスワッシュ グリフを使用するテキストText using OpenType standard and swash glyphs

OpenType 機能の詳細については、「 Opentype フォントの機能」を参照してください。For more details on OpenType features, see OpenType Font Features.

国際対応テキストのサポートの強化Enhanced International Text Support

WPFWPF では、次の機能を提供することで、国際対応テキストのサポートを強化しています。provides enhanced international text support by providing the following features:

  • すべての書記体系における、適用可能な単位を使用した自動行間隔設定。Automatic line-spacing in all writing systems, using adaptive measurement.

  • 国際対応テキストの幅広いサポート。Broad support for international text. 詳細については、「WPF のグローバリゼーション」をご覧ください。For more information, see Globalization for WPF.

  • 言語に合わせた改行、ハイフネーション、両端揃え。Language-guided line breaking, hyphenation, and justification.

フォントのサポートの強化Enhanced Font Support

WPFWPF では、次の機能を提供することで、フォントのサポートを強化しています。provides enhanced font support by providing the following features:

  • すべてのテキストに対応する Unicode。Unicode for all text. フォントの動作や選択に文字セットやコードページが不要になりました。Font behavior and selection no longer require charset or codepage.

  • システム ロケールなど、グローバル設定に左右されないフォント動作。Font behavior independent of global settings, such as system locale.

  • FontFamilyを定義するために、FontWeightFontStretch、および FontStyle の種類を分離します。Separate FontWeight, FontStretch, and FontStyle types for defining a FontFamily. これにより、斜体と太字のブール値の組み合わせでフォント ファミリを定義する Win32Win32 プログラミングよりも優れた柔軟性が提供されます。This provides greater flexibility than in Win32Win32 programming, in which Boolean combinations of italic and bold are used to define a font family.

  • フォント名とは関係なく処理される書き込み方向 (横書きまたは縦書き)。Writing direction (horizontal versus vertical) handled independent of font name.

  • 複合フォントテクノロジを使用した、ポータブル XML ファイル内のフォントリンクとフォントフォールバック。Font linking and font fallback in a portable XML file, using composite font technology. 複合フォントは、完全な多言語フォントの構築を可能にします。Composite fonts allow for the construction of full range multilingual fonts. また、複合フォントは、欠落グリフの表示を防ぐ機能も備えています。Composite fonts also provide a mechanism that avoids displaying missing glyphs. 詳細については、FontFamily クラスの解説を参照してください。For more information, see the remarks in the FontFamily class.

  • 単一言語フォントのグループを使用した、複合フォントから構築される国際対応フォント。International fonts built from composite fonts, using a group of single-language fonts. これにより、複数言語に対応するフォントの開発時にリソースのコストを節約できます。This saves on resource costs when developing fonts for multiple languages.

  • ドキュメントに埋め込むことで移植性が得られる複合フォント。Composite fonts embedded in a document, thereby providing document portability. 詳細については、FontFamily クラスの解説を参照してください。For more information, see the remarks in the FontFamily class.

新しいテキスト API (アプリケーション プログラミング インターフェイス)New Text Application Programming Interfaces (APIs)

WPFWPF には、開発者がアプリケーションにテキストを含めるときに使用するテキスト Api がいくつか用意されています。provides several text APIs for developers to use when including text in their applications. これらの Api は、次の3つのカテゴリに分類されます。These APIs are grouped into three categories:

  • レイアウトとユーザー インターフェイス:Layout and user interface. グラフィカルユーザーインターフェイス (GUI) 用の一般的なテキストコントロール。The common text controls for the graphical user interface (GUI).

  • 軽量テキスト描画:Lightweight text drawing. オブジェクトにテキストを直接描画できます。Allows you to draw text directly to objects.

  • テキストの高度な書式設定:Advanced text formatting. カスタム テキスト エンジンを実装できます。Allows you to implement a custom text engine.

レイアウトとユーザー インターフェイスLayout and User Interface

最高レベルの機能では、text Api は、LabelTextBlockTextBoxなどの一般的な ユーザー インターフェイス (UI)user interface (UI) コントロールを提供します。At the highest level of functionality, the text APIs provide common ユーザー インターフェイス (UI)user interface (UI) controls such as Label, TextBlock, and TextBox. これらのコントロールは、アプリケーション内に基本的な UIUI 要素を提供し、テキストの表示や操作を簡単に実行できるようにします。These controls provide the basic UIUI elements within an application, and offer an easy way to present and interact with text. RichTextBoxPasswordBox などのコントロールを使用すると、より高度なテキスト処理を行うことができます。Controls such as RichTextBox and PasswordBox enable more advanced or specialized text-handling. TextRangeTextSelectionTextPointer などのクラスを使用すると、便利なテキスト操作を行うことができます。And classes such as TextRange, TextSelection, and TextPointer enable useful text manipulation. これらの UIUI コントロールは、FontFamilyFontSizeFontStyleなどのプロパティを提供します。これにより、テキストの表示に使用するフォントを制御できます。These UIUI controls provide properties such as FontFamily, FontSize, and FontStyle, which enable you to control the font that is used to render the text.

ビットマップ効果、変換、テキスト効果の使用Using Bitmap Effects, Transforms, and Text Effects

WPFWPF では、ビットマップ効果、変換、テキスト効果などの機能を利用して、人の目をひきつけるテキストを作成できます。allows you to create visually interesting uses of text by uses features such as bitmap effects, transforms, and text effects. テキストに標準タイプのドロップ シャドウ効果を適用した例を次に示します。The following example shows a typical type of a drop shadow effect applied to text.

ぼかし= 0.25 を使用したテキストシャドウ

テキストにドロップ シャドウ効果とノイズを適用した例を次に示します。The following example shows a drop shadow effect and noise applied to text.

ノイズを含むテキスト シャドウ

テキストの外縁にグロー効果を適用した例を次に示します。The following example shows an outer glow effect applied to text.

OuterGlowBitmapEffect を使用するテキスト シャドウ

テキストにぼかし効果が適用されている例を次に示します。The following example shows a blur effect applied to text.

BlurBitmapEffect を使用するテキスト シャドウ

テキストの 2 行目を x 軸に沿って 150% 拡大し、3 行目を y 軸に沿って 150% 拡大した例を次に示します。The following example shows the second line of text scaled by 150% along the x-axis, and the third line of text scaled by 150% along the y-axis.

ScaleTransform を使用してスケールされたテキスト

x 軸に沿って傾斜させたテキストの例を次に示します。The following example shows text skewed along the x-axis.

SkewTransform を使用して傾斜させたテキスト

TextEffect オブジェクトは、テキスト文字列内の1つまたは複数の文字グループとしてテキストを扱うことができるヘルパーオブジェクトです。A TextEffect object is a helper object that allows you to treat text as one or more groups of characters in a text string. 次の例は、回転する個々の文字を示しています。The following example shows an individual character being rotated. 各文字は、1 秒間隔で個別に回転します。Each character is rotated independently at 1-second intervals.

テキストを回転するテキスト効果のスクリーンショット

フロー ドキュメントの使用Using Flow Documents

一般的な UIUI コントロールに加えて、WPFWPF は、FlowDocument 要素であるテキストプレゼンテーション用のレイアウトコントロールを提供します。In addition to the common UIUI controls, WPFWPF offers a layout control for text presentation—the FlowDocument element. FlowDocument 要素は、DocumentViewer 要素と共に、さまざまなレイアウト要件を持つ大量のテキストのコントロールを提供します。The FlowDocument element, in conjunction with the DocumentViewer element, provides a control for large amounts of text with varying layout requirements. レイアウトコントロールは、他の UIUI コントロールの Typography オブジェクトおよびフォント関連のプロパティを使用して高度なタイポグラフィにアクセスできるようにします。Layout controls provide access to advanced typography through the Typography object and font-related properties of other UIUI controls.

次の例は、検索、ナビゲーション、改ページ調整、およびコンテンツスケーリングのサポートを提供する FlowDocumentReaderでホストされているテキストコンテンツを示しています。The following example shows text content hosted in a FlowDocumentReader, which provides search, navigation, pagination, and content scaling support.

OpenType フォントを示すスクリーンショット。

詳細については、「WPF のドキュメント」を参照してください。For more information, see Documents in WPF.

軽量テキスト描画Lightweight Text Drawing

DrawingContext オブジェクトの DrawText メソッドを使用して、WPFWPF オブジェクトにテキストを直接描画できます。You can draw text directly to WPFWPF objects by using the DrawText method of the DrawingContext object. このメソッドを使用するには、FormattedText オブジェクトを作成します。To use this method, you create a FormattedText object. このオブジェクトを使用すると、複数行のテキストを描画できます。このテキストでは、テキスト内の各文字を個々に書式設定できます。This object allows you to draw multi-line text, in which each character in the text can be individually formatted. FormattedText オブジェクトの機能には、Windows API の DrawText フラグの機能の多くが含まれています。The functionality of the FormattedText object contains much of the functionality of the DrawText flags in the Windows API. さらに、FormattedText オブジェクトには、テキストが境界を超えたときに省略記号が表示される省略記号サポートなどの機能が含まれています。In addition, the FormattedText object contains functionality such as ellipsis support, in which an ellipsis is displayed when text exceeds its bounds. いくつかの書式を適用したテキストを次の例に示します。たとえば、2 番目と 3 番目の単語には線状グラデーションが適用されています。The following example shows text that has several formats applied to it, including a linear gradient on the second and third words.

FormattedText オブジェクトを使用して表示されるテキスト

書式設定されたテキストを Geometry オブジェクトに変換して、その他の種類の視覚的に興味のあるテキストを作成できます。You can convert formatted text into Geometry objects, allowing you to create other types of visually interesting text. たとえば、テキスト文字列のアウトラインに基づいて Geometry オブジェクトを作成できます。For example, you could create a Geometry object based on the outline of a text string.

線形グラデーション ブラシを使用するテキスト アウトライン

変換されたテキストのストローク、塗りつぶし、強調表示を変更して、人の目をひく視覚効果を作成するいくつかの方法を次の例に示します。The following examples illustrate several ways of creating interesting visual effects by modifying the stroke, fill, and highlight of converted text.

塗りつぶしとストロークに別の色を使用するテキスト

ストロークに適用されるイメージ ブラシを含むテキスト

ストロークと強調表示に適用されたイメージブラシを含むテキスト

FormattedText オブジェクトの詳細については、「書式設定されたテキストの描画」を参照してください。For more information on the FormattedText object, see Drawing Formatted Text.

テキストの高度な書式設定Advanced Text Formatting

テキスト Api の最も高度なレベルでは、WPFWPF により、TextFormatter オブジェクトと System.Windows.Media.TextFormatting 名前空間のその他の型を使用して、カスタムテキストレイアウトを作成することができます。At the most advanced level of the text APIs, WPFWPF offers you the ability to create custom text layout by using the TextFormatter object and other types in the System.Windows.Media.TextFormatting namespace. TextFormatter クラスと関連クラスを使用すると、独自の文字形式、段落スタイル、改行規則、およびその他のインターナショナルテキストのレイアウト機能をサポートするカスタムテキストレイアウトを実装できます。The TextFormatter and associated classes allow you to implement custom text layout that supports your own definition of character formats, paragraph styles, line breaking rules, and other layout features for international text. WPFWPF テキスト レイアウト サポートに関する既定の実装のオーバーライドが必要となるケースはほとんどありません。There are very few cases in which you would want to override the default implementation of the WPFWPF text layout support. ただし、テキストを編集するコントロールやアプリケーションを作成する場合は、WPFWPF の既定の実装とは異なる実装が必要になることがあります。However, if you were creating a text editing control or application, you might require a different implementation than the default WPFWPF implementation.

従来のテキスト API とは異なり、TextFormatter は、一連のコールバックメソッドを使用してテキストレイアウトクライアントと対話します。Unlike a traditional text API, the TextFormatter interacts with a text layout client through a set of callback methods. クライアントは、TextSource クラスの実装でこれらのメソッドを提供する必要があります。It requires the client to provide these methods in an implementation of the TextSource class. 次の図は、クライアントアプリケーションと TextFormatter の間のテキストレイアウトの相互作用を示しています。The following diagram illustrates the text layout interaction between the client application and TextFormatter.

テキスト レイアウト クライアントと TextFormatter のダイアグラム

カスタム テキスト レイアウトの作成の詳細については、「テキストの高度な書式設定」をご覧ください。For more details on creating custom text layout, see Advanced Text Formatting.

関連項目See also