| 
					
				 | 
			
			
				@@ -28,20 +28,13 @@ namespace Avalonia.Media 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             PlatformImpl = platformImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var options = AvaloniaLocator.Current.GetService<FontManagerOptions>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AddFontCollection(new SystemFontCollection(this)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var options = AvaloniaLocator.Current.GetService<FontManagerOptions>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _fontFallbacks = options?.FontFallbacks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var defaultFontFamilyName = options?.DefaultFamilyName ?? PlatformImpl.GetDefaultFontFamilyName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (string.IsNullOrEmpty(defaultFontFamilyName)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new InvalidOperationException("Default font family name can't be null or empty."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var defaultFontFamilyName = GetDefaultFontFamilyName(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             DefaultFontFamily = new FontFamily(defaultFontFamilyName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            AddFontCollection(new SystemFontCollection(this)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -111,8 +104,8 @@ namespace Avalonia.Media 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var key = compositeKey.Keys[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         var familyName = fontFamily.FamilyNames[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (TryGetGlyphTypefaceByKeyAndName(typeface, key, familyName, out glyphTypeface) &&  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (TryGetGlyphTypefaceByKeyAndName(typeface, key, familyName, out glyphTypeface) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             glyphTypeface.FamilyName.Contains(familyName)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             return true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -165,7 +158,7 @@ namespace Avalonia.Media 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 source = new Uri(key.BaseUri, source); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (TryGetFontCollection(source, out var fontCollection) &&  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (TryGetFontCollection(source, out var fontCollection) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 fontCollection.TryGetGlyphTypeface(familyName, typeface.Style, typeface.Weight, typeface.Stretch, out glyphTypeface)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (glyphTypeface.FamilyName.Contains(familyName)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -270,7 +263,7 @@ namespace Avalonia.Media 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private bool TryGetFontCollection(Uri source, [NotNullWhen(true)] out IFontCollection? fontCollection) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(source.Scheme == SystemFontScheme) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (source.Scheme == SystemFontScheme) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 source = SystemFontsKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,5 +282,24 @@ namespace Avalonia.Media 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return fontCollection != null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private string GetDefaultFontFamilyName(FontManagerOptions? options) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var defaultFontFamilyName = options?.DefaultFamilyName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ?? PlatformImpl.GetDefaultFontFamilyName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (string.IsNullOrEmpty(defaultFontFamilyName) && SystemFonts.Count > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                defaultFontFamilyName = SystemFonts[0].Name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (string.IsNullOrEmpty(defaultFontFamilyName)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new InvalidOperationException( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "Default font family name can't be null or empty."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return defaultFontFamilyName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |