FontManagerImplTests.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using Avalonia.Direct2D1.Media;
  2. using Avalonia.Media;
  3. using Avalonia.UnitTests;
  4. using Xunit;
  5. namespace Avalonia.Direct2D1.UnitTests.Media
  6. {
  7. public class FontManagerImplTests
  8. {
  9. private static string s_fontUri = "resm:Avalonia.Direct2D1.UnitTests.Assets?assembly=Avalonia.Direct2D1.UnitTests#Noto Mono";
  10. [Fact]
  11. public void Should_Create_Typeface_From_Fallback()
  12. {
  13. using (AvaloniaLocator.EnterScope())
  14. {
  15. Direct2D1Platform.Initialize();
  16. var fontManager = new FontManagerImpl();
  17. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  18. new Typeface(new FontFamily("A, B, Arial")));
  19. var font = glyphTypeface.DWFont;
  20. Assert.Equal("Arial", font.FontFamily.FamilyNames.GetString(0));
  21. Assert.Equal(SharpDX.DirectWrite.FontWeight.Normal, font.Weight);
  22. Assert.Equal(SharpDX.DirectWrite.FontStyle.Normal, font.Style);
  23. }
  24. }
  25. [Fact]
  26. public void Should_Create_Typeface_From_Fallback_Bold()
  27. {
  28. using (AvaloniaLocator.EnterScope())
  29. {
  30. Direct2D1Platform.Initialize();
  31. var fontManager = new FontManagerImpl();
  32. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  33. new Typeface(new FontFamily("A, B, Arial"), FontWeight.Bold));
  34. var font = glyphTypeface.DWFont;
  35. Assert.Equal("Arial", font.FontFamily.FamilyNames.GetString(0));
  36. Assert.Equal(SharpDX.DirectWrite.FontWeight.Bold, font.Weight);
  37. Assert.Equal(SharpDX.DirectWrite.FontStyle.Normal, font.Style);
  38. }
  39. }
  40. [Fact]
  41. public void Should_Create_Typeface_For_Unknown_Font()
  42. {
  43. using (AvaloniaLocator.EnterScope())
  44. {
  45. Direct2D1Platform.Initialize();
  46. var fontManager = new FontManagerImpl();
  47. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  48. new Typeface(new FontFamily("Unknown")));
  49. var font = glyphTypeface.DWFont;
  50. var defaultName = fontManager.GetDefaultFontFamilyName();
  51. Assert.Equal(defaultName, font.FontFamily.FamilyNames.GetString(0));
  52. Assert.Equal(SharpDX.DirectWrite.FontWeight.Normal, font.Weight);
  53. Assert.Equal(SharpDX.DirectWrite.FontStyle.Normal, font.Style);
  54. }
  55. }
  56. [Fact]
  57. public void Should_Load_Typeface_From_Resource()
  58. {
  59. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  60. {
  61. Direct2D1Platform.Initialize();
  62. var fontManager = new FontManagerImpl();
  63. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  64. new Typeface(s_fontUri));
  65. var font = glyphTypeface.DWFont;
  66. Assert.Equal("Noto Mono", font.FontFamily.FamilyNames.GetString(0));
  67. }
  68. }
  69. [Fact]
  70. public void Should_Load_Nearest_Matching_Font()
  71. {
  72. using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
  73. {
  74. Direct2D1Platform.Initialize();
  75. var fontManager = new FontManagerImpl();
  76. var glyphTypeface = (GlyphTypefaceImpl)fontManager.CreateGlyphTypeface(
  77. new Typeface(s_fontUri, FontWeight.Black, FontStyle.Italic));
  78. var font = glyphTypeface.DWFont;
  79. Assert.Equal("Noto Mono", font.FontFamily.FamilyNames.GetString(0));
  80. }
  81. }
  82. }
  83. }