Anpassa PowerPoint‑teckensnitt i .NET

Översikt

Aspose.Slides låter dig använda anpassade teckensnitt i presentationer utan att installera dem i operativsystemet. Du kan läsa in teckensnitt från anpassade mappar, tillhandahålla teckensnitt för en specifik presentation via dokumentnivåteckensnittskällor, eller läsa in externa teckensnitt direkt från binär data.

Inlästa teckensnitt används när en presentation renderas eller exporteras, till exempel till PDF, bilder och andra stödda format. Detta hjälper till att hålla presentationsutdata konsekvent över olika miljöer. Artikeln förklarar också hur du granskar teckensnittsmapparna som används av Aspose.Slides och hur du rensar teckensnittscachen efter arbete med externa teckensnitt.

Registrering av anpassade teckensnitt för rendering är separat från inbäddning av teckensnitt i en PPTX‑fil. Om ett teckensnitt måste lagras i själva presentationen, använd inbäddningsfunktionerna för teckensnitt explicit.

Ett presentationstema kan referera till olika teckensnittsfamiljer för enskilda skriftsystem. Dessa mappningar lagrar teckensnittsnamn men installerar eller läser inte in teckensnittsfilen. Se Skriptspecifika temateckensnitt för att hantera mappningarna, och använd laddningsalternativen nedan för att göra de refererade teckensnitten tillgängliga för konsekvent rendering.

Läs in anpassade teckensnitt

Aspose.Slides låter dig läsa in teckensnitt som används i en presentation utan att installera dem på systemet. Detta påverkar exportutdata—såsom PDF, bilder och andra stödda format—så att de resulterande dokumenten ser konsekventa ut över olika miljöer. Teckensnitt läses in från anpassade kataloger.

  1. Ange en eller flera mappar som innehåller teckensnittsfiler.
  2. Anropa den statiska metoden FontsLoader.LoadExternalFonts för att läsa in teckensnitt från dessa mappar.
  3. Läs in och rendera/exportera presentationen.
  4. Anropa FontsLoader.ClearCache för att rensa teckensnittscachen.

Följande kodexempel visar hur teckensnittsladdningsprocessen fungerar:

using Aspose.Slides;
using Aspose.Slides.Export;

// Definiera mappar som innehåller anpassade teckensnittsfiler.
string[] fontFolders = { @"C:\MyFonts", @"D:\Fonts" };

// Läs in anpassade teckensnitt från de angivna mapparna.
FontsLoader.LoadExternalFonts(fontFolders);

using Presentation presentation = new Presentation("sample.pptx");

// Rendera/exportera presentationen (t.ex. till PDF, bilder eller andra format) med hjälp av de inlästa teckensnitten.
presentation.Save("output.pdf", SaveFormat.Pdf);

// Rensa teckensnittscachen när arbetet är slutfört.
FontsLoader.ClearCache();

Hämta anpassade teckensnittsmappar

Aspose.Slides tillhandahåller metoden GetFontFolders för att du ska kunna hitta teckensnittsmappar. Denna metod returnerar mappar som lagts till via LoadExternalFonts‑metoden samt systemteckensnittsmappar.

Denna C#‑kod visar hur du använder GetFontFolders:

using Aspose.Slides;

// Denna rad skriver ut mapparna som kontrolleras för teckensnittsfiler.
// Det är mappar som lagts till via LoadExternalFonts-metoden och systemteckensnittsmappar.
string[] fontFolders = FontsLoader.GetFontFolders();

Ange anpassade teckensnitt som används med en presentation

Aspose.Slides tillhandahåller egenskapen DocumentLevelFontSources för att du ska kunna ange externa teckensnitt som ska användas med presentationen.

Denna C#‑kod visar hur du använder egenskapen 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))
{
    // Arbeta med presentationen
    // CustomFont1, CustomFont2 och teckensnitt från mapparna assets\fonts & global\fonts samt deras undermappar är tillgängliga för presentationen
}

Hantera teckensnitt externt

Aspose.Slides tillhandahåller metoden LoadExternalFont(byte[] data) för att du ska kunna läsa in externa teckensnitt från binär data.

Denna C#‑kod demonstrerar processen för att läsa in teckensnitt från en byte‑array:

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(""))
    {
        // externt teckensnitt laddat under presentationens livstid
    }
}
finally
{
    FontsLoader.ClearCache();
}

För att låta ett matchande registrerat teckensnitt ha prioritet vid export utan att ta bort det inbäddade teckensnittet, se Prioritera registrerade teckensnitt framför inbäddade teckensnitt (.NET 26.11 eller senare).

Vanliga frågor

Påverkar anpassade teckensnitt export till alla format (PDF, PNG, SVG, HTML)?

Ja. Anslutna teckensnitt används av renderaren för alla exportformat.

Bäddas anpassade teckensnitt automatiskt i den resulterande PPTX‑filen?

Nej. Att registrera ett teckensnitt för rendering är inte detsamma som att bädda in det i en PPTX. Om du behöver att teckensnittet ska finnas i presentationsfilen måste du använda de explicita inbäddningsfunktionerna.

Kan jag styra fallback‑beteende när ett anpassat teckensnitt saknar vissa tecken?

Ja. Konfigurera teckensnittssubstitution, ersättningsregler, och fallback‑uppsättningar för att exakt ange vilket teckensnitt som används när den begärda tecknet saknas.

Kan jag använda teckensnitt i Linux/Docker‑behållare utan att installera dem systemomfattande?

Ja. Peka på dina egna teckensnittsmappor eller läs in teckensnitt från byte‑arrayer. Detta tar bort beroendet av systemteckensnittskataloger i container‑avbilden.

Obs för Linux/Docker: När du anropar FontsLoader.LoadExternalFonts, se till att varje post i directories‑arrayen innehåller en icke‑tom sökväg till en befintlig katalog. Om en miljövariabel som används för att konstruera en teckensnittssökväg är odefinierad eller tom, kan Aspose.Slides försöka lösa det tomma värdet som en fullständig sökväg, vilket resulterar i System.ArgumentException.

Vad gäller licensiering—kan jag bädda in valfritt anpassat teckensnitt utan begränsningar?

Du är ansvarig för att följa teckensnittslicenserna. Villkoren varierar; vissa licenser förbjuder inbäddning eller kommersiell användning. Granska alltid teckensnittets EULA innan du distribuerar resultat.