Präsentationen mit Fallback-Schriftarten in C++ rendern

Contents
[ ]

Das folgende Beispiel umfasst diese Schritte:

  1. Wir Erstellen einer Fallback‑Schriftartregelsammlung.
  2. Remove() eine Fallback‑Schriftartregel entfernen und AddFallBackFonts() zu einer anderen Regel hinzufügen.
  3. Übergeben Sie die Regelsammlung an die Methode FontsManager::set_FontFallBackRulesCollection().
  4. Mit der Methode Presentation::Save() können wir die Präsentation im selben Format speichern oder in ein anderes Format. Nachdem die Fallback‑Schriftartregelsammlung im FontsManager festgelegt wurde, werden diese Regeln bei allen Vorgängen an der Präsentation angewendet: Speichern, Rendern, Konvertieren usw.
// Neue Instanz einer Regelsammlung erstellen
auto rulesList = MakeObject<FontFallBackRulesCollection>();

// Eine Reihe von Regeln erstellen
rulesList->Add(MakeObject<FontFallBackRule>(static_cast<uint32_t>(0x400), static_cast<uint32_t>(0x4FF), u"Times New Roman"));
//rulesList.Add(new FontFallBackRule(...));

for (const auto& fallBackRule : rulesList)
{
	// Versuch, die Fallback-Schriftart "Tahoma" aus geladenen Regeln zu entfernen
	fallBackRule->Remove(u"Tahoma");

	// Und die Regeln für den angegebenen Bereich zu aktualisieren
	if ((fallBackRule->get_RangeEndIndex() >= static_cast<uint32_t>(0x4000)) && 
		(fallBackRule->get_RangeStartIndex() < static_cast<uint32_t>(0x5000)))
	{
		fallBackRule->AddFallBackFonts(u"Verdana");
	}
}

// Wir können auch vorhandene Regeln aus der Liste entfernen
if (rulesList->get_Count() > 0)
{
	rulesList->Remove(rulesList->idx_get(0));
}

auto pres = System::MakeObject<Presentation>(u"input.pptx");
// Assigning a prepared rules list for using
pres->get_FontsManager()->set_FontFallBackRulesCollection(rulesList);

// Rendering of thumbnail with using of initialized rules collection and saving to PNG
auto image = pres->get_Slide(0)->GetImage(1.f, 1.f);
image->Save(u"Slide_0.png", ImageFormat::Png);
image->Dispose();

pres->Dispose();