如何在WPF中计算字体高度?

时间:2010-12-22 13:26:19

标签: wpf fonts font-size

对于FontFamily,如何以特定FontSize编程方式检索/计算该字体的最大高度范围?

我需要一个值来设置一个文本块的高度,该文本块将在指定的FontSize显示字体 - 这必须以编程方式执行。

我需要一个考虑上升和下降等的值。

更新

为了澄清,我需要整个FontFamily的最大高度范围,而不是该字体中某些示例文本的高度。我不知道文本会提前发生什么。

2 个答案:

答案 0 :(得分:34)

字体的最大高度范围可以使用其LineSpacing属性计算,该属性是字体的比例数字。这可以用来给出一个行高,它可以容纳特定大小的字体的所有字形。

    FontFamily fontFamily = new FontFamily("Segoe UI");
    double fontDpiSize = 16;

    double fontHeight = Math.Ceiling(fontDpiSize * fontFamily.LineSpacing);

结果:

   22.0

这个数字将包含少量的leading,当需要文本行的高度时(这样,相邻的文本行的上升和下降符号间隔)是理想的。

enter image description here

答案 1 :(得分:1)

使用System.Windows.Media.FormattedText类。

实施例

FormattedText ft = new FormattedText("Quick Brown Fox Jumps Over A Lazy Dog.",
                                     CultureInfo.CurrentCulture,
                                     CultureInfo.CurrentCulture.TextInfo.IsRightToLeft ? FlowDirection.RightToLeft : FlowDirection.LeftToRight,
                                     new Typeface("Verdana"),
                                     9,
                                     new SolidColorBrush(Colors.White)
Double maxHeight = ft.MaxTextHeight;