Dostosuj czcionki PowerPoint w C++
Przegląd
Aspose.Slides pozwala używać niestandardowych czcionek w prezentacjach bez instalacji ich w systemie operacyjnym. Możesz ładować czcionki z własnych folderów, udostępniać czcionki dla konkretnej prezentacji poprzez źródła czcionek na poziomie dokumentu lub ładować zewnętrzne czcionki bezpośrednio z danych binarnych.
Załadowane czcionki są używane przy renderowaniu lub eksportowaniu prezentacji, np. do PDF, obrazów i innych obsługiwanych formatów. Pomaga to zachować spójność wyjścia prezentacji w różnych środowiskach. Artykuł wyjaśnia również, jak sprawdzić foldery czcionek używane przez Aspose.Slides i jak wyczyścić pamięć podręczną czcionek po pracy ze czcionkami zewnętrznymi.
Rejestrowanie niestandardowych czcionek do renderowania jest oddzielne od osadzania czcionek w pliku PPTX. Jeśli czcionka ma być przechowywana wewnątrz samej prezentacji, użyj funkcji osadzania czcionek explicite.
Aspose Slides pozwala ładować te czcionki przy użyciu FontsLoader::LoadExternalFonts:
Ładowanie niestandardowych czcionek
Aspose.Slides pozwala ładować czcionki używane w prezentacji bez instalacji ich w systemie. Ma to wpływ na wynik eksportu — takiego jak PDF, obrazy i inne obsługiwane formaty — więc powstałe dokumenty wyglądają spójnie w różnych środowiskach. Czcionki są ładowane z własnych katalogów.
- Określ jeden lub więcej folderów zawierających pliki czcionek.
- Wywołaj statyczną metodę FontsLoader::loadExternalFonts, aby załadować czcionki z tych folderów.
- Załaduj i renderuj/wyeksportuj prezentację.
- Wywołaj FontsLoader.clearCache, aby wyczyścić pamięć podręczną czcionek.
Poniższy przykład kodu demonstruje proces ładowania czcionek:
// Zdefiniuj foldery zawierające niestandardowe pliki czcionek.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );
// Load custom fonts from the specified folders.
FontsLoader::LoadExternalFonts(fontFolders);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// Renderuj/wyeksportuj prezentację (np. do PDF, obrazów lub innych formatów) używając załadowanych czcionek.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();
// Wyczyść pamięć podręczną czcionek po zakończeniu pracy.
FontsLoader::ClearCache();
Uwaga
FontsLoader::loadExternalFonts dodaje dodatkowe foldery do ścieżek wyszukiwania czcionek, ale nie zmienia kolejności inicjalizacji czcionek.
Czcionki są inicjalizowane w następującej kolejności:
- Domyślna ścieżka czcionek systemu operacyjnego.
- Ścieżki załadowane za pomocą FontsLoader.
Pobieranie folderów czcionek niestandardowych
Aspose.Slides udostępnia FontsLoader::GetFontFolders(), aby umożliwić odnalezienie folderów czcionek. Ta metoda zwraca foldery dodane poprzez metodę LoadExternalFonts oraz systemowe foldery czcionek.
Ten kod C++ pokazuje, jak używać metody FontsLoader::GetFontFolders():
// Ten wiersz wypisuje foldery sprawdzane pod kątem plików czcionek.
// Są to foldery dodane metodą LoadExternalFonts oraz systemowe foldery czcionek.
auto fontFolders = FontsLoader::GetFontFolders();
Określanie niestandardowych czcionek używanych w prezentacji
Aspose.Slides udostępnia właściwość LoadOptions::set_DocumentLevelFontSources, aby umożliwić określenie zewnętrznych czcionek, które będą używane w prezentacji.
Ten kod C++ pokazuje, jak używać właściwości LoadOptions::set_DocumentLevelFontSources:
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);
//praca z prezentacją
//CustomFont1, CustomFont2 oraz czcionki z folderów assets\fonts i global\fonts oraz ich podfolderów są dostępne w prezentacji
}
Zarządzanie czcionkami zewnętrznie
Aspose.Slides udostępnia metodę FontsLoader::LoadExternalFont, aby umożliwić ładowanie zewnętrznych czcionek do tablicy bajtów.
Ten kod C++ demonstruje proces ładowania czcionki do tablicy bajtów:
// Ścieżka do katalogu dokumentów
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
Czy niestandardowe czcionki wpływają na eksport do wszystkich formatów (PDF, PNG, SVG, HTML)?
Tak. Połączone czcionki są używane przez renderer we wszystkich formatach eksportu.
Czy niestandardowe czcionki są automatycznie osadzane w wynikowym PPTX?
Nie. Rejestrowanie czcionki do renderowania nie jest tym samym co osadzanie jej w pliku PPTX. Jeśli potrzebujesz czcionki w obrębie pliku prezentacji, musisz użyć explicite funkcji osadzania.
Czy mogę kontrolować zachowanie zastępcze, gdy niestandardowa czcionka nie zawiera niektórych glifów?
Tak. Skonfiguruj zastępowanie czcionek, reguły zamiany oraz zestawy zastępcze, aby dokładnie określić, która czcionka zostanie użyta, gdy żądany glif jest nieobecny.
Czy mogę używać czcionek w kontenerach Linux/Docker bez instalacji systemowej?
Tak. Wskaż własne foldery czcionek lub ładować czcionki z tablic bajtów. Usuwa to zależność od systemowych katalogów czcionek w obrazie kontenera.
A co z licencjonowaniem—czy mogę osadzać dowolną czcionkę bez ograniczeń?
Jesteś odpowiedzialny za zgodność z licencją czcionki. Warunki różnią się; niektóre licencje zabraniają osadzania lub użycia komercyjnego. Zawsze sprawdzaj EULA czcionki przed rozpowszechnianiem wyników.