Διαχειριστείτε τις Γραμματοσειρές Θέματος Ειδικές για Σενάριο σε .NET
Επισκόπηση
Ένα θέμα παρουσίασης μπορεί να επιλέγει διαφορετικές οικογένειες γραμματοσειρών για διαφορετικά συστήματα γραφής. Αυτό επιτρέπει σε πολυγλωσσικό κείμενο που εξακολουθεί να χρησιμοποιεί τις γραμματοσειρές του θέματος να ακολουθεί ένα ενοποιημένο σχήμα γραμματοσειρών ενώ χρησιμοποιεί κατάλληλες γραμματοσειρές για κυριλλικά, αραβικά, ιαπωνικά, γεωργιανά, θαανα και άλλα σενάρια.
Το IFontScheme του θέματος περιλαμβάνει μια κύρια συλλογή γραμματοσειρών, συνήθως χρησιμοποιούμενη για τίτλους, και μια δευτερεύουσα συλλογή γραμματοσειρών, συνήθως για το κύριο κείμενο. Εκτός από τις ιδιότητες γραμματοσειρών για λατινικά και ανατολικές ασιατικές γραμματοσειρές, και οι δύο συλλογές εκθέτουν αντιστοιχίσεις από ετικέτες συστημάτων γραφής σε ονόματα οικογενειών γραμματοσειρών μέσω της διεπαφής IFonts.
Αυτό το άρθρο δείχνει πώς να εξετάζετε και να τροποποιείτε αυτές τις αντιστοιχίσεις στο κύριο θέμα της παρουσίασης και να επαληθεύετε ότι οι αλλαγές παραμένουν μετά από αποθήκευση‑και‑επανφόρτωση.
Κατανόηση Ετικετών Σεναρίου
Οι μέθοδοι γραμματοσειράς σεναρίου χρησιμοποιούν υποετικέτες σεναρίου BCP 47 τεσσάρων γραμμάτων για την ταυτοποίηση συστημάτων γραφής. Συνηθισμένες τιμές περιλαμβάνουν:
| Ετικέτα Σεναρίου | Σύστημα γραφής |
|---|---|
Cyrl |
Κυριλλικά |
Arab |
Αραβικά |
Hans |
Απλοποιημένα Κινέζικα |
Jpan |
Ιαπωνικά |
Geor |
Γεωργιανά |
Thaa |
Θάανα |
Αυτές οι αντιστοιχίσεις ανήκουν στο σχήμα γραμματοσειρών του θέματος, όχι σε μεμονωμένα τμήματα κειμένου. Μια παρουσίαση μπορεί να ορίζει διαφορετικές αντιστοιχίσεις για τις κύριες και δευτερεύουσες συλλογές και μπορεί να παραλείπει αντιστοιχίσεις για ορισμένα σενάρια.
Πρόσβαση και Επιθεώρηση Αντιστοιχίσεων Γραμματοσειρών Σεναρίου
Χρησιμοποιήστε το Presentation.MasterTheme για να αποκτήσετε πρόσβαση στο επίπεδο‑θέματος της παρουσίασης. Οι ιδιότητες FontScheme.Major και FontScheme.Minor επιστρέφουν τις δύο συλλογές IFonts.
Καλέστε τη μέθοδο IFonts.GetScriptFontMap για να ανακτήσετε όλες τις αντιστοιχίσεις από μια συλλογή. Για να αναζητήσετε ένα σύστημα γραφής, καλέστε το IFonts.GetScriptFont με την ετικέτα του σεναρίου. Η GetScriptFont επιστρέφει null όταν η συλλογή δεν ορίζει την απαιτούμενη αντιστοίχηση.
Τροποποίηση Αντιστοιχίσεων και Επαλήθευση Διατήρησης
Χρησιμοποιήστε το IFonts.SetScriptFont για να δημιουργήσετε μια αντιστοίχηση ή να αντικαταστήσετε την τρέχουσα οικογένεια γραμματοσειρών. Χρησιμοποιήστε το IFonts.RemoveScriptFont για να αφαιρέσετε μια αντιστοίχηση.
Το παρακάτω ολοκληρωμένο παράδειγμα διαβάζει όλες τις υπάρχουσες κύριες και δευτερεύουσες αντιστοιχίσεις, αναζητά τη κύρια γραμματοσειρά για τα ιαπωνικά, αλλάζει τη κύρια γραμματοσειρά για τα κυριλλικά, αφαιρεί τη δευτερεύουσα αντιστοίχηση για τη Θάανα, αποθηκεύει την παρουσίαση και την ανοίγει ξανά για να επιβεβαιώσει και τις δύο αλλαγές. Για να γίνει το βήμα αφαίρεσης ανεξάρτητο από το αρχικό θέμα, το παράδειγμα πρώτα δημιουργεί μια αντιστοίχηση Θάανα μόνο όταν δεν υπάρχει ήδη.
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
static void PrintScriptFontMap(string label, IFonts fonts)
{
Console.WriteLine(label);
foreach (var mapping in fonts.GetScriptFontMap())
{
Console.WriteLine($" {mapping.Key}: {mapping.Value}");
}
}
using var presentation = new Presentation();
var fontScheme = presentation.MasterTheme.FontScheme;
var majorFonts = fontScheme.Major;
var minorFonts = fontScheme.Minor;
PrintScriptFontMap("Existing major mappings:", majorFonts);
PrintScriptFontMap("Existing minor mappings:", minorFonts);
var japaneseFont = majorFonts.GetScriptFont("Jpan");
if (japaneseFont is null)
{
Console.WriteLine("No major Japanese font is defined.");
}
else
{
Console.WriteLine($"Major Japanese font: {japaneseFont}");
}
majorFonts.SetScriptFont("Cyrl", "Arial");
if (minorFonts.GetScriptFont("Thaa") is null)
{
minorFonts.SetScriptFont("Thaa", "Arial");
}
minorFonts.RemoveScriptFont("Thaa");
presentation.Save("script-font-mappings.pptx", SaveFormat.Pptx);
using var savedPresentation = new Presentation("script-font-mappings.pptx");
var savedMajorFonts = savedPresentation.MasterTheme.FontScheme.Major;
var savedMinorFonts = savedPresentation.MasterTheme.FontScheme.Minor;
var savedCyrillicFont = savedMajorFonts.GetScriptFont("Cyrl");
var savedThaanaFont = savedMinorFonts.GetScriptFont("Thaa");
if (savedCyrillicFont == "Arial")
{
Console.WriteLine("The Cyrillic mapping was preserved.");
}
else
{
Console.WriteLine("The Cyrillic mapping was not preserved.");
}
if (savedThaanaFont is null)
{
Console.WriteLine("The Thaana mapping removal was preserved.");
}
else
{
Console.WriteLine("The Thaana mapping still exists.");
}
Η επαλήθευση χρησιμοποιεί την ίδια συμπεριφορά null όπως μια κανονική αναζήτηση: μετά την αποθήκευση της αφαίρεσης, η GetScriptFont("Thaa") επιστρέφει null για τη δευτερεύουσα συλλογή.
Διαχωρισμός Αντιστοιχίσεων Θέματος από Άλλες Ρυθμίσεις Γραμματοσειράς
Οι αντιστοιχίσεις γραμματοσειράς θέματος βάσει σεναρίου συμμετέχουν στην επιλογή γραμματοσειράς, αλλά λύνουν διαφορετικό πρόβλημα από την άμεση μορφοποίηση κειμένου, την αντικατάσταση και την εφεδρεία:
| Μηχανισμός | Σκοπός | Αποτέλεσμα αλλαγής μιας αντιστοίχησης θέματος |
|---|---|---|
| Αντιστοίχηση γραμματοσειράς θέματος βάσει σεναρίου | Επιλέγει μια κύρια ή δευτερεύουσα γραμματοσειρά θέματος για ένα σύστημα γραφής. | Το κείμενο που εξακολουθεί να χρησιμοποιεί τη σχετική γραμματοσειρά θέματος μπορεί να αντιστοιχιστεί στη νέα οικογένεια. |
| Γραμματοσειρά που έχει εκχωρηθεί ρητά σε ένα τμήμα κειμένου | Καθορίζει την επιλεγμένη οικογένεια γραμματοσειρών σε αυτό το τμήμα αντί να εξαρτάται από το θέμα. | Το τμήμα μπορεί να παραμείνει αμετάβλητο επειδή η άμεση μορφοποίηση παρακάμπτει την επιλογή του θέματος. |
| Αντικατάσταση γραμματοσειράς | Αντικαθιστά μια ζητούμενη γραμματοσειρά όταν αυτή δεν είναι διαθέσιμη ή όταν εφαρμόζεται κανόνας αντικατάστασης. | Λειτουργεί μετά την αίτηση μιας γραμματοσειράς· δεν επανακαθορίζει την αντιστοίχηση σεναρίου του θέματος. |
| Ανακατεύθυνση γραμματοσειράς | Παρέχει γλύφους που δεν περιέχει η επιλεγμένη γραμματοσειρά, συχνά για συγκεκριμένα εύρη Unicode. | Συμπληρώνει την έλλειψη γλύφων· δεν αλλάζει την αποθηκευμένη αντιστοίχηση θέματος. |
Για περισσότερες πληροφορίες σχετικά με τους δύο τελευταίους μηχανισμούς, δείτε Αντικατάσταση Γραμματοσειράς και Γραμματοσειρές Εφεδρείας.
Η αλλαγή μιας αντιστοίχησης στο Presentation.MasterTheme επηρεάζει μόνο το περιεχόμενο του οποίου η αποτελεσματική μορφοποίηση εξαρτάται ακόμη από αυτό το θέμα. Το κείμενο μπορεί να κληρονομεί μια υπέρβαση θέματος από ένα master, layout ή διαφάνεια, ή να χρησιμοποιεί μια ρητά εκχωρημένη γραμματοσειρά. Ελέγξτε αυτά τα επίπεδα όταν το ορατό αποτέλεσμα δεν ακολουθεί την αντιστοίχηση του επιπέδου‑παρουσίασης.
Καταστήστε τις Αντιστοιχισμένες Γραμματοσειρές Διαθέσιμες και Επικυρώστε το Αποτέλεσμα
Μια αντιστοίχηση σεναρίου αποθηκεύει μόνο το όνομα της οικογένειας γραμματοσειράς· δεν εγκαθιστά ή φορτώνει το αντίστοιχο αρχείο γραμματοσειράς. Για συνεπή απόδοση και εξαγωγή, κάθε αντιστοιχισμένη γραμματοσειρά πρέπει να είναι εγκατεστημένη στο περιβάλλον ή να παρέχεται στην Aspose.Slides μέσω μιας προσαρμοσμένης πηγής, όπως το FontsLoader.LoadExternalFonts ή το LoadOptions.DocumentLevelFontSources. Δείτε την ενότητα Custom Fonts για τις διαθέσιμες επιλογές φόρτωσης.
Η επαλήθευση της αποθηκευμένης αντιστοίχησης επιβεβαιώνει μόνο ότι ο ορισμός του θέματος διατηρήθηκε. Δεν αποδεικνύει ότι η γραμματοσειρά είναι διαθέσιμη, περιέχει όλους τους απαιτούμενους γλύφους ή παράγει τη ζητούμενη διάταξη. Αποδώστε αντιπροσωπευτικό κείμενο για κάθε απαιτούμενο σύστημα γραφής σε εικόνα ή PDF και ελέγξτε το αποτέλεσμα. Αυτό εντοπίζει ελλείψεις γραμματοσειρών, ελλιπείς γλύφους, συμπεριφορά εφεδρείας και αλλαγές διάταξης προτού η παρουσίαση διανεμηθεί. Δείτε το Convert PowerPoint Presentations για παραδείγματα απόδοσης και εξαγωγής.
Συχνές Ερωτήσεις
Τι επιστρέφει η GetScriptFont όταν ένα σενάριο δεν είναι αντιστοιχισμένο;
Η IFonts.GetScriptFont επιστρέφει null όταν η ζητούμενη αντιστοίχηση σεναρίου δεν ορίζεται σε αυτή τη κύρια ή δευτερεύουσα συλλογή γραμματοσειρών.
Η SetScriptFont προσθέτει δεύτερη αντιστοίχηση όταν το σενάριο υπάρχει ήδη;
Όχι. Η IFonts.SetScriptFont δημιουργεί την αντιστοίχηση όταν λείπει και αντικαθιστά την υπάρχουσα οικογένεια γραμματοσειρών όταν η ίδια ετικέτα σεναρίου είναι ήδη παρούσα.
Γιατί η αλλαγή μιας αντιστοίχησης θέματος δεν άλλαξε κάποιο κείμενο;
Το κείμενο μπορεί να έχει μια ρητά εκχωρημένη γραμματοσειρά, να κληρονομεί διαφορετικό θέμα μέσω υπέρβασης ή να επηρεάζεται από αντικατάσταση ή εφεδρεία κατά την απόδοση. Μία αντιστοίχηση σεναρίου επιπέδου‑παρουσίασης ελέγχει μόνο το κείμενο του οποίου η αποτελεσματική μορφοποίηση εξακολουθεί να αναφέρεται σε αυτή τη συλλογή γραμματοσειρών του θέματος.
Η αποθήκευση και η επανεγκατάσταση είναι αρκετά για την επικύρωση πολυγλωσσικού αποτελέσματος;
Όχι. Η επανεγκατάσταση επαληθεύει μόνο τη διατήρηση των δεδομένων του θέματος. Πρέπει επίσης να αποδοθεί αντιπροσωπευτικό κείμενο από κάθε απαιτούμενο σύστημα γραφής για να διασφαλιστεί ότι οι αντιστοιχισμένες γραμματοσειρές είναι διαθέσιμες και περιέχουν τους απαραίτητους γλύφους.