From a648f0846940dea155723f0235bb2cb9143d3e74 Mon Sep 17 00:00:00 2001 From: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com> Date: Wed, 13 Mar 2024 13:09:27 -0700 Subject: [PATCH] [Android] System Fonts fix (#20961) * Added a UI test (#19556) * [Android] Systemfonts fix (#19556) * Code review comments * [android] Add screenshot for UI test --------- Co-authored-by: Rui Marinho --- .../Issues/Issue19556.xaml | 42 ++++++++++++++++++ .../Issues/Issue19556.xaml.cs | 14 ++++++ .../tests/UITests/Tests/Issues/Issue19556.cs | 25 +++++++++++ .../SystemFontsShouldRenderCorrectly.png | Bin 0 -> 85600 bytes src/Core/src/Fonts/FontManager.Android.cs | 22 +++++++++ 5 files changed, 103 insertions(+) create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml create mode 100644 src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml.cs create mode 100644 src/Controls/tests/UITests/Tests/Issues/Issue19556.cs create mode 100644 src/Controls/tests/UITests/snapshots/android/SystemFontsShouldRenderCorrectly.png diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml new file mode 100644 index 000000000000..2525e6f72a28 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml @@ -0,0 +1,42 @@ + + + + + diff --git a/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml.cs b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml.cs new file mode 100644 index 000000000000..a2faa3334cc1 --- /dev/null +++ b/src/Controls/samples/Controls.Sample.UITests/Issues/Issue19556.xaml.cs @@ -0,0 +1,14 @@ +using Microsoft.Maui.Controls; +using Microsoft.Maui.Controls.Xaml; +namespace Maui.Controls.Sample.Issues; + +[XamlCompilation(XamlCompilationOptions.Compile)] +[Issue(IssueTracker.Github, 19556, "[Android] Systemfonts (light/black etc.) not working", PlatformAffected.Android)] + +public partial class Issue19556 : ContentPage +{ + public Issue19556() + { + InitializeComponent(); + } +} diff --git a/src/Controls/tests/UITests/Tests/Issues/Issue19556.cs b/src/Controls/tests/UITests/Tests/Issues/Issue19556.cs new file mode 100644 index 000000000000..30dc8d22e0e5 --- /dev/null +++ b/src/Controls/tests/UITests/Tests/Issues/Issue19556.cs @@ -0,0 +1,25 @@ +using NUnit.Framework; +using UITest.Appium; +using UITest.Core; + +namespace Microsoft.Maui.AppiumTests.Issues; + +public class Issue19556 : _IssuesUITest +{ + public override string Issue => "[Android] Systemfonts (light/black etc.) not working"; + + public Issue19556(TestDevice device) + : base(device) + { } + + [Test] + public void SystemFontsShouldRenderCorrectly() + { + this.IgnoreIfPlatforms(new TestDevice[] { TestDevice.iOS, TestDevice.Mac, TestDevice.Windows }); + + _ = App.WaitForElement("label"); + + // The test passes if fonts are correctly rendered + VerifyScreenshot(); + } +} diff --git a/src/Controls/tests/UITests/snapshots/android/SystemFontsShouldRenderCorrectly.png b/src/Controls/tests/UITests/snapshots/android/SystemFontsShouldRenderCorrectly.png new file mode 100644 index 0000000000000000000000000000000000000000..de1843b4e0129a1ce8ac3c1de7b5cb4192f51ae9 GIT binary patch literal 85600 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 FontWeightMap = new(StringComparer.OrdinalIgnoreCase) + { + { "-light", FontWeight.Light }, + { "-medium", FontWeight.Medium }, + { "-black", FontWeight.Black } + // Add more styles as needed + }; + readonly ConcurrentDictionary<(string? fontFamilyName, FontWeight weight, bool italic), Typeface?> _typefaces = new(); readonly IFontRegistrar _fontRegistrar; readonly IServiceProvider? _serviceProvider; @@ -171,7 +180,20 @@ public FontSize GetFontSize(Font font, float defaultFontSize = 0) } if (OperatingSystem.IsAndroidVersionAtLeast(28)) + { + if (!string.IsNullOrWhiteSpace(fontFamily)) + { + foreach (var fontWeight in FontWeightMap) + { + if (fontFamily.EndsWith(fontWeight.Key, StringComparison.OrdinalIgnoreCase)) + { + return Typeface.Create(result, (int)fontWeight.Value, italic); + } + } + } + result = Typeface.Create(result, (int)weight, italic); + } else result = Typeface.Create(result, style);