えムナウ Blog

えムナウ の なすがまま

目次

Blog 利用状況

ニュース


follow mnow at http://twitter.com


えムナウのプログラミングのページ

INETAJ

書庫

日記カテゴリ

ギャラリ

TextBox と GlyphRun の関係

TextBox は GlyphRun を使って描画しているんじゃないかと調べていましたがやっとその関係が見えてきました。
画像のクラス図がそうです。
これらのクラスはほとんどが internal class なので Microsoft のソース公開がなければうかがい知ることのなかった世界です。

TextBox はそのレンダリングを TextBoxView が請け負っています。
TextBoxView は TextFormatter を使っています。
TextFormatter は WPF のテキスト エンジンであり、テキストの書式設定およびテキスト行の改行のサービスを提供します。
TextFormatter ではテキスト フォーマッタ クライアントとテキスト レイアウト クライアントの対話を通して TextLine が作成されます、この時に利用されるのが TextSource です。
TextSource は TextRun を取得します、ここに TextRun のいろいろな表示属性を決める TextRunProperties もあります。
http://msdn.microsoft.com/ja-jp/library/system.windows.media.textformatting.textformatter.aspx

FullTextLine という TextLine が使われていますが、FormattedTextSymbols が使われていて GlyphRun を生成しています。
http://msdn.microsoft.com/ja-jp/library/system.windows.media.glyphrun.aspx

TextBox で GlyphIndices を操作して縦書きのグリフを作成するまでにはものすごく長い道のりであることは分かりました。
一方でその構造がわかったので正しい抜け道を探すことも可能なんじゃないかとも思っています。

 

ClassDiagram1

投稿日時 : 2010年10月31日 22:14