Пример #1
0
        public void Should_Get_Near_Matching_Typeface()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var notoMono =
                    new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");

                var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);

                Assert.Equal("Noto Mono",
                             notoMonoCollection.Get(new Typeface(notoMono, weight: FontWeight.Bold)).FamilyName);
            }
        }
Пример #2
0
        public void Should_Get_Near_Matching_Typeface(string familyName, FontWeight fontWeight, FontStyle fontStyle)
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var fontFamily = new FontFamily(familyName);

                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(fontFamily);

                var actual = typefaceCollection.Get(new Typeface(fontFamily, fontStyle, fontWeight))?.FamilyName;

                Assert.Equal("Noto Mono", actual);
            }
        }
Пример #3
0
        public void Should_Get_Null_For_Invalid_FamilyName()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var notoMono =
                    new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");

                var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);

                var typeface = notoMonoCollection.Get(new Typeface("ABC"));

                Assert.Null(typeface);
            }
        }
Пример #4
0
        public IGlyphTypefaceImpl CreateGlyphTypeface(Typeface typeface)
        {
            switch (typeface.FontFamily.Name)
            {
            case "Twitter Color Emoji":
            case "Noto Mono":
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(typeface.FontFamily);
                var skTypeface         = typefaceCollection.Get(typeface);
                return(new GlyphTypefaceImpl(skTypeface));

            default:
                return(new GlyphTypefaceImpl(SKTypeface.FromFamilyName(typeface.FontFamily.Name,
                                                                       (SKFontStyleWeight)typeface.Weight, SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style)));
            }
        }
Пример #5
0
        public void Should_Get_Typeface_For_Partial_FamilyName()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var fontFamily = new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#T");

                var fontCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(fontFamily);

                var typeface = fontCollection.Get(new Typeface(fontFamily));

                Assert.NotNull(typeface);

                Assert.Equal("Twitter Color Emoji", typeface.FamilyName);
            }
        }
        public IGlyphTypefaceImpl CreateGlyphTypeface(Typeface typeface)
        {
            SKTypeface skTypeface;

            switch (typeface.FontFamily.Name)
            {
            case "Twitter Color Emoji":
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_emojiTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(typeface);
                break;
            }

            case "Noto Sans":
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_italicTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(typeface);
                break;
            }

            case "Noto Sans Arabic":
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_arabicTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(typeface);
                break;
            }

            case FontFamily.DefaultFontFamilyName:
            case "Noto Mono":
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_defaultTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(_defaultTypeface);
                break;
            }

            default:
            {
                skTypeface = SKTypeface.FromFamilyName(typeface.FontFamily.Name,
                                                       (SKFontStyleWeight)typeface.Weight, SKFontStyleWidth.Normal, (SKFontStyleSlant)typeface.Style);
                break;
            }
            }

            return(new GlyphTypefaceImpl(skTypeface));
        }
        public void Should_Load_Typefaces_From_Invalid_Name()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var notoMono =
                    new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Noto Mono");

                var colorEmoji =
                    new FontFamily("resm:Avalonia.Skia.UnitTests.Assets?assembly=Avalonia.Skia.UnitTests#Twitter Color Emoji");

                var notoMonoCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(notoMono);

                var typeface = new Typeface("ABC", FontWeight.Bold, FontStyle.Italic);

                Assert.Equal("Noto Mono", notoMonoCollection.Get(typeface).FamilyName);

                var notoColorEmojiCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(colorEmoji);

                Assert.Equal("Twitter Color Emoji", notoColorEmojiCollection.Get(typeface).FamilyName);
            }
        }
Пример #8
0
        public IGlyphTypefaceImpl CreateGlyphTypeface(Typeface typeface)
        {
            SKTypeface skTypeface;

            switch (typeface.FontFamily.Name)
            {
            case "Noto Sans":
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_italicTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(typeface);
                break;
            }

            default:
            {
                var typefaceCollection = SKTypefaceCollectionCache.GetOrAddTypefaceCollection(_defaultTypeface.FontFamily);
                skTypeface = typefaceCollection.Get(_defaultTypeface);
                break;
            }
            }

            return(new GlyphTypefaceImpl(skTypeface));
        }