Διαχειριστείτε τις Γραμματοσειρές Θέματος Κατά Script σε Python
Επισκόπηση
Ένα θέμα παρουσίασης μπορεί να επιλέξει διαφορετικές οικογένειες γραμματοσειρών για διαφορετικά συστήματα γραφής. Αυτό επιτρέπει το πολυγλωσσικό κείμενο που εξακολουθεί να χρησιμοποιεί τις γραμματοσειρές του θέματος να ακολουθεί ένα συντονισμένο σχήμα γραμματοσειρών, ενώ χρησιμοποιεί κατάλληλες γραμματοσειρές για κυριλλικά, αραβικά, ιαπωνικά, γεωργιανά, θάνα και άλλα σενάρια.
Το FontScheme του θέματος περιέχει μια κύρια συλλογή γραμματοσειρών, συνήθως χρησιμοποιούμενη για επικεφαλίδες, και μια δευτερεύουσα συλλογή γραμματοσειρών, συνήθως χρησιμοποιούμενη για το κύριο κείμενο. Εκτός από τις ιδιότητες των γραμματοσειρών για Λατινικά και Ανατολικής Ασίας, και οι δύο συλλογές εκθέτουν αντιστοιχίσεις από ετικέτες συστήματος γραφής σε ονόματα οικογενειών γραμματοσειρών μέσω της κλάσης Fonts.
Αυτό το άρθρο δείχνει πώς να επιθεωρήσετε και να τροποποιήσετε αυτές τις αντιστοιχίσεις στο κύριο θέμα της παρουσίασης και να επαληθεύσετε ότι οι αλλαγές επιβιώνουν σε έναν κύκλο αποθήκευσης‑και‑επαναφόρτωσης.
Κατανόηση Ετικετών Script
Οι μέθοδοι γραμματοσειράς script χρησιμοποιούν τετραγράμματα υπο-ετικετών BCP 47 για τον προσδιορισμό συστημάτων γραφής. Συνηθισμένες τιμές περιλαμβάνουν:
| Ετικέτα script | Σύστημα γραφής |
|---|---|
Cyrl |
Κυριλλικό |
Arab |
Αραβικό |
Hans |
Απλοποιημένα Κινέζικα |
Jpan |
Ιαπωνικά |
Geor |
Γεωργιανά |
Thaa |
Θάνα |
Αυτές οι αντιστοιχίσεις ανήκουν στο σχήμα γραμματοσειρών του θέματος, όχι σε επιμέρους τμήματα κειμένου. Μια παρουσίαση μπορεί να ορίσει διαφορετικές αντιστοιχίσεις για τις κύριες και δευτερεύουσες συλλογές, και μπορεί να παραλείψει αντιστοιχίσεις για κάποια σενάρια.
Πρόσβαση και Επιθεώρηση Χαρτών Γραμματοσειρών Script
Χρησιμοποιήστε το Presentation.master_theme για να αποκτήσετε πρόσβαση στο επίπεδο‑θέματος της παρουσίασης. Οι ιδιότητες FontScheme.major και FontScheme.minor επιστρέφουν τις δύο συλλογές Fonts.
Καλέστε το Fonts.get_script_font_map για να ανακτήσετε όλες τις αντιστοιχίσεις από μια συλλογή. Για να αναζητήσετε ένα σύστημα γραφής, καλέστε το Fonts.get_script_font με την ετικέτα script του. Η get_script_font επιστρέφει None όταν η συλλογή δεν ορίζει την απαιτούμενη αντιστοίχηση.
Τροποποίηση Χαρτών και Επαλήθευση Διατήρησης
Χρησιμοποιήστε το Fonts.set_script_font για να δημιουργήσετε μια αντιστοίχηση ή να αντικαταστήσετε την τρέχουσα οικογένεια γραμματοσειράς. Χρησιμοποιήστε το Fonts.remove_script_font για να αφαιρέσετε μια αντιστοίχηση.
Το παρακάτω παράδειγμα από‑από‑τέλος διαβάζει όλες τις υπάρχουσες κύριες και δευτερεύουσες αντιστοιχίσεις, εντοπίζει τη ζαμουνική (Japanese) κύρια γραμματοσειρά, αλλάζει τη ζαμουνική (Cyrillic) κύρια γραμματοσειρά, αφαιρεί τη ζαμουνική (Thaana) δευτερεύουσα αντιστοίχηση, αποθηκεύει την παρουσίαση και την ανοίγει ξανά για να επαληθεύσει και τις δύο αλλαγές. Για να είναι το βήμα αφαίρεσης ανεξάρτητο από το αρχικό θέμα, το παράδειγμα πρώτα δημιουργεί μια αντιστοίχηση Thaana μόνο όταν δεν υπάρχει ήδη.
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.")
Η επαλήθευση χρησιμοποιεί την ίδια συμπεριφορά None όπως μια κανονική αναζήτηση: μετά την αποθήκευση της αφαίρεσης, η get_script_font("Thaa") επιστρέφει None για τη δευτερεύουσα συλλογή.
Διαχωρισμός Χαρτών Θέματος από Άλλες Ρυθμίσεις Γραμματοσειράς
Οι χάρτες θέματος που είναι ειδικοί για script συμμετέχουν στην επιλογή γραμματοσειράς, αλλά λύνουν διαφορετικό πρόβλημα από την άμεση μορφοποίηση κειμένου, την αντικατάσταση και την εφεδρεία:
| Μηχανισμός | Σκοπός | Αποτέλεσμα αλλαγής χάρτη θέματος |
|---|---|---|
| Χαρτογράφηση γραμματοσειράς θέματος ανά script | Επιλέγει μια κύρια ή δευτερεύουσα γραμματοσειρά θέματος για ένα σύστημα γραφής. | Κείμενο που εξακολουθεί να χρησιμοποιεί την αντίστοιχη γραμματοσειρά θέματος μπορεί να αντιστοιχιστεί στη νέα οικογένεια. |
| Γραμματοσειρά που έχει ανατεθεί ρητά σε τμήμα κειμένου | Καθορίζει την επιθυμητή οικογένεια γραμματοσειράς στο τμήμα αυτό αντί να εξαρτάται από το θέμα. | Το τμήμα μπορεί να παραμείνει αμετάβλητο επειδή η άμεση μορφοποίηση του παρακάμπτει την επιλογή του θέματος. |
| Αντικατάσταση γραμματοσειράς | Αντικαθιστά μια ζητούμενη γραμματοσειρά όταν αυτή δεν είναι διαθέσιμη ή όταν ισχύει κανόνας αντικατάστασης. | Λειτουργεί μετά την αίτηση μιας γραμματοσειράς· δεν επαναορίζει τη χαρτογράφηση script του θέματος. |
| Εφεδρική γραμματοσειρά | Παρέχει γλύφους που δεν περιέχει η επιλεγμένη γραμματοσειρά, συχνά για συγκεκριμένα εύρη Unicode. | Συμπληρώνει την έλλειψη γλυφών· δεν αλλάζει το αποθηκευμένο χάρτη θέματος. |
Για περισσότερες πληροφορίες σχετικά με τους δύο τελευταίους μηχανισμούς, δείτε Font Substitution και Fallback Fonts.
Η αλλαγή ενός χάρτη στο Presentation.master_theme επηρεάζει μόνο το περιεχόμενο του οποίου η αποτελεσματική μορφοποίηση εξακολουθεί να εξαρτάται από το συγκεκριμένο θέμα. Το κείμενο μπορεί να κληρονομήσει μια παράκαμψη θέματος από ένα master, layout ή slide, ή να χρησιμοποιήσει μια ρητά ανατεθειμένη γραμματοσειρά. Ελέγξτε αυτά τα επίπεδα όταν το οπτικό αποτέλεσμα δεν ακολουθεί την αντιστοίχηση θέματος επιπέδου παρουσίασης.
Καταστήστε τις Χαρτογραφημένες Γραμματοσειρές Διαθέσιμες και Επικυρώστε το Αποτέλεσμα
Μια αντιστοίχηση script αποθηκεύει ένα όνομα οικογένειας γραμματοσειράς· δεν εγκαθιστά ή φορτώνει το αντίστοιχο αρχείο γραμματοσειράς. Για συνεπή απόδοση και εξαγωγή, κάθε χαρτογραφημένη γραμματοσειρά πρέπει να είναι εγκατεστημένη στο περιβάλλον ή να παρέχεται στο Aspose.Slides μέσω μιας προσαρμοσμένης πηγής, όπως η FontsLoader.load_external_fonts ή η LoadOptions.document_level_font_sources. Δείτε το Custom Fonts για τις διαθέσιμες επιλογές φόρτωσης.
Η επαλήθευση του αποθηκευμένου χάρτη επιβεβαιώνει μόνο ότι ο ορισμός του θέματος διατηρήθηκε. Δεν αποδεικνύει ότι η γραμματοσειρά είναι διαθέσιμη, περιέχει όλους τους απαιτούμενους γλύφους ή παράγει τη ζητούμενη διάταξη. Αποδώστε αντιπροσωπευτικό κείμενο για κάθε απαιτούμενο σύστημα γραφής σε εικόνα ή PDF και εξετάστε το αποτέλεσμα. Αυτό εντοπίζει ελλιπείς γραμματοσειρές, ελλιπή κάλυψη γλυφών, συμπεριφορά εφεδρείας και αλλαγές διάταξης πριν τη διανομή της παρουσίασης. Δείτε το Convert PowerPoint Presentations για παραδείγματα απόδοσης και εξαγωγής.
Συχνές Ερωτήσεις
Τι επιστρέφει η get_script_font όταν ένα script δεν έχει χαρτογραφηθεί;
Η Fonts.get_script_font επιστρέφει None όταν η ζητούμενη αντιστοίχηση script δεν είναι ορισμένη σε εκείνη την κύρια ή δευτερεύουσα συλλογή γραμματοσειρών.
Προσθέτει η set_script_font δεύτερη χαρτογράφηση όταν το script υπάρχει ήδη;
Όχι. Η Fonts.set_script_font δημιουργεί τη χαρτογράφηση όταν λείπει και αντικαθιστά την υπάρχουσα οικογένεια γραμματοσειράς όταν η ίδια ετικέτα script είναι ήδη παρούσα.
Γιατί η αλλαγή ενός χάρτη θέματος δεν άλλαξε κάποιο κείμενο;
Το κείμενο μπορεί να έχει ρητά ανατεθειμένη γραμματοσειρά, να κληρονομήσει διαφορετικό θέμα μέσω παράκαμψης, ή να επηρεαστεί από αντικατάσταση ή εφεδρεία κατά την απόδοση. Η χαρτογράφηση script σε επίπεδο παρουσίασης ελέγχει μόνο το κείμενο του οποίου η αποτελεσματική μορφοποίηση εξακολουθεί να αναφέρεται σε αυτή τη συλλογή γραμματοσειρών θέματος.
Είναι η αποθήκευση και το άνοιγμα ξανά αρκετά για την επαλήθευση της πολυγλωσσικής εξόδου;
Όχι. Το άνοιγμα ξανά επαληθεύει μόνο τη διατήρηση των δεδομένων θέματος. Επίσης, αποδώστε αντιπροσωπευτικό κείμενο από κάθε απαιτούμενο σύστημα γραφής για να επιβεβαιώσετε ότι οι χαρτογραφημένες γραμματοσειρές είναι διαθέσιμες και περιέχουν τους απαραίτητους γλύφους.