u may try to use the attribute LineStackingStrategy = "BlockLineHeight" and the converter on the LineHeight attributes and the converter at the height of the TextBlock. This is an example of converter code.
// Height Converter public class FontSizeToHeightConverter : IValueConverter { public static double COEFF = 0.715; public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return (double)value * COEFF; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } // LineHeightConverter public class FontSizeToLineHeightConverter : IValueConverter { public static double COEFF = 0.875; public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return double.Parse(value.ToString()) * COEFF; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
The coefficient used for the converters depends on the family fonts used (basic and linear):
<TextBlock Text="ABC" Background="Aqua" LineStackingStrategy="BlockLineHeight" FontSize="{Binding ElementName=textBox1, Path=Text}" FontFamily="{Binding ElementName=listFonts, Path=SelectedItem}" Height="{Binding RelativeSource={RelativeSource Self}, Path=FontSize, Mode=OneWay, Converter={StaticResource FontSizeToHeightConverter1}}" LineHeight="{Binding RelativeSource={RelativeSource Self}, Path=FontSize, Converter={StaticResource FontSizeToLineHeightConverter}}"/>

The best solution is to find how to calculate Coeff based on the Baseline and LineSpacing parameters for FontFamily. In this example (Segeo UI) Coeff of Height = 0.715 and LineHeight = 0.875 * FontSize.
G. Sofien
source share