Personalizar fuentes de PowerPoint en С++
Aspose Slides le permite cargar estas fuentes usando FontsLoader::LoadExternalFonts:
Cargar fuentes personalizadas
Aspose.Slides le permite cargar fuentes utilizadas en una presentación sin instalarlas en el sistema. Esto afecta la salida de exportación —como PDF, imágenes y otros formatos compatibles— de modo que los documentos resultantes se vean consistentes en todos los entornos. Las fuentes se cargan desde directorios personalizados.
- Especifique una o más carpetas que contengan los archivos de fuentes.
- Llame al método estático FontsLoader::loadExternalFonts para cargar fuentes desde esas carpetas.
- Cargue y renderice/exporte la presentación.
- Llame a FontsLoader.clearCache para borrar la caché de fuentes.
El siguiente ejemplo de código muestra el proceso de carga de fuentes:
// Definir carpetas que contienen archivos de fuentes personalizados.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );
// Cargar fuentes personalizadas desde las carpetas especificadas.
FontsLoader::LoadExternalFonts(fontFolders);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// Renderizar/exportar la presentación (p.ej., a PDF, imágenes u otros formatos) usando las fuentes cargadas.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();
// Borrar la caché de fuentes después de que el trabajo haya finalizado.
FontsLoader::ClearCache();
Note
FontsLoader::loadExternalFonts añade carpetas adicionales a las rutas de búsqueda de fuentes, pero no cambia el orden de inicialización de fuentes. Las fuentes se inicializan en este orden:
- La ruta de fuentes predeterminada del sistema operativo.
- Las rutas cargadas a través de FontsLoader.
Obtener carpetas de fuentes personalizadas
Aspose.Slides proporciona FontsLoader::GetFontFolders() para que pueda encontrar carpetas de fuentes. Este método devuelve las carpetas añadidas mediante el método LoadExternalFonts y las carpetas de fuentes del sistema.
Este código C++ le muestra cómo usar el método FontsLoader::GetFontFolders():
// Esta línea muestra las carpetas que se comprueban para archivos de fuentes.
// Son carpetas añadidas mediante el método LoadExternalFonts y carpetas de fuentes del sistema.
auto fontFolders = FontsLoader::GetFontFolders();
Especificar fuentes personalizadas usadas con una presentación
Aspose.Slides proporciona la propiedad LoadOptions::set_DocumentLevelFontSources para que pueda especificar fuentes externas que se usarán con la presentación.
Este código C++ le muestra cómo usar la propiedad 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);
//trabajar con la presentación
//CustomFont1, CustomFont2, así como fuentes de las carpetas assets\fonts y global\fonts y sus subcarpetas están disponibles para la presentación
}
Gestionar fuentes externamente
Aspose.Slides proporciona el método FontsLoader::LoadExternalFont para que pueda cargar fuentes externas en una matriz de bytes.
Este código C++ demuestra el proceso de carga de fuentes en una matriz de bytes:
// La ruta al directorio de documentos
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);
Preguntas frecuentes
¿Afectan las fuentes personalizadas a la exportación a todos los formatos (PDF, PNG, SVG, HTML)?
Sí. Las fuentes vinculadas son utilizadas por el motor de renderizado en todos los formatos de exportación.
¿Se incrustan automáticamente las fuentes personalizadas en el PPTX resultante?
No. Registrar una fuente para el renderizado no es lo mismo que incrustarla en un PPTX. Si necesita que la fuente se incluya dentro del archivo de presentación, debe usar las funcionalidades de incrustación.
¿Puedo controlar el comportamiento de sustitución cuando una fuente personalizada carece de ciertos glifos?
Sí. Configure la sustitución de fuentes, las reglas de reemplazo y los conjuntos de fuentes de respaldo para definir exactamente qué fuente se usa cuando el glifo solicitado no está disponible.
¿Puedo usar fuentes en contenedores Linux/Docker sin instalarlas en todo el sistema?
Sí. Apunte a sus propias carpetas de fuentes o cargue fuentes desde matrices de bytes. Esto elimina cualquier dependencia de los directorios de fuentes del sistema en la imagen del contenedor.
¿Qué pasa con la licencia—puedo incrustar cualquier fuente personalizada sin restricciones?
Usted es responsable del cumplimiento de la licencia de la fuente. Los términos varían; algunas licencias prohíben la incrustación o el uso comercial. Siempre revise la EULA de la fuente antes de distribuir los resultados.