diff --git a/src/Avalonia.Controls/Presenters/TextPresenter.cs b/src/Avalonia.Controls/Presenters/TextPresenter.cs index 7f99aecd21b..df1d37c2594 100644 --- a/src/Avalonia.Controls/Presenters/TextPresenter.cs +++ b/src/Avalonia.Controls/Presenters/TextPresenter.cs @@ -476,7 +476,7 @@ protected virtual TextLayout CreateTextLayout() var caretIndex = CaretIndex; var preeditText = PreeditText; var text = GetCombinedText(Text, caretIndex, preeditText); - var typeface = new Typeface(FontFamily, FontStyle, FontWeight); + var typeface = new Typeface(FontFamily, FontStyle, FontWeight, FontStretch); var selectionStart = SelectionStart; var selectionEnd = SelectionEnd; var start = Math.Min(selectionStart, selectionEnd); diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs index 61ce056c498..69d30883c67 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs @@ -1,5 +1,6 @@ using System.Linq; using Avalonia.Controls.Presenters; +using Avalonia.Media; using Avalonia.UnitTests; using Xunit; @@ -51,5 +52,28 @@ public void Text_Presenter_Replaces_Formatted_Text_With_Password_Char() Assert.Equal("****", actual); } } + + [Theory] + [InlineData(FontStretch.Condensed)] + [InlineData(FontStretch.Expanded)] + [InlineData(FontStretch.Normal)] + [InlineData(FontStretch.ExtraCondensed)] + [InlineData(FontStretch.SemiCondensed)] + [InlineData(FontStretch.ExtraExpanded)] + [InlineData(FontStretch.SemiExpanded)] + [InlineData(FontStretch.UltraCondensed)] + [InlineData(FontStretch.UltraExpanded)] + public void TextPresenter_Should_Use_FontStretch_Property(FontStretch fontStretch) + { + using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface)) + { + var presenter = new TextPresenter { FontStretch = fontStretch, Text = "test" }; + Assert.NotNull(presenter.TextLayout); + Assert.Equal(1, presenter.TextLayout.TextLines.Count); + Assert.Equal(1, presenter.TextLayout.TextLines[0].TextRuns.Count); + Assert.NotNull(presenter.TextLayout.TextLines[0].TextRuns[0].Properties); + Assert.Equal(fontStretch, presenter.TextLayout.TextLines[0].TextRuns[0].Properties.Typeface.Stretch); + } + } } }