コード例 #1
0
ファイル: ImportManager.cs プロジェクト: radtek/Shopdrawing
        private string FindFontFromProject(string fontNameToken, string modifierToken)
        {
            ObservableCollection <IProjectFont> projectFonts = this.SceneViewModel.ProjectContext.ProjectFonts;
            IFontResolver fontResolver        = this.SceneViewModel.ProjectContext.FontResolver;
            IEnumerable <IProjectFont> source = Enumerable.Where <IProjectFont>((IEnumerable <IProjectFont>)projectFonts, (Func <IProjectFont, bool>)(fontFamily =>
            {
                if (!ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(fontFamily.FontFamilyName)).StartsWith(fontNameToken, StringComparison.OrdinalIgnoreCase))
                {
                    return(ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(fontFamily.FontFamilyName)).StartsWith(fontNameToken, StringComparison.OrdinalIgnoreCase));
                }
                return(true);
            }));
            string       fontMatching = modifierToken == null ? fontNameToken : fontNameToken + modifierToken;
            IProjectFont projectFont1 = (IProjectFont)null;

            foreach (IProjectFont projectFont2 in source)
            {
                string strA1 = ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(projectFont2.FontFamilyName));
                string strA2 = ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(projectFont2.FontFamilyName));
                if (string.Compare(strA1, fontMatching, StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA2, fontMatching, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    return(FontEmbedder.MakeProjectFontReference(projectFont2, this.SceneViewModel.Document.DocumentContext).Source);
                }
                if (projectFont1 == null || projectFont1.FontFamilyName.Length > projectFont2.FontFamilyName.Length)
                {
                    projectFont1 = projectFont2;
                }
            }
            if (projectFont1 == null)
            {
                Enumerable.Where <IProjectFont>((IEnumerable <IProjectFont>)projectFonts, (Func <IProjectFont, bool>)(fontFamily =>
                {
                    if (!ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(fontFamily.FontFamilyName)).StartsWith(fontMatching, StringComparison.OrdinalIgnoreCase))
                    {
                        return(ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(fontFamily.FontFamilyName)).StartsWith(fontMatching, StringComparison.OrdinalIgnoreCase));
                    }
                    return(true);
                }));
                if (Enumerable.Count <IProjectFont>(source) > 0)
                {
                    projectFont1 = Enumerable.First <IProjectFont>(source);
                }
            }
            if (projectFont1 != null)
            {
                return(FontEmbedder.MakeProjectFontReference(projectFont1, this.SceneViewModel.Document.DocumentContext).Source);
            }
            return((string)null);
        }
コード例 #2
0
ファイル: ImportManager.cs プロジェクト: radtek/Shopdrawing
        private string FindFontFromSystem(string fontNameToken, string modifierToken)
        {
            IEnumerable <SystemFontFamily> systemFonts = FontEmbedder.GetSystemFonts((ITypeResolver)this.SceneViewModel.ProjectContext);
            IFontResolver fontResolver = this.SceneViewModel.ProjectContext.FontResolver;
            IEnumerable <SystemFontFamily> enumerable = Enumerable.Where <SystemFontFamily>(systemFonts, (Func <SystemFontFamily, bool>)(fontFamily =>
            {
                if (!ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(fontFamily.FontFamilyName)).StartsWith(fontNameToken, StringComparison.OrdinalIgnoreCase))
                {
                    return(ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(fontFamily.FontFamilyName)).StartsWith(fontNameToken, StringComparison.OrdinalIgnoreCase));
                }
                return(true);
            }));
            string fontMatching = modifierToken == null ? fontNameToken : fontNameToken + modifierToken;
            string str          = (string)null;

            foreach (SystemFontFamily systemFontFamily in enumerable)
            {
                string strA1 = ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(systemFontFamily.FontFamilyName));
                string strA2 = ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(systemFontFamily.FontFamilyName));
                if (string.Compare(strA1, fontMatching, StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(strA2, fontMatching, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    return(systemFontFamily.FontFamilyName);
                }
                if (str == null || str.Length > systemFontFamily.FontFamilyName.Length)
                {
                    str = systemFontFamily.FontFamilyName;
                }
            }
            if (str == null)
            {
                IEnumerable <SystemFontFamily> source = Enumerable.Where <SystemFontFamily>(systemFonts, (Func <SystemFontFamily, bool>)(fontFamily =>
                {
                    if (!ImportManager.TokenizeFontName(fontResolver.ConvertToGdiFontName(fontFamily.FontFamilyName)).StartsWith(fontMatching, StringComparison.OrdinalIgnoreCase))
                    {
                        return(ImportManager.TokenizeFontName(fontResolver.ConvertToWpfFontName(fontFamily.FontFamilyName)).StartsWith(fontMatching, StringComparison.OrdinalIgnoreCase));
                    }
                    return(true);
                }));
                if (Enumerable.Count <SystemFontFamily>(source) > 0)
                {
                    str = Enumerable.First <SystemFontFamily>(source).FontFamilyName;
                }
            }
            return(str);
        }