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); }
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); }