Verwalten von skript-spezifischen Theme-Schriften in Python

Übersicht

Ein Präsentationsthema kann verschiedene Schriftfamilien für unterschiedliche Schriftsysteme auswählen. Dadurch kann mehrsprachiger Text, der dennoch Themen­schriften verwendet, einem einheitlichen Schriftschema folgen und gleichzeitig geeignete Schriften für Kyrillisch, Arabisch, Japanisch, Georgisch, Thaana und andere Schriftsysteme nutzen.

Das FontScheme des Themas enthält eine Haupt‑Schriftfamilien‑Sammlung, die typischerweise für Überschriften verwendet wird, und eine Neben‑Sammlung, die üblicherweise für Fließtext genutzt wird. Zusätzlich zu ihren lateinischen und ostasiatischen Schrift‑Eigenschaften stellen beide Sammlungen über die Klasse Fonts Zuordnungen von Schriftsystem‑Tags zu Schriftfamiliennamen bereit.

Dieser Artikel zeigt, wie man diese Zuordnungen im Master‑Theme der Präsentation inspiziert und ändert und wie man überprüft, dass die Änderungen einen Speicher‑und‑Lade‑Zyklus überstehen.

Skript‑Tags verstehen

Die Methoden für Skript‑Schriften verwenden vier‑buchstabige BCP 47‑Skript‑Subtags, um Schriftsysteme zu identifizieren. Gängige Werte sind:

Skript‑Tag Schriftsystem
Cyrl Kyrillisch
Arab Arabisch
Hans Vereinfachtes Chinesisch
Jpan Japanisch
Geor Georgisch
Thaa Thaana

Diese Zuordnungen gehören zum Theme‑Schrift‑Schema, nicht zu einzelnen Textabschnitten. Eine Präsentation kann unterschiedliche Zuordnungen für die Haupt‑ und Neben‑Sammlungen definieren und kann für manche Skripte Zuordnungen weglassen.

Zugriff auf und Inspektion von Skript‑Schrift‑Zuordnungen

Verwenden Sie Presentation.master_theme, um das thema‑ Ebene‑Theme der Präsentation zu erhalten. Die Eigenschaften FontScheme.major und FontScheme.minor liefern die beiden Fonts‑Sammlungen.

Rufen Sie Fonts.get_script_font_map auf, um alle Zuordnungen einer Sammlung abzurufen. Um ein bestimmtes Schriftsystem zu suchen, rufen Sie Fonts.get_script_font mit dessen Skript‑Tag auf. get_script_font liefert None, wenn die Sammlung die angeforderte Zuordnung nicht definiert.

Zuordnungen ändern und Persistenz prüfen

Verwenden Sie Fonts.set_script_font, um eine Zuordnung zu erstellen oder die aktuelle Schriftfamilie zu ersetzen. Mit Fonts.remove_script_font können Sie eine Zuordnung entfernen.

Das folgende End‑zu‑End‑Beispiel liest alle vorhandenen Haupt‑ und Neben‑Zuordnungen, sucht die japanische Hauptschrift, ändert die kyrillische Hauptschrift, entfernt die Thaana‑Neben‑Zuordnung, speichert die Präsentation und öffnet sie erneut, um beide Änderungen zu prüfen. Damit der Entfernungs‑Schritt unabhängig vom Ausgangs‑Theme ist, erzeugt das Beispiel zunächst eine Thaana‑Zuordnung nur, wenn noch keine definiert ist.

import aspose.slides as slides


def print_script_font_map(label, fonts):
    print(label)
    for mapping in fonts.get_script_font_map():
        print(f"  {mapping.key}: {mapping.value}")


with slides.Presentation() as presentation:
    font_scheme = presentation.master_theme.font_scheme
    major_fonts = font_scheme.major
    minor_fonts = font_scheme.minor

    print_script_font_map("Existing major mappings:", major_fonts)
    print_script_font_map("Existing minor mappings:", minor_fonts)

    japanese_font = major_fonts.get_script_font("Jpan")
    if japanese_font is None:
        print("No major Japanese font is defined.")
    else:
        print(f"Major Japanese font: {japanese_font}")

    major_fonts.set_script_font("Cyrl", "Arial")

    if minor_fonts.get_script_font("Thaa") is None:
        minor_fonts.set_script_font("Thaa", "Arial")

    minor_fonts.remove_script_font("Thaa")
    presentation.save("script-font-mappings.pptx", slides.export.SaveFormat.PPTX)

with slides.Presentation("script-font-mappings.pptx") as saved_presentation:
    saved_major_fonts = saved_presentation.master_theme.font_scheme.major
    saved_minor_fonts = saved_presentation.master_theme.font_scheme.minor
    saved_cyrillic_font = saved_major_fonts.get_script_font("Cyrl")
    saved_thaana_font = saved_minor_fonts.get_script_font("Thaa")

    if saved_cyrillic_font == "Arial":
        print("The Cyrillic mapping was preserved.")
    else:
        print("The Cyrillic mapping was not preserved.")

    if saved_thaana_font is None:
        print("The Thaana mapping removal was preserved.")
    else:
        print("The Thaana mapping still exists.")

Die Prüfung nutzt dasselbe None‑Verhalten wie eine normale Suche: Nach dem Speichern der Entfernung gibt get_script_font("Thaa") für die Neben‑Sammlung None zurück.

Theme‑Zuordnungen von anderen Schrift‑Einstellungen unterscheiden

Skript‑spezifische Theme‑Zuordnungen wirken sich auf die Schriftauswahl aus, lösen jedoch ein anderes Problem als direkte Textformatierung, Substitution und Fallback:

Mechanismus Zweck Auswirkung der Änderung einer Theme‑Zuordnung
Skript‑spezifische Theme‑Schrift‑Zuordnung Wählt eine Haupt‑ oder Neben‑Theme‑Schrift für ein Schriftsystem. Text, der weiterhin die entsprechende Theme‑Schrift verwendet, kann zur neuen zugeordneten Familie aufgelöst werden.
Schriftart explizit einem Textabschnitt zugewiesen Fixiert die gewünschte Schriftfamilie für diesen Abschnitt statt auf das Theme zu vertrauen. Der Abschnitt bleibt möglicherweise unverändert, weil seine direkte Formatierung die Theme‑Auswahl überschreibt.
Schrift‑Substitution Ersetzt eine gewünschte Schrift, wenn sie nicht verfügbar ist oder eine Substitutions‑Regel greift. Sie greift nach der Anforderung einer Schrift; sie definiert die Theme‑Skript‑Zuordnung nicht neu.
Schrift‑Fallback Liefert Glyphen, die die ausgewählte Schrift nicht enthält, oft für bestimmte Unicode‑Bereiche. Sie ergänzt fehlende Glyphen; sie ändert die gespeicherte Theme‑Zuordnung nicht.

Weitere Informationen zu den letzten beiden Mechanismen finden Sie unter Font Substitution und Fallback Fonts.

Eine Änderung in Presentation.master_theme wirkt sich nur auf Inhalte aus, deren effektive Formatierung noch von diesem Theme abhängt. Text kann stattdessen ein Theme‑Override von einem Master, Layout oder einer Folie erben oder eine explizit zugewiesene Schrift verwenden. Prüfen Sie diese Ebenen, wenn das sichtbare Ergebnis nicht der Präsentations‑Theme‑Zuordnung folgt.

Zu­geordnete Schriften verfügbar machen und Ergebnis validieren

Eine Skript‑Zuordnung speichert nur den Namen einer Schriftfamilie; sie installiert oder lädt die zugehörige Schriftdatei nicht. Für konsistentes Rendern und Export muss jede zugeordnete Schrift in der Umgebung installiert oder Aspose.Slides über eine benutzerdefinierte Quelle wie FontsLoader.load_external_fonts oder LoadOptions.document_level_font_sources bereitgestellt werden. Siehe Custom Fonts für die verfügbaren Lademöglichkeiten.

Das Überprüfen der gespeicherten Zuordnung bestätigt nur, dass die Theme‑Definition beibehalten wurde. Sie beweist nicht, dass die Schrift verfügbar ist, alle erforderlichen Glyphen enthält oder das gewünschte Layout erzeugt. Rendern Sie repräsentativen Text für jedes benötigte Schriftsystem in ein Bild oder PDF und prüfen Sie die Ausgabe. So werden fehlende Schriften, unvollständige Glyphen‑Abdeckung, Fallback‑Verhalten und Layout‑Änderungen erkannt, bevor die Präsentation verteilt wird. Siehe Convert PowerPoint Presentations für Render‑ und Export‑Beispiele.

FAQ

Was liefert get_script_font, wenn ein Skript nicht zugeordnet ist?

Fonts.get_script_font liefert None, wenn die gewünschte Skript‑Zuordnung in dieser Haupt‑ oder Neben‑Schrift‑Sammlung nicht definiert ist.

Fügt set_script_font eine zweite Zuordnung hinzu, wenn das Skript bereits existiert?

Nein. Fonts.set_script_font erstellt die Zuordnung, wenn sie fehlt, und ersetzt die zugeordnete Schriftfamilie, wenn das gleiche Skript‑Tag bereits vorhanden ist.

Warum hat das Ändern einer Theme‑Zuordnung manchen Text nicht beeinflusst?

Der Text hat möglicherweise eine explizit zugewiesene Schrift, erbt ein anderes Theme über ein Override oder wird während des Renderns von Substitution oder Fallback betroffen. Eine Präsentations‑Level‑Skript‑Zuordnung steuert nur Text, dessen effektive Formatierung noch auf diese Theme‑Schrift‑Sammlung verweist.

Reicht das Speichern und erneute Öffnen aus, um mehrsprachige Ausgabe zu validieren?

Nein. Das erneute Öffnen bestätigt nur die Persistenz der Theme‑Daten. Zusätzlich sollte repräsentativer Text aus jedem benötigten Schriftsystem gerendert werden, um zu prüfen, ob die zugeordneten Schriften verfügbar sind und die notwendigen Glyphen enthalten.