テキストブロック コントロール (決定された高さと幅) をキャンバスに追加しようとしています。フォント ファイル (.tff) で定義された行間隔に従って、そのテキスト ブロックの行の高さプロパティを設定したいと考えています。フォント ファイルを読み込んだ後、そのフォントのプロパティを持つ Typeface を使用します。行の高さが大きすぎる理由と、行の高さによってすべての行がテキストブロックに収まるように、各フォントとサイズの係数を計算する方法を誰かに説明してもらえますか? デフォルトの行の高さは、フォント ファイルの行間隔の真の値を表していないと思います。
item が私のオブジェクトであるコードは次のとおりです。
TextBlock tb = new TextBlock();
tb.Width = item.SizePX.Width;
tb.Height = item.SizePX.Height;
tb.Foreground = color;
tb.TextAlignment = item.TextFormat.TextHAlignment;
tb.FontSize = item.TextFormat.FontSize;
tb.FontFamily = typeFace.FontFamily;
tb.FontWeight = typeFace.Weight;
tb.FontStretch = typeFace.Stretch;
tb.FontStyle = typeFace.Style;
tb.TextDecorations = decCol;
tb.MaxWidth = item.SizePX.Width;
tb.TextWrapping = TextWrapping.Wrap;
tb.LineHeight = typeFace.FontFamily.LineSpacing * item.TextFormat.FontSize;
tb.LineStackingStrategy = LineStackingStrategy.BlockLineHeight;
オブジェクトitem.TextFormat.FontSize
で定義されているフォントのピクセル単位のサイズです。
それから私は試しましたtypeFace.FontFamily.Baseline
:
tb.LineHeight = ypeFace.FontFamily.Baseline * item.TextFormat.FontSize;
まだ機能していません...この問題について誰か助けてもらえますか?