Esempio n. 1
0
 SetSubsetCommitPolicy(FontSubsetterCommitPolicies policy)
 {
     if (policy == FontSubsetterCommitPolicies.CommitEntireSequence &&
         _commitCountPolicy != 1)
     {
         throw new ArgumentOutOfRangeException(SR.Get(SRID.ReachPackaging_SequenceCntMustBe1));
     }
     _commitPolicy = policy;
 }
Esempio n. 2
0
 SetFontSubsettingPolicy(FontSubsetterCommitPolicies policy)
 {
     IServiceProvider resourceServiceProvider = (IServiceProvider)ResourcePolicy;
     XpsFontSerializationService fontService = (XpsFontSerializationService)resourceServiceProvider.GetService(typeof(XpsFontSerializationService));
     if (fontService != null)
     {
         XpsFontSubsetter fontSubsetter = fontService.FontSubsetter;
         fontSubsetter.SetSubsetCommitPolicy(policy);
     }
 }
        SubsetComplete(INode node)
        {
            FontSubsetterCommitPolicies signal = FontSubsetterCommitPolicies.CommitPerPage;
            bool validSubsetNode = true;
            bool subsetComplete  = false;

            if (node is IXpsFixedDocumentSequenceWriter)
            {
                signal = FontSubsetterCommitPolicies.CommitEntireSequence;
            }
            else
            if (node is IXpsFixedDocumentWriter)
            {
                signal = FontSubsetterCommitPolicies.CommitPerDocument;
            }
            else
            if (node is IXpsFixedPageWriter)
            {
                signal = FontSubsetterCommitPolicies.CommitPerPage;
            }
            else
            {
                validSubsetNode = false;
            }

            if (validSubsetNode)
            {
                XpsFontSerializationService fontService = (XpsFontSerializationService)GetService(typeof(XpsFontSerializationService));
                if (fontService != null)
                {
                    XpsFontSubsetter fontSubsetter = fontService.FontSubsetter;
                    subsetComplete = fontSubsetter.CommitFontSubsetsSignal(signal);
                }
            }
            return(subsetComplete);
        }
Esempio n. 4
0
        CommitFontSubsetsSignal(
            FontSubsetterCommitPolicies signal
            )
        {
            //
            // flag indicating if this signal completed a subset
            //
            bool completedSubset = false;

            if (signal == FontSubsetterCommitPolicies.CommitPerPage)
            {
                foreach (FEMCacheItem item in _fontEmbeddingManagerCache.Values)
                {
                    if (item != null)
                    {
                        item.AddRelationship();
                        item.CurrentPageReferences = false;
                    }
                }
            }
            else
            if (signal == FontSubsetterCommitPolicies.CommitPerDocument &&
                _commitPolicy == FontSubsetterCommitPolicies.CommitEntireSequence)
            {
                foreach (FEMCacheItem item in _fontEmbeddingManagerCache.Values)
                {
                    if (item != null)
                    {
                        item.AddRestrictedRelationship();
                    }
                }
            }
            //
            // If we recieve a signal to commit a superset of what we are commiting on
            // i.e. Document Signal with commit Policy is per page
            // we must commit
            //
            if (signal >= _commitPolicy)
            {
                if (signal == _commitPolicy)
                {
                    _currentCommitCnt++;
                }
                if (signal > _commitPolicy || _currentCommitCnt % _commitCountPolicy == 0)
                {
                    foreach (FEMCacheItem item in _fontEmbeddingManagerCache.Values)
                    {
                        if (item != null && _commitPolicy != FontSubsetterCommitPolicies.None)
                        {
                            item.Commit();
                            //
                            // We will be removing this FEMCacheItem from the cache
                            // after this loop so we must add its document relationship
                            // if restricted.  If the policy is CommitPerDocumentSequence
                            // we do not need to add since it will have been added at the document signal
                            //
                            if (signal != FontSubsetterCommitPolicies.CommitEntireSequence)
                            {
                                item.AddRestrictedRelationship();
                            }
                        }
                    }
                    _fontEmbeddingManagerCache.Clear();
                    _currentCommitCnt = 0;
                    completedSubset   = true;
                }
            }
            return(completedSubset);
        }