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