diff --git a/osu.Android.props b/osu.Android.props
index b84f1730ac..eeca40e73d 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -51,7 +51,7 @@
-
+
diff --git a/osu.Game.Tests/Visual/UserInterface/TestSceneOsuFont.cs b/osu.Game.Tests/Visual/UserInterface/TestSceneOsuFont.cs
new file mode 100644
index 0000000000..eedafce271
--- /dev/null
+++ b/osu.Game.Tests/Visual/UserInterface/TestSceneOsuFont.cs
@@ -0,0 +1,77 @@
+// 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);
+ }
+ }
+}
diff --git a/osu.Game/Graphics/OsuFont.cs b/osu.Game/Graphics/OsuFont.cs
index b6090d0e1a..edb484021c 100644
--- a/osu.Game/Graphics/OsuFont.cs
+++ b/osu.Game/Graphics/OsuFont.cs
@@ -21,6 +21,8 @@ namespace osu.Game.Graphics
public static FontUsage Torus => GetFont(Typeface.Torus, weight: FontWeight.Regular);
+ public static FontUsage TorusAlternate => GetFont(Typeface.TorusAlternate, weight: FontWeight.Regular);
+
public static FontUsage Inter => GetFont(Typeface.Inter, weight: FontWeight.Regular);
///
@@ -57,6 +59,9 @@ namespace osu.Game.Graphics
case Typeface.Torus:
return "Torus";
+ case Typeface.TorusAlternate:
+ return "Torus-Alternate";
+
case Typeface.Inter:
return "Inter";
}
@@ -113,6 +118,7 @@ namespace osu.Game.Graphics
{
Venera,
Torus,
+ TorusAlternate,
Inter,
}
diff --git a/osu.Game/OsuGameBase.cs b/osu.Game/OsuGameBase.cs
index adb819bf20..02de92e805 100644
--- a/osu.Game/OsuGameBase.cs
+++ b/osu.Game/OsuGameBase.cs
@@ -347,6 +347,11 @@ namespace osu.Game
AddFont(Resources, @"Fonts/Torus/Torus-SemiBold");
AddFont(Resources, @"Fonts/Torus/Torus-Bold");
+ AddFont(Resources, @"Fonts/Torus-Alternate/Torus-Alternate-Regular");
+ AddFont(Resources, @"Fonts/Torus-Alternate/Torus-Alternate-Light");
+ AddFont(Resources, @"Fonts/Torus-Alternate/Torus-Alternate-SemiBold");
+ AddFont(Resources, @"Fonts/Torus-Alternate/Torus-Alternate-Bold");
+
AddFont(Resources, @"Fonts/Inter/Inter-Regular");
AddFont(Resources, @"Fonts/Inter/Inter-RegularItalic");
AddFont(Resources, @"Fonts/Inter/Inter-Light");
diff --git a/osu.Game/Screens/OnlinePlay/Header.cs b/osu.Game/Screens/OnlinePlay/Header.cs
index b0db9256f5..2d4b5cc527 100644
--- a/osu.Game/Screens/OnlinePlay/Header.cs
+++ b/osu.Game/Screens/OnlinePlay/Header.cs
@@ -72,21 +72,21 @@ namespace osu.Game.Screens.OnlinePlay
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
- Font = OsuFont.GetFont(size: 24),
+ Font = OsuFont.TorusAlternate.With(size: 24),
Text = mainTitle
},
dot = new OsuSpriteText
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
- Font = OsuFont.GetFont(size: 24),
+ Font = OsuFont.TorusAlternate.With(size: 24),
Text = "·"
},
pageTitle = new OsuSpriteText
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
- Font = OsuFont.GetFont(size: 24),
+ Font = OsuFont.TorusAlternate.With(size: 24),
Text = "Lounge"
}
}
diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj
index c162025f1f..33d4e5a6c8 100644
--- a/osu.Game/osu.Game.csproj
+++ b/osu.Game/osu.Game.csproj
@@ -37,7 +37,7 @@
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index 8597a06c03..e30722c334 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -71,7 +71,7 @@
-
+