Мне нужно скопировать текст из одной презентации PowerPoint в другую. Однако у меня возникают проблемы при копировании специальных символов, таких как смайлики, которые отображаются в целевой презентации в виде пустых полей. Глядя на файл Open XML в исходной презентации, я вижу, что Run
, содержащий смайлик, имеет атрибут SymbolFont:
<a:sym typeface="Wingdings" />
Однако в VBA Shape.TextFrame2.TextRange2.Font
= шрифт этого Run
- показывает Arial.
Как определить SymbolFont текста Run
, используя VBA или C # (не XML)?
Тогда я мог бы указать этот SymbolFont в целевой презентации.
Возможно, есть другие способы копирования текста, которые не связаны с XML?
Обратите внимание, что эта проблема возникает не только со смайликами; другие специальные символы могут отображать разные SymbolFonts, такие как:
<a:symTypeface = "Symbol", PitchFamily = 18, CharacterSet = 2>
Пример кода:
getRuns(TextRange2 paragraph)
{
foreach(TextRange2 run in paragraph.get_Runs(-1,-1))
_myRuns.Add(new MyRun {_text=run.Text, _font=run.Font} );
}
copyRunsToParagraph(TextRange2 paragraph)
{
foreach(MyRun run in _myRuns)
paragraph=paragraph.InsertAfter(run._text);
}
Примечание: Run.Font
, кажется, возвращает только латинский шрифт, а не шрифт Symbol, например, Arial, но не Wingdings. Как я уже писал, разные символы могут иметь разные SymbolFonts, поэтому всегда использование Wingdings не работает.