private static void CopyFontTable(FontTablePart oldFontTablePart, FontTablePart newFontTablePart)
 {
     var relevantElements = oldFontTablePart.GetXDocument().Descendants().Where(d => d.Name == W.embedRegular ||
         d.Name == W.embedBold || d.Name == W.embedItalic || d.Name == W.embedBoldItalic).ToList();
     foreach (XElement fontReference in relevantElements)
     {
         string relId = (string)fontReference.Attribute(R.id);
         if (string.IsNullOrEmpty(relId))
             continue;
         try
         {
             OpenXmlPart tempPart = newFontTablePart.GetPartById(relId);
             continue;
         }
         catch (ArgumentOutOfRangeException)
         {
             try
             {
                 ExternalRelationship tempEr = newFontTablePart.GetExternalRelationship(relId);
                 continue;
             }
             catch (KeyNotFoundException)
             {
             }
         }
         FontPart oldPart = (FontPart)oldFontTablePart.GetPartById(relId);
         FontPart newPart = newFontTablePart.AddFontPart(oldPart.ContentType);
         var ResourceID = newFontTablePart.GetIdOfPart(newPart);
         using (Stream oldFont = oldPart.GetStream(FileMode.Open, FileAccess.Read))
         using (Stream newFont = newPart.GetStream(FileMode.Create, FileAccess.ReadWrite))
         {
             int byteCount;
             byte[] buffer = new byte[65536];
             while ((byteCount = oldFont.Read(buffer, 0, 65536)) != 0)
                 newFont.Write(buffer, 0, byteCount);
         }
         fontReference.Attribute(R.id).Value = ResourceID;
     }
 }
        private static void CopyFontTable(FontTablePart oldFontTablePart, FontTablePart newFontTablePart)
        {
            var relevantElements = oldFontTablePart.GetXDocument().Descendants().Where(d => d.Name == W.embedRegular ||
                d.Name == W.embedBold || d.Name == W.embedItalic || d.Name == W.embedBoldItalic).ToList();
            foreach (XElement fontReference in relevantElements)
            {
                string relId = (string)fontReference.Attribute(R.id);
                if (string.IsNullOrEmpty(relId))
                    continue;

                var ipp1 = newFontTablePart.Parts.FirstOrDefault(z => z.RelationshipId == relId);
                if (ipp1 != null)
                {
                    OpenXmlPart tempPart = ipp1.OpenXmlPart;
                    continue;
                }

                ExternalRelationship tempEr1 = newFontTablePart.ExternalRelationships.FirstOrDefault(z => z.Id == relId);
                if (tempEr1 != null)
                    continue;

                FontPart oldPart = (FontPart)oldFontTablePart.GetPartById(relId);
                FontPart newPart = newFontTablePart.AddFontPart(oldPart.ContentType);
                var ResourceID = newFontTablePart.GetIdOfPart(newPart);
                using (Stream oldFont = oldPart.GetStream(FileMode.Open, FileAccess.Read))
                using (Stream newFont = newPart.GetStream(FileMode.Create, FileAccess.ReadWrite))
                {
                    int byteCount;
                    byte[] buffer = new byte[65536];
                    while ((byteCount = oldFont.Read(buffer, 0, 65536)) != 0)
                        newFont.Write(buffer, 0, byteCount);
                }
                fontReference.Attribute(R.id).Value = ResourceID;
            }
        }