Verwalten von Skript-spezifischen Themen-Schriften in JavaScript
Überblick
Ein Präsentationsthema kann für verschiedene Schriftsysteme unterschiedliche Schriftfamilien auswählen. Dadurch kann mehrsprachiger Text, der weiterhin die Themen‑schriftarten verwendet, einem einheitlichen Schriftschema folgen und gleichzeitig geeignete Schriften für Kyrillisch, Arabisch, Japanisch, Georgisch, Thaana und andere Skripte nutzen.
Das [FontScheme] enthält eine Hauptschrift‑sammlung, die typischerweise für Überschriften verwendet wird, und eine Nebenschrift‑sammlung, die typischerweise für Fließtext verwendet wird. Zusätzlich zu ihren Latin‑ und Ostasien‑Schrifteinstellungen geben beide Sammlungen Zuordnungen von Schriftsystem‑Tags zu Schriftfamiliennamen über die Klasse [Fonts] frei.
Dieser Artikel zeigt, wie man diese Zuordnungen im Master‑Thema der Präsentation untersucht und ändert sowie überprüft, dass die Änderungen einen Speicher‑und‑Lade‑Durchlauf überstehen.
Skript‑Tags verstehen
Die Skript‑Schrift‑Methoden verwenden vier‑buchstabige BCP‑47‑Skript‑Subtags, um Schriftsysteme zu identifizieren. Häufige Werte sind:
| Skript‑Tag | Schriftsystem |
|---|---|
Cyrl |
Kyrillisch |
Arab |
Arabisch |
Hans |
Vereinfachtes Chinesisch |
Jpan |
Japanisch |
Geor |
Georgisch |
Thaa |
Thaana |
Diese Zuordnungen gehören zum Themen‑Schrift‑Schema, nicht zu einzelnen Textabschnitten. Eine Präsentation kann verschiedene Zuordnungen für die Haupt‑ und Nebensammlung definieren und für manche Skripte keine Zuordnung vorsehen.
Zugriff auf und Untersuchung von Skript‑Schriftzuordnungen
Verwenden Sie Presentation.getMasterTheme, um das themenbezogene Präsentations‑Thema zu erhalten. Die Methoden FontScheme.getMajor und FontScheme.getMinor geben die beiden Fonts‑Sammlungen zurück.
Rufen Sie Fonts.getScriptFontMap auf, um alle Zuordnungen einer Sammlung abzurufen. Um ein Schriftsystem nachzuschlagen, rufen Sie Fonts.getScriptFont mit dessen Skript‑Tag auf. getScriptFont gibt null zurück, wenn diese Sammlung die angeforderte Zuordnung nicht definiert.
Zuordnungen ändern und Persistenz überprüfen
Verwenden Sie Fonts.setScriptFont, um eine Zuordnung zu erstellen oder die aktuelle Schriftfamilie zu ersetzen. Verwenden Sie Fonts.removeScriptFont, um eine Zuordnung zu entfernen.
Das folgende End‑zu‑Ende‑Beispiel liest alle vorhandenen Haupt‑ und Neben‑Zuordnungen, sucht die japanische Hauptschriftart, ändert die kyrillische Hauptschriftart, entfernt die Thaana‑Neben‑Zuordnung, speichert die Präsentation und öffnet sie erneut, um beide Änderungen zu überprüfen. Um den Entfernungsschritt unabhängig vom ursprünglichen Thema zu machen, erstellt das Beispiel zunächst eine Thaana‑Zuordnung nur dann, wenn noch keine definiert ist.
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
var presentation = new aspose.slides.Presentation();
try {
var fontScheme = presentation.getMasterTheme().getFontScheme();
var majorFonts = fontScheme.getMajor();
var minorFonts = fontScheme.getMinor();
console.log("Existing major mappings:");
var majorMappings = majorFonts.getScriptFontMap().iterator();
while (majorMappings.hasNext()) {
var mapping = majorMappings.next();
console.log(" " + mapping.getKey() + ": " + mapping.getValue());
}
console.log("Existing minor mappings:");
var minorMappings = minorFonts.getScriptFontMap().iterator();
while (minorMappings.hasNext()) {
var mapping = minorMappings.next();
console.log(" " + mapping.getKey() + ": " + mapping.getValue());
}
var japaneseFont = majorFonts.getScriptFont("Jpan");
if (japaneseFont == null) {
console.log("No major Japanese font is defined.");
} else {
console.log("Major Japanese font: " + japaneseFont);
}
majorFonts.setScriptFont("Cyrl", "Arial");
if (minorFonts.getScriptFont("Thaa") == null) {
minorFonts.setScriptFont("Thaa", "Arial");
}
minorFonts.removeScriptFont("Thaa");
presentation.save("script-font-mappings.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
var savedPresentation = new aspose.slides.Presentation("script-font-mappings.pptx");
try {
var savedMajorFonts = savedPresentation.getMasterTheme().getFontScheme().getMajor();
var savedMinorFonts = savedPresentation.getMasterTheme().getFontScheme().getMinor();
var savedCyrillicFont = savedMajorFonts.getScriptFont("Cyrl");
var savedThaanaFont = savedMinorFonts.getScriptFont("Thaa");
if (savedCyrillicFont === "Arial") {
console.log("The Cyrillic mapping was preserved.");
} else {
console.log("The Cyrillic mapping was not preserved.");
}
if (savedThaanaFont == null) {
console.log("The Thaana mapping removal was preserved.");
} else {
console.log("The Thaana mapping still exists.");
}
} finally {
savedPresentation.dispose();
}
Die Überprüfung verwendet dasselbe null‑Verhalten wie ein regulärer Nachschlagvorgang: Nachdem die Entfernung gespeichert wurde, gibt getScriptFont("Thaa") null für die Neben‑Sammlung zurück.
Unterscheiden Sie Themen‑Zuordnungen von anderen Schrift‑Einstellungen
Skript‑spezifische Themen‑Zuordnungen wirken bei der Schriftauswahl mit, lösen jedoch ein anderes Problem als direkte Textformatierung, Substitution und Fallback:
| Mechanismus | Zweck | Auswirkung einer Änderung der Themen‑Zuordnung |
|---|---|---|
| Skript‑spezifische Themen‑Schriftzuordnung | Wählt eine Haupt‑ oder Neben‑Themaschrift für ein Schriftsystem aus. | Text, der weiterhin die entsprechende Themen‑Schrift verwendet, kann zur neuen zugeordneten Familie aufgelöst werden. |
| Schrift, die einem Textabschnitt explizit zugewiesen ist | Legt die gewünschte Schriftfamilie für diesen Abschnitt fest, anstatt sich auf das Thema zu verlassen. | Der Abschnitt kann unverändert bleiben, weil seine direkte Formatierung die Themenwahl überschreibt. |
| Schrift‑Substitution | Ersetzt eine angeforderte Schrift, wenn diese nicht verfügbar ist oder eine Substitutionsregel zutrifft. | Sie wirkt, nachdem eine Schrift angefordert wurde; sie definiert die Skript‑Zuordnung des Themas nicht neu. |
| Schrift‑Fallback | Stellt Glyphen bereit, die die ausgewählte Schrift nicht enthält, häufig für bestimmte Unicode‑Bereiche. | Sie füllt fehlende Glyphen‑Abdeckung; sie ändert die gespeicherte Themen‑Zuordnung nicht. |
Für weitere Informationen zu den letzten beiden Mechanismen siehe Font Substitution und Fallback Fonts.
Das Ändern einer Zuordnung in Presentation.getMasterTheme wirkt sich nur auf Inhalte aus, deren effektive Formatierung noch von diesem Thema abhängt. Text kann stattdessen eine Themen‑Überschreibung von einem Master, Layout oder Folie erben oder eine explizit zugewiesene Schrift verwenden. Untersuchen Sie diese Ebenen, wenn das sichtbare Ergebnis nicht der Präsentations‑Themen‑Zuordnung folgt.
Verfügbarmachen von zugeordneten Schriften und Ergebnis validieren
Eine Skript‑Zuordnung speichert einen Schriftfamilien‑Namen; sie installiert oder lädt die zugehörige Schriftdatei nicht. Für konsistentes Rendering und Export muss jede zugeordnete Schrift im Umfeld installiert oder Aspose.Slides über eine benutzerdefinierte Quelle wie FontsLoader.loadExternalFonts oder LoadOptions.getDocumentLevelFontSources bereitgestellt werden. Siehe Custom Fonts für die verfügbaren Lademöglichkeiten.
Das Überprüfen der gespeicherten Zuordnung bestätigt nur, dass die Themen‑Definition erhalten blieb. Es 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 erforderliche 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 Beispiele zu Rendering und Export.
FAQ
Was gibt getScriptFont zurück, wenn ein Skript nicht zugeordnet ist?
Fonts.getScriptFont gibt null zurück, wenn die angeforderte Skript‑Zuordnung in dieser Haupt‑ oder Neben‑Schrift‑Sammlung nicht definiert ist.
Fügt setScriptFont eine zweite Zuordnung hinzu, wenn das Skript bereits existiert?
Nein. Fonts.setScriptFont erstellt die Zuordnung, wenn sie fehlt, und ersetzt die zugeordnete Schriftfamilie, wenn derselbe Skript‑Tag bereits vorhanden ist.
Warum hat das Ändern einer Themen‑Zuordnung manchen Text nicht verändert?
Der Text kann eine explizit zugewiesene Schrift haben, ein anderes Thema über eine Überschreibung erben oder während des Renderns von Substitution oder Fallback betroffen sein. Eine Skript‑Zuordnung auf Präsentationsebene steuert nur Text, dessen effektive Formatierung noch auf diese Themen‑Schrift‑Sammlung verweist.
Reicht das Speichern und erneute Öffnen aus, um mehrsprachige Ausgabe zu validieren?
Nein. Das erneute Öffnen überprüft die Persistenz der Themen‑Daten. Außerdem sollten Sie repräsentativen Text aus jedem erforderlichen Schriftsystem rendern, um zu bestätigen, dass die zugeordneten Schriften verfügbar sind und die notwendigen Glyphen enthalten.