Personalizza i font di PowerPoint in .NET
Panoramica
Aspose.Slides consente di utilizzare font personalizzati nelle presentazioni senza installarli sul sistema operativo. È possibile caricare i font da cartelle personalizzate, fornire font per una presentazione specifica tramite font a livello di documento, oppure caricare font esterni direttamente da dati binari.
I font caricati vengono utilizzati quando una presentazione viene renderizzata o esportata, ad esempio in PDF, immagini e altri formati supportati. Ciò aiuta a mantenere coerente l’output della presentazione tra ambienti diversi. L’articolo spiega anche come ispezionare le cartelle dei font usate da Aspose.Slides e come svuotare la cache dei font dopo aver lavorato con font esterni.
Registrare font personalizzati per il rendering è separato dall’incorporamento dei font in un file PPTX. Se un font deve essere memorizzato all’interno della presentazione stessa, utilizzare esplicitamente le funzionalità di incorporamento dei font.
Un tema di presentazione può fare riferimento a diverse famiglie di font per sistemi di scrittura individuali. Queste mappature memorizzano i nomi dei font ma non installano né caricano i file dei font. Vedi Script-Specific Theme Fonts per gestire le mappature e utilizza le opzioni di caricamento qui sotto per rendere disponibili i font di riferimento per un rendering coerente.
Note
Aspose Slides consente di caricare questi font utilizzando il metodo FontsLoader.LoadExternalFonts:
Carica Font Personalizzati
Aspose.Slides consente di caricare i font utilizzati in una presentazione senza installarli sul sistema. Ciò influisce sull’output di esportazione—come PDF, immagini e altri formati supportati—affinché i documenti risultanti appaiano coerenti tra ambienti. I font vengono caricati da directory personalizzate.
- Specificare una o più cartelle che contengono i file dei font.
- Chiamare il metodo statico FontsLoader.LoadExternalFonts per caricare i font da tali cartelle.
- Caricare e renderizzare/esportare la presentazione.
- Chiamare FontsLoader.ClearCache per svuotare la cache dei font.
Il seguente esempio di codice dimostra il processo di caricamento dei font:
using Aspose.Slides;
using Aspose.Slides.Export;
// Definisci le cartelle che contengono i file dei font personalizzati.
string[] fontFolders = { @"C:\MyFonts", @"D:\Fonts" };
// Carica i font personalizzati dalle cartelle specificate.
FontsLoader.LoadExternalFonts(fontFolders);
using Presentation presentation = new Presentation("sample.pptx");
// Esegui il rendering/esportazione della presentazione (ad es., in PDF, immagini o altri formati) utilizzando i font caricati.
presentation.Save("output.pdf", SaveFormat.Pdf);
// Svuota la cache dei font dopo aver terminato il lavoro.
FontsLoader.ClearCache();
Note
FontsLoader.LoadExternalFonts aggiunge cartelle aggiuntive ai percorsi di ricerca dei font, ma non modifica l’ordine di inizializzazione dei font. I font vengono inizializzati in questo ordine:
- Il percorso dei font predefinito del sistema operativo.
- I percorsi caricati tramite FontsLoader.
Ottieni Cartelle dei Font Personalizzati
Aspose.Slides fornisce il metodo GetFontFolders per consentire di trovare le cartelle dei font. Questo metodo restituisce le cartelle aggiunte tramite il metodo LoadExternalFonts e le cartelle di sistema dei font.
Questo codice C# mostra come utilizzare GetFontFolders:
using Aspose.Slides;
// Questa riga restituisce le cartelle che vengono controllate per i file dei font.
// Si tratta di cartelle aggiunte tramite il metodo LoadExternalFonts e le cartelle dei font di sistema.
string[] fontFolders = FontsLoader.GetFontFolders();
Specificare i Font Personalizzati Usati con una Presentazione
Aspose.Slides fornisce la proprietà DocumentLevelFontSources per consentire di specificare i font esterni che saranno utilizzati con la presentazione.
Questo codice C# mostra come utilizzare la proprietà DocumentLevelFontSources:
using Aspose.Slides;
byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");
LoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts", "global\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { memoryFont1, memoryFont2 };
using (IPresentation presentation = new Presentation("MyPresentation.pptx", loadOptions))
{
// Lavora con la presentazione
// CustomFont1, CustomFont2, e i font dalle cartelle assets\fonts e global\fonts e le loro sottocartelle sono disponibili per la presentazione
}
Gestire i Font Esternamente
Aspose.Slides fornisce il metodo LoadExternalFont(byte[] data) per consentire di caricare font esterni da dati binari.
Questo codice C# dimostra il processo di caricamento del font da array di byte:
using Aspose.Slides;
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALN.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNBI.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNI.TTF"));
try
{
using (Presentation pres = new Presentation(""))
{
// font esterno caricato durante la durata della presentazione
}
}
finally
{
FontsLoader.ClearCache();
}
Per consentire a un font registrato corrispondente di avere la precedenza durante l’esportazione senza rimuovere il font incorporato, vedere Prefer Registered Fonts over Embedded Fonts (.NET 26.11 o successive).
FAQ
I font personalizzati influiscono sull’esportazione in tutti i formati (PDF, PNG, SVG, HTML)?
Sì. I font collegati sono utilizzati dal renderer in tutti i formati di esportazione.
I font personalizzati vengono incorporati automaticamente nel PPTX risultante?
No. Registrare un font per il rendering non è la stessa cosa dell’incorporarlo in un PPTX. Se è necessario che il font sia contenuto nel file della presentazione, occorre utilizzare le esplicite embedding features.
Posso controllare il comportamento di fallback quando un font personalizzato non contiene alcuni glifi?
Sì. Configura font substitution, replacement rules e fallback sets per definire esattamente quale font viene utilizzato quando il glifo richiesto è mancante.
Posso usare i font nei contenitori Linux/Docker senza installarli a livello di sistema?
Sì. Puntare alle proprie cartelle dei font o caricare i font da array di byte. Questo elimina qualsiasi dipendenza dalle directory di sistema dei font nell’immagine del contenitore.
Nota per Linux/Docker: Quando si chiama
FontsLoader.LoadExternalFonts, assicurarsi che ogni voce nell’arraydirectoriescontenga un percorso non vuoto verso una directory esistente. Se una variabile d’ambiente usata per costruire un percorso del font è indefinita o vuota, Aspose.Slides potrebbe tentare di risolvere il valore vuoto come percorso completo, generando unSystem.ArgumentException.
E per quanto riguarda le licenze—posso incorporare qualsiasi font personalizzato senza restrizioni?
Sei responsabile della conformità alle licenze dei font. I termini variano; alcune licenze vietano l’incorporamento o l’uso commerciale. Controlla sempre la EULA del font prima di distribuire i risultati.