Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
 private bool AppliesToImpl(DocumentNode node)
 {
     if (PlatformTypes.FontFamily.IsAssignableFrom((ITypeId)node.Type))
     {
         DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode;
         if (documentPrimitiveNode != null)
         {
             DocumentNodeStringValue documentNodeStringValue = documentPrimitiveNode.Value as DocumentNodeStringValue;
             if (documentNodeStringValue != null)
             {
                 FontFamily oldFontFamily;
                 FontFamily newFontFamily;
                 FontEmbedder.CreateFontFamilyChange(this.FontFamilyChangeModel.FontChangeType, this.FontFamilyChangeModel.ProjectFont, node.Context, out oldFontFamily, out newFontFamily);
                 return(FontEmbedder.AreFontsEqual(new FontFamily(FontFamilyHelper.EnsureFamilyName(documentNodeStringValue.Value)), oldFontFamily, node.Context));
             }
         }
     }
     return(false);
 }
        protected override void ApplyChange(ChangedNodeInfo changedNodeInfo)
        {
            DocumentNode node = changedNodeInfo.Node;
            FontFamily   oldFontFamily;
            FontFamily   newFontFamily;

            FontEmbedder.CreateFontFamilyChange(this.fontFamilyChangeModel.FontChangeType, this.fontFamilyChangeModel.ProjectFont, changedNodeInfo.Node.Context, out oldFontFamily, out newFontFamily);
            DocumentNode documentNode = (DocumentNode)node.Context.CreateNode(PlatformTypes.FontFamily, (IDocumentNodeValue) new DocumentNodeStringValue(newFontFamily.Source));

            if (node.SiteChildIndex != -1)
            {
                node.Parent.Children[node.SiteChildIndex] = documentNode;
            }
            else
            {
                if (node.SitePropertyKey == null)
                {
                    return;
                }
                node.Parent.Properties[(IPropertyId)node.SitePropertyKey] = documentNode;
            }
        }
Exemple #5
0
 public void Initialize(FontFamily fontFamily, IProjectItem fontItem)
 {
     this.fontFamily     = fontFamily;
     this.fontItem       = fontItem;
     this.fontFamilyName = FontEmbedder.GetFontNameFromSource(fontFamily);
 }