// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using NUnit.Framework; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Sprites; using osu.Game.Graphics; using osu.Game.Graphics.Sprites; namespace osu.Game.Tests.Visual.UserInterface { public class TestSceneOsuFont : OsuTestScene { private OsuSpriteText spriteText; private readonly BindableBool useAlternates = new BindableBool(); private readonly Bindable weight = new Bindable(FontWeight.Regular); [BackgroundDependencyLoader] private void load() { Child = spriteText = new OsuSpriteText { Origin = Anchor.Centre, Anchor = Anchor.Centre, RelativeSizeAxes = Axes.X, AllowMultiline = true, }; } protected override void LoadComplete() { base.LoadComplete(); useAlternates.BindValueChanged(_ => updateFont()); weight.BindValueChanged(_ => updateFont(), true); } private void updateFont() { FontUsage usage = useAlternates.Value ? OsuFont.TorusAlternate : OsuFont.Torus; spriteText.Font = usage.With(size: 40, weight: weight.Value); } [Test] public void TestTorusAlternates() { AddStep("set all ASCII letters", () => spriteText.Text = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"); AddStep("set all alternates", () => spriteText.Text = @"A Á Ă Â Ä À Ā Ą Å Ã Æ B D Ð Ď Đ E É Ě Ê Ë Ė È Ē Ę F G Ğ Ģ Ġ H I Í Î Ï İ Ì Ī Į K Ķ O Œ P Þ Q R Ŕ Ř Ŗ T Ŧ Ť Ţ Ț V W Ẃ Ŵ Ẅ Ẁ X Y Ý Ŷ Ÿ Ỳ a á ă â ä à ā ą å ã æ b d ď đ e é ě ê ë ė è ē ę f g ğ ģ ġ k ķ m n ń ň ņ ŋ ñ o œ p þ q t ŧ ť ţ ț u ú û ü ù ű ū ų ů w ẃ ŵ ẅ ẁ x y ý ŷ ÿ ỳ"); AddToggleStep("toggle alternates", alternates => useAlternates.Value = alternates); addSetWeightStep(FontWeight.Light); addSetWeightStep(FontWeight.Regular); addSetWeightStep(FontWeight.SemiBold); addSetWeightStep(FontWeight.Bold); void addSetWeightStep(FontWeight newWeight) => AddStep($"set weight {newWeight}", () => weight.Value = newWeight); } } }