Přizpůsobení písem v PowerPointu v C++
Přehled
Aspose.Slides vám umožňuje používat vlastní písma v prezentacích bez jejich instalace do operačního systému. Písma můžete načíst z vlastních složek, poskytnout písma pro konkrétní prezentaci prostřednictvím zdrojů písem na úrovni dokumentu nebo načíst externí písma přímo z binárních dat.
Načtená písma jsou používána při vykreslování nebo exportu prezentace, například do PDF, obrázků a dalších podporovaných formátů. To pomáhá zachovat konzistentní výstup prezentace v různých prostředích. Článek také vysvětluje, jak zkontrolovat složky písem používané Aspose.Slides a jak po práci s externími písmy vyprázdnit mezipaměť písem.
Registrace vlastních písem pro vykreslování je oddělena od vkládání písem do souboru PPTX. Pokud musí být písmo uloženo přímo v prezentaci, použijte výslovně funkce vkládání písem.
Motiv prezentace může odkazovat na různé rodiny písem pro jednotlivé psané systémy. Tato mapování ukládají názvy písem, ale neinstalují ani nenačítají soubory písem. Viz Script-Specific Theme Fonts pro správu mapování a použijte níže uvedené možnosti načítání, aby byly odkazovaná písma k dispozici pro konzistentní vykreslování.
Poznámka
Aspose Slides vám umožňuje načíst tato písma pomocí FontsLoader::LoadExternalFonts:
Načíst vlastní písma
Aspose.Slides vám umožňuje načíst písma používaná v prezentaci bez instalace do systému. To ovlivňuje výstup exportu – například PDF, obrázky a další podporované formáty – takže výsledné dokumenty vypadají konzistentně napříč prostředími. Písma jsou načítána z vlastních adresářů.
- Zadejte jednu nebo více složek, které obsahují soubory písem.
- Zavolejte statickou metodu FontsLoader::loadExternalFonts pro načtení písem z těchto složek.
- Načtěte a vykreslete/exportujte prezentaci.
- Zavolejte FontsLoader.clearCache pro vyprázdnění mezipaměti písem.
Následující ukázkový kód demonstruje proces načítání písem:
#include <DOM/Fonts/FontsLoader.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Definujte složky, které obsahují soubory vlastních písem.
String externalFontFolder = u"assets/fonts";
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );
// Načtěte vlastní písma ze zadaných složek.
FontsLoader::LoadExternalFonts(fontFolders);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// Vykreslete/exportujte prezentaci (např. do PDF, obrázků nebo jiných formátů) pomocí načtených písem.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();
// Vyprázdněte mezipaměť písem po dokončení práce.
FontsLoader::ClearCache();
Poznámka
FontsLoader::loadExternalFonts přidává další složky do cest pro hledání písem, ale nemění pořadí inicializace písem. Písma jsou inicializována v tomto pořadí:
- Výchozí cesta k písmům operačního systému.
- Cesty načtené přes FontsLoader.
Získat složky vlastních písem
Aspose.Slides poskytuje FontsLoader::GetFontFolders() pro nalezení složek písem. Tato metoda vrací složky přidané pomocí metody LoadExternalFonts a systémové složky písem.
Tento C++ kód ukazuje, jak použít metodu FontsLoader::GetFontFolders():
#include <DOM/Fonts/FontsLoader.h>
using namespace Aspose::Slides;
// Tento řádek vypisuje složky, které jsou kontrolovány pro soubory písem.
// Jedná se o složky přidané metodou LoadExternalFonts a systémové složky písem.
auto fontFolders = FontsLoader::GetFontFolders();
Zadat vlastní písma používaná v prezentaci
Aspose.Slides poskytuje vlastnost LoadOptions::set_DocumentLevelFontSources pro určení externích písem, která budou použita s prezentací.
Tento C++ kód ukazuje, jak použít vlastnost LoadOptions::set_DocumentLevelFontSources:
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IFontSources.h>
#include <system/io/file.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;
auto memoryFont1 = File::ReadAllBytes(u"customfonts\\CustomFont1.ttf");
auto memoryFont2 = File::ReadAllBytes(u"customfonts\\CustomFont2.ttf");
auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(System::MakeArray<String>({u"assets\\fonts", u"global\\fonts"}));
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(System::MakeArray<ArrayPtr<uint8_t>>({memoryFont1, memoryFont2}));
{
auto presentation = System::MakeObject<Presentation>(u"MyPresentation.pptx", loadOptions);
//práce s prezentací
//CustomFont1, CustomFont2 i fonty ze složek assets\fonts a global\fonts a jejich podsložek jsou k dispozici pro prezentaci
}
Spravovat písma externě
Aspose.Slides poskytuje metodu FontsLoader::LoadExternalFont pro načtení externích písem do pole bajtů.
Tento C++ kód demonstruje proces načítání písem do pole bajtů:
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IFontSources.h>
#include <system/io/file.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;
// Cesta k adresáři dokumentů
const String outPath = u"../out/SpecifyFontsUsedWithPresentation.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
ArrayPtr<String> fontsLocation = MakeArray<System::String>({ u"assets\\fonts", u"global\\fonts" });// ;
ArrayPtr<ArrayPtr<uint8_t>> memoryfontsLocation = MakeArray < ArrayPtr<uint8_t>>({ File::ReadAllBytes(u"../templates/CustomFont1.ttf"), File::ReadAllBytes(u"../templates/CustomFont2.ttf") });
SharedPtr < Aspose::Slides::LoadOptions > loadOptions = MakeObject <Aspose::Slides::LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(fontsLocation);
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(memoryfontsLocation);
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath, loadOptions);
FAQ
Ovlivňují vlastní písma export do všech formátů (PDF, PNG, SVG, HTML)?
Ano. Připojená písma jsou rendererem používána ve všech exportních formátech.
Jsou vlastní písma automaticky vložena do výsledného PPTX?
Ne. Registrace písma pro vykreslování není totéž jako vložení do PPTX. Pokud potřebujete, aby bylo písmo součástí souboru prezentace, musíte použít výslovné embedding features.
Mohu řídit chování náhradního písma, když vlastní písmo postrádá určité glify?
Ano. Nakonfigurujte font substitution, replacement rules a fallback sets pro přesné určení, které písmo se použije, když požadovaný glyph chybí.
Mohu používat písma v kontejnerech Linux/Docker bez jejich instalace na úrovni systému?
Ano. Odkazujte na své vlastní složky s písmy nebo načítejte písma z polí bajtů. Tím odstraníte jakoukoli závislost na systémových složkách písem v obrazu kontejneru.
Co licence – mohu vložit jakékoli vlastní písmo bez omezení?
Jste zodpovědní za dodržování licenčních podmínek písem. Podmínky se liší; některé licence zakazují vkládání nebo komerční využití. Vždy si před distribucí výstupů přečtěte EULA daného písma.