Incorporare i font nelle presentazioni in .NET
Introduzione
Incorporare i font in PowerPoint garantisce che la tua presentazione mantenga l’aspetto previsto su sistemi diversi. Che tu utilizzi font unici per la creatività o standard, l’incorporamento dei font evita interruzioni di testo e layout.
Se hai utilizzato un font di terze parti o non standard perché sei stato creativo con il tuo lavoro, hai ancora più motivi per incorporare il font. Altrimenti (senza font incorporati), i testi o i numeri nelle tue diapositive, il layout, lo stile, ecc. potrebbero cambiare o trasformarsi in rettangoli incomprensibili.
Utilizza le classi FontsManager, FontData e Compress per gestire i font incorporati.
Recupera e rimuovi i font incorporati
Recupera o rimuovi i font incorporati da una presentazione senza sforzo con i metodi GetEmbeddedFonts e RemoveEmbeddedFont.
Questo codice C# mostra come recuperare e rimuovere i font incorporati da una presentazione:
using (Presentation presentation = new Presentation("EmbeddedFonts.pptx"))
{
ISlide slide = presentation.Slides[0];
// Esegue il rendering di una diapositiva contenente un frame di testo che utilizza il font incorporato "FunSized"
using (IImage image = slide.GetImage(new Size(960, 720)))
{
image.Save("picture1_out.png", ImageFormat.Png);
}
IFontsManager fontsManager = presentation.FontsManager;
IFontData[] embeddedFonts = fontsManager.GetEmbeddedFonts();
// Trova il font "Calibri"
IFontData funSizedEmbeddedFont = Array.Find(embeddedFonts, delegate (IFontData data)
{
return data.FontName == "Calibri";
});
// Rimuove il font "Calibri"
fontsManager.RemoveEmbeddedFont(funSizedEmbeddedFont);
// Esegue il rendering della presentazione; il font "Calibri" viene sostituito con uno esistente
using (IImage image = slide.GetImage(new Size(960, 720)))
{
image.Save("picture2_out.png", ImageFormat.Png);
}
// Salva la presentazione senza il font "Calibri" incorporato su disco
presentation.Save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
}
Aggiungi font incorporati
Utilizzando l’enumerazione EmbedFontCharacters e le due sovraccariche del metodo AddEmbeddedFont, puoi selezionare la regola di (incorporamento) preferita per incorporare i font in una presentazione. Questo codice C# mostra come incorporare e aggiungere font a una presentazione:
// Carica la presentazione
Presentation presentation = new Presentation("Fonts.pptx");
IFontData[] allFonts = presentation.FontsManager.GetFonts();
IFontData[] embeddedFonts = presentation.FontsManager.GetEmbeddedFonts();
foreach (IFontData font in allFonts)
{
if (!embeddedFonts.Contains(font))
{
presentation.FontsManager.AddEmbeddedFont(font, EmbedFontCharacters.All);
}
}
// Salva la presentazione su disco
presentation.Save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);
Comprimi font incorporati
Ottimizza le dimensioni del file comprimendo i font incorporati usando CompressEmbeddedFonts.
Codice di esempio per la compressione:
using (Presentation pres = new Presentation("pres.pptx"))
{
Aspose.Slides.LowCode.Compress.CompressEmbeddedFonts(pres);
pres.Save("pres-out.pptx", SaveFormat.Pptx);
}
FAQ
Come posso capire se un font specifico nella presentazione verrà comunque sostituito durante il rendering nonostante l’incorporamento?
Controlla le informazioni sulla sostituzione nel gestore dei font e le regole di fallback/sostituzione: se il font non è disponibile o è limitato, verrà utilizzato un fallback.
Vale la pena incorporare i font “di sistema” come Arial/Calibri?
Di solito no—sono quasi sempre disponibili. Tuttavia, per una piena portabilità in ambienti “leggeri” (Docker, un server Linux senza font preinstallati), incorporare i font di sistema può eliminare il rischio di sostituzioni inaspettate.