public static object PickTagAt( TextRunLine line, int x, int y ) { Measurement m = new Measurement(); foreach ( var run in line ) foreach ( var ch_ in run.Text ) { char ch = ch_; m = Measurement.Merge(m,m.Advance.X,0,run.Font.BitmapPageForOrNul( ref ch ).Measurement ); if ( 0 <= x && x < m.Bounds.Width && 0 <= y && y < m.Bounds.Height ) return run.Tag; } return null; }
public static Measurement MeasureLine( TextRunLine line ) { Measurement m = new Measurement(); foreach ( var run in line ) foreach ( var ch_ in run.Text ) { char ch = ch_; m = Measurement.Merge(m,m.Advance.X,0,run.Font.BitmapPageForOrNul( ref ch ).Measurement); } return m; }