프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / Markus.Fonts / FontHelper.cs @ master

이력 | 보기 | 이력해설 | 다운로드 (2.01 KB)

1 24c5e56c taeseongkim
using System;
2
using System.Collections.Generic;
3
using System.IO;
4
using System.Linq;
5
using System.Reflection;
6
using System.Text;
7
using System.Threading.Tasks;
8
9
namespace Markus.Fonts
10
{
11
    public static class FontHelper
12
    {
13
        public static System.Windows.Media.FontFamily GetFontFamily(string name)
14
        {
15
            MarkusFont markusFont = Markus.Fonts.FontDictionary.GetMarkusFonts().Find(x => x.IsDefault);
16
17
            var fonts = Markus.Fonts.FontDictionary.GetMarkusFonts().Where(x => x.FamilyNames.Contains(name));
18
19
            if(fonts.Count() > 0)
20
            {
21
                markusFont = fonts.First();
22
            }
23
24
            string fontAssemblyName = Assembly.GetAssembly(typeof(Markus.Fonts.FontHelper)).GetName().Name;
25
26 782ad7b1 taeseongkim
            Uri uri = null;
27
28
            if(UriParser.IsKnownScheme("pack"))
29
            {
30
                uri = new Uri($"pack://application:,,,/{fontAssemblyName};component/");
31
            }
32
            else
33
            {
34
                uri = new Uri($"ms-appx:///{fontAssemblyName};component/");
35
            }
36 24c5e56c taeseongkim
37
            return new System.Windows.Media.FontFamily(uri,$"Resources/#{markusFont.FontFamilyName}");
38
        }
39
40
        public static Stream GetFontStream(string fileName)
41
        {
42
            Assembly asm = Assembly.GetExecutingAssembly();
43
44
            return asm.GetManifestResourceStream($"Markus.Fonts.Resources.{fileName}");
45
        }
46
47
        public static string FontName(this System.Windows.Media.FontFamily fontFamily)
48
        {
49
            string result = fontFamily.ToString();
50
51
            try
52
            {
53
                var family = fontFamily.ToString();
54
55
                if (family.IndexOf('#') > 0)
56
                {
57
                    result = family.Substring(family.IndexOf('#')+ 1);
58
                }
59
            }
60
            catch (Exception ex)
61
            {
62
                throw new Exception("FontName Error" + ex.ToString());
63
            }
64
65 3dbace4e taeseongkim
            //System.Diagnostics.Debug.WriteLine($"Font Name {result}");
66 24c5e56c taeseongkim
67
            return result;
68
        }
69
    }
70
}
클립보드 이미지 추가 (최대 크기: 500 MB)