对于FontFamily
,如何以特定FontSize
编程方式检索/计算该字体的最大高度范围?
我需要一个值来设置一个文本块的高度,该文本块将在指定的FontSize
显示字体 - 这必须以编程方式执行。
我需要一个考虑上升和下降等的值。
更新
为了澄清,我需要整个FontFamily
的最大高度范围,而不是该字体中某些示例文本的高度。我不知道文本会提前发生什么。
答案 0 :(得分:34)
字体的最大高度范围可以使用其LineSpacing属性计算,该属性是字体的比例数字。这可以用来给出一个行高,它可以容纳特定大小的字体的所有字形。
FontFamily fontFamily = new FontFamily("Segoe UI");
double fontDpiSize = 16;
double fontHeight = Math.Ceiling(fontDpiSize * fontFamily.LineSpacing);
结果:
22.0
这个数字将包含少量的leading,当需要文本行的高度时(这样,相邻的文本行的上升和下降符号间隔)是理想的。
答案 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;