Konfigurera teckensnittssubstitution i presentationer med Python

Översikt

Font substitution gör att Aspose.Slides kan använda ett tillgängligt teckensnitt i stället för ett teckensnitt som inte kan nås när en presentation renderas eller konverteras. Substitutionen påverkar det renderade resultatet; den ändrar inte det teckensnitt som tilldelats presentationsinnehållet.

Du kan definiera vilket teckensnitt som ska användas när ett visst teckensnitt är otillgängligt, och du kan inspektera de substitutioner som Aspose.Slides kommer att göra under rendering. Detta hjälper till att hålla utdata konsekvent över miljöer med olika installerade teckensnitt.

Om ett teckensnitt är tillgängligt men saknar en dedikerad fet stil, se Hantera teckensnitt utan en dedikerad fet stil. Det avsnittet förklarar hur man rasteriserar den påverkade texten under PDF‑export och vilka konsekvenser det har för textmarkering, sökning och skalning.

Hämta teckensnittssubstitutioner

Använd metoden FontsManager.get_substitutions för att avgöra vilka teckensnitt som kommer att substitueras när presentationen renderas. Metoden returnerar FontSubstitutionInfo‑objekt som identifierar de ursprungliga och substituerade teckensnittsnamnen.

Följande Python‑exempel listar alla teckensnittssubstitutioner för en presentation:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    for substitution in presentation.fonts_manager.get_substitutions():
        print(f"{substitution.original_font_name} -> {substitution.substituted_font_name}")

Hämta teckensnittssubstitutioner för valda bilder

Använd FontsManager.get_substitutions med en lista av bildindex för att endast inspektera de substitutioner som krävs för att rendera specifika bilder. Detta är användbart när du renderar eller exporterar en del av en presentation, kontrollerar en stor presentation inkrementellt, lokaliserar bilder som beror på otillgängliga teckensnitt, förbereder ett minimalt teckensnittspaket för en server eller behållare, eller diagnostiserar renderingsskillnader utan att bearbeta orelaterade bilder.

Listan innehåller ett‑baserade bildindex: 1 identifierar den första bilden. Till skillnad från det är samlingen Presentation.slides noll‑baserad, så samma bild nås som presentation.slides[0]. Ha detta i åtanke när du bygger listan för att undvika fel med ett‑off‑ett‑fel.

Kalla på metoden via egenskapen Presentation.fonts_manager . Den returnerar endast de substitutioner som fastställts under rendering av de valda bilderna. Varje resultat är ett FontSubstitutionInfo‑objekt som innehåller de ursprungliga och substituerade teckensnittsnamnen. Resultatet återspeglar den aktuella teckensnittsmiljön, konfigurerade reservregler, substitutionsregler som lagras i en IFontSubstRuleCollection, och externt inlästa teckensnitt.

Den samma substitutionen kan krävas av mer än en vald bild. Avduplicera resultaten när du skapar ett teckensnittsinventarium eller en förhandsgranskningsrapport. Följande exempel rapporterar varje returnerad substitution och skapar sedan en sorterad lista över unika teckensnittsmappningar:

import aspose.slides as slides

with slides.Presentation("Presentation.pptx") as presentation:
    selected_slides = [1, 3, 5]
    substitutions = list(presentation.fonts_manager.get_substitutions(selected_slides))

    print("Substitutions for the selected slides:")
    for substitution in substitutions:
        print(f"{substitution.original_font_name} -> {substitution.substituted_font_name}")

    preflight_entries = [f"{substitution.original_font_name} -> {substitution.substituted_font_name}" for substitution in substitutions]
    unique_preflight_entries = {entry.casefold(): entry for entry in preflight_entries}
    sorted_preflight_entries = sorted(unique_preflight_entries.values(), key=str.casefold)

    print("Deduplicated font preflight report:")
    for entry in sorted_preflight_entries:
        print(entry)

Klassen FontsManager tillhandahåller båda formerna av metoden. Välj en enligt omfattningen av renderingsoperationen:

Metodanrop Använd när
get_substitutions with no arguments Du behöver substitutioner för hela presentationen.
get_substitutions with a list of slide indexes Du behöver substitutioner för ett valt intervall, inkrementell kontroll eller partiell export.

Ange teckensnittssubstitutionsregler

För att ange vilket teckensnitt Aspose.Slides ska använda när ett källteckensnitt är otillgängligt:

  1. Läs in presentationen.
  2. Skapa teckensnittsdefinitioner för käll‑ och substitutteckensnitten.
  3. Skapa en FontSubstRule med villkoret WHEN_INACCESSIBLE.
  4. Lägg till regeln i en FontSubstRuleCollection.
  5. Tilldela samlingen till egenskapen FontsManager.font_subst_rule_list.
  6. Rendera eller konvertera presentationen.

Följande Python‑exempel substituerar Arial för SomeRareFont när SomeRareFont är otillgängligt, och renderar sedan den första bilden för att verifiera resultatet. Det substituterade teckensnittet måste vara tillgängligt för Aspose.Slides.

import aspose.slides as slides

with slides.Presentation("Fonts.pptx") as presentation:
    source_font = slides.FontData("SomeRareFont")
    substitute_font = slides.FontData("Arial")
    substitution_rule = slides.FontSubstRule(source_font, substitute_font, slides.FontSubstCondition.WHEN_INACCESSIBLE)

    substitution_rules = slides.FontSubstRuleCollection()
    substitution_rules.add(substitution_rule)
    presentation.fonts_manager.font_subst_rule_list = substitution_rules

    with presentation.slides[0].get_image(1, 1) as image:
        image.save("slide.jpg", slides.ImageFormat.JPEG)

Begränsningar för matematiska ekvations‑teckensnitt

Teckensnittssubstitutionsregler är en del av den standardiserade teckensnittsväljarprocessen som används under rendering och konvertering. De fungerar för vanlig text när Aspose.Slides kan ersätta ett otillgängligt teckensnitt med det tillgängliga teckensnitt som anges i en regel.

Office‑Math‑ekvationer har ett ytterligare krav. Om en ekvation använder Cambria Math, kan Aspose.Slides behöva exakt det teckensnittet för att beräkna och rendera ekvationslayouten. En regel som substituerar ett annat matematiskt teckensnitt, såsom STIX Two Math, kan inte ersätta Cambria Math för detta ändamål, och rendering kan fortfarande rapportera att Cambria Math krävs.

För att rendera eller konvertera en sådan presentation, gör Cambria Math tillgängligt för Aspose.Slides. Installera det i operativsystemet eller läs in det som ett externt teckensnitt.

Denna begränsning gäller för ekvationslayout. Substitutionsreglerna som beskrivits ovan gäller fortfarande för vanlig presentations‑text.

Vanliga frågor

Vad är skillnaden mellan teckensnittsersättning och teckensnittssubstitution?

Teckensnittsersättning ändrar avsiktligt ett teckensnitt till ett annat i hela presentationen. Teckensnittssubstitution väljer ett teckensnitt för den renderade utskriften när det konfigurerade villkoret är uppfyllt, exempelvis när det ursprungliga teckensnittet är otillgängligt.

När tillämpas substitutionsregler?

Reglerna deltar i teckensnittsväljarsekvensen under rendering och konvertering. Med WHEN_INACCESSIBLE används en regel endast när Aspose.Slides inte kan komma åt källteckensnittet.

Vad händer när ett teckensnitt saknas och ingen substitutionsregel är konfigurerad?

Aspose.Slides väljer det närmaste tillgängliga teckensnittet enligt sin teckensnittsväljarprocess. Resultatet beror på vilka teckensnitt som finns i körmiljön.

Kan jag ladda in externa teckensnitt för att undvika substitution?

Ja. Du kan ladda in externa teckensnitt så att Aspose.Slides kan använda dem under rendering och konvertering.

Distribuerar Aspose teckensnitt med biblioteket?

Nej. Du är ansvarig för att tillhandahålla teckensnitt och följa deras licenser.

Kan substitutionsresultat skilja sig mellan Windows, Linux och macOS?

Ja. Installerade teckensnitt och sökvägar för teckensnitt skiljer sig åt mellan operativsystem, så ett teckensnitt som är tillgängligt på en maskin kan kräva substitution på en annan.

Hur kan jag göra teckensnittsväljning konsekvent i batchkonverteringar?

Använd samma teckensnittsfiler och versioner på varje maskin eller behållare, ladda in erforderliga externa teckensnitt, och bädda in teckensnitt när licensen tillåter. Du kan också anropa FontsManager.get_substitutions före export för att identifiera oväntade substitutioner.