From e5babc8a6f4c6522f52d22cb9b1cf6c673ea0ab6 Mon Sep 17 00:00:00 2001 From: Tom Edwards Date: Sun, 21 Dec 2025 13:10:07 +0100 Subject: [PATCH] Added TextScaling static class with configuration properties Added ITextScaler to support custom text scaling Calculate a font scale factor and use this to adjust height and spacing values Fixed TextBox not updating when LineHeight changes and MaxLines or MinLines are active --- samples/ControlCatalog/MainView.xaml | 2 +- src/Avalonia.Base/ITextScaler.cs | 16 ++ .../Platform/DefaultPlatformSettings.cs | 2 +- .../Platform/IPlatformSettings.cs | 12 +- .../Documents/IInlineHost.cs | 2 +- src/Avalonia.Controls/Documents/Inline.cs | 2 +- .../Documents/TextElement.cs | 32 +--- .../IPlatformTextScaleable.cs | 17 --- src/Avalonia.Controls/ITextScaleable.cs | 13 ++ .../Presenters/TextPresenter.cs | 57 +++---- .../Primitives/TextSelectionCanvas.cs | 6 +- src/Avalonia.Controls/SelectableTextBlock.cs | 9 +- src/Avalonia.Controls/TextBlock.cs | 46 ++---- src/Avalonia.Controls/TextBox.cs | 29 +++- src/Avalonia.Controls/TextScaling.cs | 139 ++++++++++++++++++ src/Avalonia.Controls/TopLevel.cs | 9 +- .../Avalonia.Win32/Win32PlatformSettings.cs | 4 +- src/iOS/Avalonia.iOS/PlatformSettings.cs | 2 +- 18 files changed, 256 insertions(+), 143 deletions(-) create mode 100644 src/Avalonia.Base/ITextScaler.cs delete mode 100644 src/Avalonia.Controls/IPlatformTextScaleable.cs create mode 100644 src/Avalonia.Controls/ITextScaleable.cs create mode 100644 src/Avalonia.Controls/TextScaling.cs diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml index 401d96fad2..5d6b5c6c86 100644 --- a/samples/ControlCatalog/MainView.xaml +++ b/samples/ControlCatalog/MainView.xaml @@ -7,7 +7,7 @@ xmlns:pages="using:ControlCatalog.Pages" xmlns:viewModels="using:ControlCatalog.ViewModels" x:DataType="viewModels:MainWindowViewModel" - TextElement.IsPlatformTextScalingEnabled="True"> + TextScaling.IsEnabled="True">