0

我无法粘贴整个代码,但关键是我在 PPT 2013 中有一个文本框myTb,我已经(以编程方式)将一些文本粘贴到其中。我现在要执行以下两个操作:

  1. 查看原文是否为 PPT 'body default' 字体(例如 MS Ribbon 中的 'Calibri (body)' vs. 'Calibri')
  2. 如果它是正文默认值,请将新文本设置为正文默认值。

我似乎无法弄清楚任何一部分,即使我已经尝试从/向大多数Shape.TextFrame[n].TextRange.Font.Name...字段进行读/写。关于Shape.TextFrame.TextRange.Font.NameComplexScript字段,我还有两个令人困惑的问题要问:

  1. 该字段似乎不是正文默认与非正文默认字体的“完整”指标。原因是如果这个文本框最初是 body-default ('Calibri (body)'),它会显示 '+mn-cs',但是我可以将字体更改为非默认变体 ('Calibri') ,它仍然显示为“+mn-cs”。
  2. 然后,我继续将文本框更改为完全不同的字体,这会将该字段更改为预期的字体名称。但是,如果我随后改回 body-default 字体(或任何其他字体,就此而言),此字段将保留在前一个字体的名称上。
4

2 回答 2

4

要将字体设置为正文或标题字体,您需要使用一些奇怪的语法:

{object}.Font.Name = "+" + FontType + "-" + FontLang

在哪里:

FontType 分别为 Major(标题)或 Minor(正文)的“mj”或“mn”。

FontLang 是“lt”、“cs”或“ea”,表示拉丁文、复杂脚本或东亚文

例如,将字体设置为拉丁文本的主题正文字体:

ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Font.Name = "+mn-lt"
于 2017-07-20T14:31:41.647 回答
0

聚会有点晚了,但我发现了这个,以防有人需要。

编辑:这是 C# 代码,使用 Interop PowerPoint 命名空间。

string headingsThemeFont = Globals.ThisAddIn.Application.ActivePresentation.SlideMaster.Theme.ThemeFontScheme.MajorFont.Item(MsoFontLanguageIndex.msoThemeLatin).Name;
                   
string bodyThemeFont = Globals.ThisAddIn.Application.ActivePresentation.SlideMaster.Theme.ThemeFontScheme.MinorFont.Item(MsoFontLanguageIndex.msoThemeLatin).Name;
                    
于 2021-01-17T20:32:54.603 回答