« WPF Text API | Main | WPF の縦書き実証実験 »

2007.11.28

WPF TextBox の Visual Tree

WPF の縦書きの続き にさらに続く。XamlPad で覗いてみる。

  • TextBox
    • TextBoxView
      • DrawingVisual
        • [0]=DrawingGroup
          • [0~n]=GlyphRunDrawing
            • GlyphRun

TextBoxView が TextFormatter.FormatLine を呼んで、帰ってきた結果の TextLine が GlyphRun を生成しているらしい。

LineServices は MurrayS が言っているように OS などに依存しない構造 なので、LineServices の callback を実装している TextLine あたりが Uniscribe で言うところの "Shaping" をしているのだろう。

WPF でまともに縦書きを実装するのがとても大変、というのはよくわかった。Wrapper をかませて、ちょいちょい、と遊ぶレベルでは実現できそうにない。

WPF の縦書き幸い、日本語の縦書き Shaping は、ほかの言語と違ってレイアウトに変更が出ない。固定幅フォントを使っている限り、縦書き用のグリフに置換しても文字の送りが変わらないからだ。

Visual Tree を VisualTreeHelper で覗いて、同じ構造を作りつつ、グリフ置換をすれば、なんとか縦に表示することはできそう。

とはいえ、グリフ置換をするためのテーブルを取得する API は WPF にはない。作るか、Uniscribe を使うか、というあたりで、これもなかなか難儀。まだ迷いは続く。

BiDi の Shaping をしっかりやったものを WPF 1.0 (.NET 3.0) にきちんと入れてきたんだから、日本の縦書きの Shaping なんて大したことないと思うですけどね。

|

« WPF Text API | Main | WPF の縦書き実証実験 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/2111/17216940

Listed below are links to weblogs that reference WPF TextBox の Visual Tree:

» WPF の縦書き実証実験 [さすらいの .NET プログラマー]
句読点がこんな形の縦書き画面ショット だけ掲載しても後味が悪いので、さらに実証実 [Read More]

Tracked on 2007.11.28 at 10:36 PM

« WPF Text API | Main | WPF の縦書き実証実験 »