FontManagerImplTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Linq;
  3. using System.Reflection;
  4. using Avalonia.Media;
  5. using Avalonia.Platform;
  6. using Avalonia.UnitTests;
  7. using SkiaSharp;
  8. using Xunit;
  9. namespace Avalonia.Skia.UnitTests
  10. {
  11. public class FontManagerImplTests
  12. {
  13. private static string s_fontUri = "resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono";
  14. [Fact]
  15. public void Should_Create_Typeface_From_Fallback()
  16. {
  17. var fontManager = new FontManagerImpl();
  18. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  19. new Typeface(new FontFamily("A, B, " + fontManager.GetDefaultFontFamilyName())));
  20. var skTypeface = glyphTypeface.Typeface;
  21. Assert.Equal(SKTypeface.Default.FamilyName, skTypeface.FamilyName);
  22. Assert.Equal(SKTypeface.Default.FontWeight, skTypeface.FontWeight);
  23. Assert.Equal(SKTypeface.Default.FontSlant, skTypeface.FontSlant);
  24. }
  25. [Fact]
  26. public void Should_Create_Typeface_From_Fallback_Bold()
  27. {
  28. var fontManager = new FontManagerImpl();
  29. //we need to have a valid font name different from the default one
  30. string fontName = fontManager.GetInstalledFontFamilyNames().First();
  31. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  32. new Typeface(new FontFamily($"A, B, {fontName}"), FontWeight.Bold));
  33. var skTypeface = glyphTypeface.Typeface;
  34. Assert.Equal(fontName, skTypeface.FamilyName);
  35. Assert.True(skTypeface.FontWeight >= 600);
  36. }
  37. [Fact]
  38. public void Should_Create_Typeface_For_Unknown_Font()
  39. {
  40. var fontManager = new FontManagerImpl();
  41. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  42. new Typeface(new FontFamily("Unknown")));
  43. var skTypeface = glyphTypeface.Typeface;
  44. Assert.Equal(SKTypeface.Default.FamilyName, skTypeface.FamilyName);
  45. Assert.Equal(SKTypeface.Default.FontWeight, skTypeface.FontWeight);
  46. Assert.Equal(SKTypeface.Default.FontSlant, skTypeface.FontSlant);
  47. }
  48. [Fact]
  49. public void Should_Load_Typeface_From_Resource()
  50. {
  51. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  52. {
  53. var fontManager = new FontManagerImpl();
  54. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  55. new Typeface(s_fontUri));
  56. var skTypeface = glyphTypeface.Typeface;
  57. Assert.Equal("Noto Mono", skTypeface.FamilyName);
  58. }
  59. }
  60. [Fact]
  61. public void Should_Load_Nearest_Matching_Font()
  62. {
  63. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  64. {
  65. var fontManager = new FontManagerImpl();
  66. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  67. new Typeface(s_fontUri, FontWeight.Black, FontStyle.Italic));
  68. var skTypeface = glyphTypeface.Typeface;
  69. Assert.Equal("Noto Mono", skTypeface.FamilyName);
  70. }
  71. }
  72. }
  73. }