コード例 #1
0
        public bool TryMatchCharacter(int codepoint, FontStyle fontStyle,
                                      FontWeight fontWeight, FontStretch fontStretch,
                                      FontFamily fontFamily, CultureInfo culture, out Typeface typeface)
        {
            var familyCount = Direct2D1FontCollectionCache.InstalledFontCollection.FontFamilyCount;

            for (var i = 0; i < familyCount; i++)
            {
                var font = Direct2D1FontCollectionCache.InstalledFontCollection.GetFontFamily(i)
                           .GetMatchingFonts((SharpDX.DirectWrite.FontWeight)fontWeight,
                                             (SharpDX.DirectWrite.FontStretch)fontStretch,
                                             (SharpDX.DirectWrite.FontStyle)fontStyle).GetFont(0);

                if (!font.HasCharacter(codepoint))
                {
                    continue;
                }

                var fontFamilyName = font.FontFamily.FamilyNames.GetString(0);

                typeface = new Typeface(fontFamilyName, fontStyle, fontWeight, fontStretch);

                return(true);
            }

            typeface = default;

            return(false);
        }
コード例 #2
0
        public bool TryMatchCharacter(int codepoint, FontWeight fontWeight, FontStyle fontStyle,
            FontFamily fontFamily, CultureInfo culture, out FontKey fontKey)
        {
            var familyCount = Direct2D1FontCollectionCache.InstalledFontCollection.FontFamilyCount;

            for (var i = 0; i < familyCount; i++)
            {
                var font = Direct2D1FontCollectionCache.InstalledFontCollection.GetFontFamily(i)
                    .GetMatchingFonts((SharpDX.DirectWrite.FontWeight)fontWeight, FontStretch.Normal,
                        (SharpDX.DirectWrite.FontStyle)fontStyle).GetFont(0);

                if (!font.HasCharacter(codepoint))
                {
                    continue;
                }

                var fontFamilyName = font.FontFamily.FamilyNames.GetString(0);

                fontKey = new FontKey(new FontFamily(fontFamilyName), fontWeight, fontStyle);

                return true;
            }

            fontKey = default;

            return false;
        }
コード例 #3
0
ファイル: FontManagerImpl.cs プロジェクト: sankeyou/Avalonia
        public Typeface MatchCharacter(int codepoint, FontWeight fontWeight = default, FontStyle fontStyle = default,
                                       FontFamily fontFamily = null, CultureInfo culture = null)
        {
            var fontFamilyName = FontFamily.Default.Name;

            var familyCount = Direct2D1FontCollectionCache.InstalledFontCollection.FontFamilyCount;

            for (var i = 0; i < familyCount; i++)
            {
                var font = Direct2D1FontCollectionCache.InstalledFontCollection.GetFontFamily(i)
                           .GetMatchingFonts((SharpDX.DirectWrite.FontWeight)fontWeight, FontStretch.Normal,
                                             (SharpDX.DirectWrite.FontStyle)fontStyle).GetFont(0);

                if (!font.HasCharacter(codepoint))
                {
                    continue;
                }

                fontFamilyName = font.FontFamily.FamilyNames.GetString(0);

                break;
            }

            return(GetTypeface(new FontFamily(fontFamilyName), fontWeight, fontStyle));
        }
コード例 #4
0
ファイル: FontManagerImpl.cs プロジェクト: sankeyou/Avalonia
 public Typeface GetTypeface(FontFamily fontFamily, FontWeight fontWeight, FontStyle fontStyle)
 {
     //ToDo: Implement caching.
     return(new Typeface(fontFamily, fontWeight, fontStyle));
 }