FireMonkey のテキスト レイアウト
FireMonkey では、TTextLayout を使って素早くテキストをレンダリングするためのメソッドが提供されています。 テキストのレンダリングは、OS ごとに独自の方法で実装されています。 Vista SP1 より前のバージョンの Windows では、テキスト レンダリングは GDI+ API で行われますが、それ以外は DirectWrite API が使われます。 macOS および iOS では、テキスト レンダリングは Core Text フレームワークでサポートされています。 Android では、Skia をベースとした組み込み実装が、テキスト レンダリングを行います。
どのテキスト レイアウト エンジンでも以下の処理が行われます。
- 指定された属性、フォント、位置揃えを使ってテキストを調整する
- フォント測定の計算ができるようにする
- 指定されたグラフィックス コンテキストにテキストをレンダリングする
- テキストをベクトル パスに変換する
DirectWrite も Core Text も同様の概念を基に動作しますが、細かい点は異なります。 FireMonkey テキスト レイアウト機能の使い方の詳細は、「FireMonkey テキスト レイアウト機能の使用」を参照してください。
TTextLayout は、テキスト コンポーネントのレンダリングを OS 固有の方法で実装できるようにするための基底抽象クラスです。
- フォントや色やサイズなどのレイアウト プロパティを変更するには、次のプロパティを必要に応じて設定します:Text、Font、Color、Height、Width、TextHeight、TextWidth。
-
- メモ: レイアウトの複数のプロパティを同時に変更する場合には、BeginUpdate 手続きと EndUpdate 手続きを呼び出すことをお勧めします。 プロパティを 1 つだけ変更するときに BeginUpdate や EndUpdate を使用する必要はありません。
- 次の図は、キャンバス上でのテキスト レイアウトの位置とテキストのプロパティの意味を示しています。
- TTextRange や TTextAttribute などのテキスト ブロック プロパティを割り当てるには、AddAttribute メソッドを使用します。
-
- メモ: DirectWrite によってサポートされるテキスト レンダリングでは、
色
を変更できるのはレイアウト全体に対してだけです。 GDI+ によってサポートされるテキスト レンダリングでは、テキスト属性をサポートしていません。
- メモ: DirectWrite によってサポートされるテキスト レンダリングでは、
- テキスト測定を使用すると、ポイント座標でカーソルを取得したり、テキスト領域の座標を取得することができます。
- テキストの位置を、位置の座標で取得するには、PositionAtPoint メソッドを使用します。
- ARange で指定されたテキストの範囲を囲む四角形の配列を取得するには、RegionForRange を使用します。
- 指定された Canvas にレイアウトをレンダリングするには、RenderLayout メソッドを使用します。
- テキストを TPathData オブジェクトに変換するには、ConvertToPath 手続きを使用します。
メモ: iOS プラットフォームで Trimming が正しく動作するのは、WordWrap = False
の場合だけです。