Browse Source

Merge remote-tracking branch 'origin/master' into refactor/pixelsize

Dan Walmsley 7 years ago
parent
commit
899d48c362

+ 32 - 7
src/Avalonia.Visuals/Media/Fonts/FontFamilyKey.cs

@@ -17,7 +17,10 @@ namespace Avalonia.Media.Fonts
         /// <param name="source"></param>
         public FontFamilyKey(Uri source)
         {
-            if (source == null) throw new ArgumentNullException(nameof(source));
+            if (source == null)
+            {
+                throw new ArgumentNullException(nameof(source));
+            }
 
             if (source.AbsolutePath.Contains(".ttf"))
             {
@@ -28,7 +31,17 @@ namespace Avalonia.Media.Fonts
             }
             else
             {
-                Location = source;
+                if (source.AbsolutePath.Contains(".otf"))
+                {
+                    var filePathWithoutExtension = source.AbsolutePath.Replace(".otf", string.Empty);
+                    var fileNameWithoutExtension = filePathWithoutExtension.Split('.').Last();
+                    FileName = fileNameWithoutExtension + ".otf";
+                    Location = new Uri(source.OriginalString.Replace("." + FileName, string.Empty), UriKind.RelativeOrAbsolute);
+                }
+                else
+                {
+                    Location = source;
+                }
             }
         }
 
@@ -77,11 +90,20 @@ namespace Avalonia.Media.Fonts
         /// </returns>
         public override bool Equals(object obj)
         {
-            if (!(obj is FontFamilyKey other)) return false;
+            if (!(obj is FontFamilyKey other))
+            {
+                return false;
+            }
 
-            if (Location != other.Location) return false;
+            if (Location != other.Location)
+            {
+                return false;
+            }
 
-            if (FileName != other.FileName) return false;
+            if (FileName != other.FileName)
+            {
+                return false;
+            }
 
             return true;
         }
@@ -94,7 +116,10 @@ namespace Avalonia.Media.Fonts
         /// </returns>
         public override string ToString()
         {
-            if (FileName == null) return Location.PathAndQuery;
+            if (FileName == null)
+            {
+                return Location.PathAndQuery;
+            }
 
             var builder = new UriBuilder(Location);
 
@@ -103,4 +128,4 @@ namespace Avalonia.Media.Fonts
             return builder.ToString();
         }
     }
-}
+}

+ 2 - 2
src/Avalonia.Visuals/Media/Fonts/FontFamilyLoader.cs

@@ -34,7 +34,7 @@ namespace Avalonia.Media.Fonts
         {
             var availableAssets = s_assetLoader.GetAssets(location);
 
-            var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf"));
+            var matchingAssets = availableAssets.Where(x => x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf"));
 
             return matchingAssets.Select(x => GetAssetUri(x.absolutePath, x.assembly));
         }
@@ -53,7 +53,7 @@ namespace Avalonia.Media.Fonts
             var compareTo = location.AbsolutePath + "." + fileName.Split('*').First();
 
             var matchingResources =
-                availableResources.Where(x => x.absolutePath.Contains(compareTo) && x.absolutePath.EndsWith(".ttf"));
+                availableResources.Where(x => x.absolutePath.Contains(compareTo) && (x.absolutePath.EndsWith(".ttf") || x.absolutePath.EndsWith(".otf")));
 
             return matchingResources.Select(x => GetAssetUri(x.absolutePath, x.assembly));
         }