diff --git a/samples/ControlCatalog/Pages/TextBoxPage.xaml b/samples/ControlCatalog/Pages/TextBoxPage.xaml
index 67b60568e5..0c0a4d705b 100644
--- a/samples/ControlCatalog/Pages/TextBoxPage.xaml
+++ b/samples/ControlCatalog/Pages/TextBoxPage.xaml
@@ -44,8 +44,8 @@
res fonts
-
-
+
+
diff --git a/src/Avalonia.Visuals/Media/FontFamily.cs b/src/Avalonia.Visuals/Media/FontFamily.cs
index d32db4ef28..0ba25e6c0d 100644
--- a/src/Avalonia.Visuals/Media/FontFamily.cs
+++ b/src/Avalonia.Visuals/Media/FontFamily.cs
@@ -114,9 +114,9 @@ namespace Avalonia.Media
case 2:
{
- var uri = s.StartsWith("/")
- ? new Uri(s, UriKind.Relative)
- : new Uri(s, UriKind.RelativeOrAbsolute);
+ var uri = segments[0].StartsWith("/")
+ ? new Uri(segments[0], UriKind.Relative)
+ : new Uri(segments[0], UriKind.RelativeOrAbsolute);
return uri.IsAbsoluteUri
? new FontFamily(segments[1], uri)
diff --git a/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs b/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
index 67b53cf8b4..2803b942ad 100644
--- a/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
+++ b/src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs
@@ -28,7 +28,7 @@ namespace Avalonia.Media.Fonts
public Uri Source { get; }
///
- ///
+ /// A base URI to use if is relative
///
public Uri BaseUri { get; }
@@ -93,14 +93,9 @@ namespace Avalonia.Media.Fonts
///
public override string ToString()
{
- if (Source.IsAbsoluteUri)
+ if (!Source.IsAbsoluteUri && BaseUri != null)
{
- return Source.ToString();
- }
-
- if (BaseUri != null)
- {
- return BaseUri + "/" + Source;
+ return string.Empty + BaseUri + Source;
}
return Source.ToString();
diff --git a/src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs b/src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs
index e1eabf7237..623125164c 100644
--- a/src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs
+++ b/src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs
@@ -71,7 +71,7 @@ namespace Avalonia.Media.Fonts
else
{
compareTo = location.AbsolutePath + fileName.Split('*').First();
- }
+ }
var matchingResources = availableResources.Where(
x => x.AbsolutePath.Contains(compareTo)
@@ -95,7 +95,7 @@ namespace Avalonia.Media.Fonts
var pathSegments = fontFamilyKey.Source.OriginalString.Split('/');
- var fileNameWithExtension = pathSegments.Last().Split('#').First();
+ var fileNameWithExtension = pathSegments.Last();
var fileNameSegments = fileNameWithExtension.Split('.');
@@ -103,11 +103,10 @@ namespace Avalonia.Media.Fonts
if (fontFamilyKey.BaseUri != null)
{
- location = new Uri(
- fontFamilyKey.BaseUri,
- fontFamilyKey.Source.OriginalString.Split('#')
- .First()
- .Replace(fileNameWithExtension, string.Empty));
+ var relativePath = fontFamilyKey.Source.OriginalString
+ .Replace(fileNameWithExtension, string.Empty);
+
+ location = new Uri(fontFamilyKey.BaseUri, relativePath);
}
else
{
diff --git a/tests/Avalonia.Visuals.UnitTests/Media/Fonts/FontFamilyKeyTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/Fonts/FontFamilyKeyTests.cs
index 38ad9e1866..b57ba781ed 100644
--- a/tests/Avalonia.Visuals.UnitTests/Media/Fonts/FontFamilyKeyTests.cs
+++ b/tests/Avalonia.Visuals.UnitTests/Media/Fonts/FontFamilyKeyTests.cs
@@ -23,8 +23,6 @@ namespace Avalonia.Visuals.UnitTests.Media.Fonts
var fontFamilyKey = new FontFamilyKey(source);
Assert.Equal(new Uri("resm:Avalonia.Visuals.UnitTests"), fontFamilyKey.Source);
-
- Assert.Null(fontFamilyKey.FileName);
}
[Fact]
@@ -34,9 +32,7 @@ namespace Avalonia.Visuals.UnitTests.Media.Fonts
var fontFamilyKey = new FontFamilyKey(source);
- Assert.Equal(new Uri("resm:Avalonia.Visuals.UnitTests"), fontFamilyKey.Source);
-
- Assert.Equal("MyFont.ttf", fontFamilyKey.FileName);
+ Assert.Equal(new Uri("resm:Avalonia.Visuals.UnitTests.MyFont.ttf"), fontFamilyKey.Source);
}
}
}