Fonts
Fonts
Αυτός ο οδηγός δείχνει πώς να ελέγχετε τις γραμματοσειρές που αναφέρονται σε ένα έγγραφο, να εξάγετε τα ενσωματωμένα δεδομένα γραμματοσειράς και να ελέγχετε την ενσωμάτωση γραμματοσειρών TrueType κατά την αποθήκευση με το Aspose.Words FOSS για .NET. Το Aspose.Words FOSS για .NET παρακολουθεί κάθε γραμματοσειρά που αναφέρεται από ένα φορτωμένο έγγραφο μέσω FontInfoCollection και εκθέτει μεταδεδομένα ανά γραμματοσειρά, εξαγωγή ενσωματωμένης γραμματοσειράς και ελέγχους ενσωμάτωσης κατά την αποθήκευση μέσω FontInfo. Τα Document.FontSettings και LoadOptions.FontSettings παρέχουν το (σκόπιμα ελάχιστο, σε αυτή την έκδοση) σημείο εισόδου FontSettings.
Έλεγχος των γραμματοσειρών που χρησιμοποιούνται σε ένα έγγραφο
DocumentBase.FontInfos (κληρονομείται από το Document) επιστρέφει ένα FontInfoCollection που περιγράφει κάθε γραμματοσειρά που αναφέρεται οπουδήποτε στο έγγραφο. Προσπελάστε το με βάση το όνομα (π.χ. fontInfos["Arial"]), ελέγξτε αν υπάρχει με το Contains(name), μετρήστε τις με το Count, ή απαριθμήστε ολόκληρη τη συλλογή μέσω GetEnumerator().
Ιδιότητες και ταξινόμηση γραμματοσειρών
Κάθε FontInfo περιγράφει μία γραμματοσειρά: τα Name και AltName την αναγνωρίζουν, το Family την ταξινομεί μέσω του enum FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), το Pitch αναφέρει το FontPitch της (Default, Fixed, Variable), και τα IsTrueType, Charset και Panose εκθέτουν δεδομένα αντιστοίχισης γραμματοσειρών χαμηλότερου επιπέδου.
Εξαγωγή ενσωματωμένης γραμματοσειράς
Εάν ένα έγγραφο έχει ενσωματωμένες γραμματοσειρές, το FontInfo.GetEmbeddedFont(format, style) επιστρέφει τα ακατέργαστα bytes της ενσωματωμένης γραμματοσειράς για ένα συγκεκριμένο EmbeddedFontFormat (EmbeddedOpenType ή OpenType) και EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). Το GetEmbeddedFontAsOpenType(style) επιστρέφει τη γραμματοσειρά μετατρεπόμενη απευθείας σε μορφή OpenType, ανεξάρτητα από το πώς ενσωματώθηκε αρχικά.
Δικαιώματα Άδειας Ενσωμάτωσης Γραμματοσειρών
Πριν εξάγετε ή επανεγκαταστήσετε μια γραμματοσειρά, ελέγξτε το FontInfo.EmbeddingLicensingRights, ένα αντικείμενο FontEmbeddingLicensingRights. Το EmbeddingUsagePermissions αναφέρει το επίπεδο άδειας μέσω της απαρίθμησης FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), ενώ τα NoSubsetting και BitmapEmbeddingOnly σηματοδοτούν περαιτέρω περιορισμούς που θέτει ο κατασκευαστής της γραμματοσειράς.
Διαχείριση Ενσωμάτωσης Γραμματοσειρών κατά την Αποθήκευση
Το FontInfoCollection περιλαμβάνει επίσης διακόπτες ενσωμάτωσης επιπέδου εγγράφου: ορίστε το EmbedTrueTypeFonts σε true για να ενσωματώσετε κάθε γραμματοσειρά TrueType που χρησιμοποιείται στο έγγραφο κατά την αποθήκευση, το EmbedSystemFonts για να συμπεριλάβετε γραμματοσειρές που συνήθως θεωρούνται παρούσες σε οποιοδήποτε σύστημα, και το SaveSubsetFonts για να ενσωματώσετε μόνο τα γλύφοι που χρησιμοποιούνται πραγματικά αντί για ολόκληρη τη γραμματοσειρά.
Πεδίο Εφαρμογής του FontSettings σε αυτήν την Έκδοση
Το Document.FontSettings και το LoadOptions.FontSettings επιστρέφουν και τα δύο ένα αντικείμενο FontSettings, και το FontSettings.DefaultInstance εκθέτει ένα κοινό προεπιλεγμένο στιγμιότυπο. Σε αυτήν την έκδοση FOSS, η επιφάνεια API του FontSettings περιορίζεται σε αυτήν την ιδιότητα του προεπιλεγμένου στιγμιότυπου — η επίλυση πηγών γραμματοσειρών βάσει φακέλου και συστήματος, η οποία αλλού στο Aspose.Words χρησιμοποιείται για αντικατάσταση ή επίλυση γραμματοσειρών για τη διάταξη και απόδοση σελίδων, δεν υπάρχει, καθώς η διάταξη και η απόδοση σελίδων βρίσκονται εκτός του πεδίου εφαρμογής αυτής της έκδοσης. Η διαχείριση γραμματοσειρών εδώ σημαίνει επιθεώρηση μεταδεδομένων και ενσωμάτωση, όχι αντικατάσταση γραμματοσειρών για απόδοση.
Συμβουλές και Καλές Πρακτικές
- Πάντα ελέγξτε το
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionsπριν εξάγετε ή διανείμετε ξανά μια ενσωματωμένη γραμματοσειρά — ορισμένες γραμματοσειρές είναι αδειοδοτημένες μόνοRestrictedLicenseήPrintAndPreview. - Χρησιμοποιήστε το
GetEmbeddedFontAsOpenType()όταν χρειάζεστε μια συνεπή μορφή εξόδου ανεξάρτητα από το πώς το πηγαίο έγγραφο ενσωμάτωσε τη γραμματοσειρά (EmbeddedOpenTypeέναντιOpenType). - Ορίστε το
FontInfoCollection.SaveSubsetFontsσεtrueγια να μειώσετε το μέγεθος του αρχείου εξόδου όταν ενσωματώνετε γραμματοσειρές που χρησιμοποιούν μόνο λίγα σύμβολα. - Το
FontInfoCollection.Contains(name)είναι φθηνότερο από το να ενσωματώνετε και να διαχειρίζεστε μια αποτυχημένη αναζήτηση (π.χ.fontInfos[name]) όταν χρειάζεται μόνο να ελέγξετε την παρουσία μιας γραμματοσειράς.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
GetEmbeddedFont() δεν επιστρέφει χρήσιμα δεδομένα | Η αναφερόμενη γραμματοσειρά δεν είναι στην πραγματικότητα ενσωματωμένη στο έγγραφο | Ελέγξτε τις ρυθμίσεις ενσωμάτωσης του εγγράφου πριν υποθέσετε ότι υπάρχουν δεδομένα γραμματοσειρών |
Η ευρετηρίαση του FontInfoCollection κατά όνομα δεν βρίσκει τίποτα | Το όνομα της γραμματοσειράς δεν ταιριάζει ακριβώς, συμπεριλαμβανομένης της πεζοκεφαλαίας | Απαριθμήστε το FontInfoCollection με το GetEnumerator() για να επιβεβαιώσετε την ακριβή συμβολοσειρά Name |
| Οι αναμενόμενες API υποκατάστασης/επίλυσης γραμματοσειρών λείπουν | Η επίλυση πηγής γραμματοσειρών βάσει φακέλου και συστήματος δεν έχει υλοποιηθεί σε αυτήν την έκδοση FOSS | Χρησιμοποιήστε το FontInfo/FontInfoCollection μόνο για μεταδεδομένα και ενσωμάτωση· η υποκατάσταση γραμματοσειρών για απόδοση δεν αποτελεί μέρος του εύρους αυτής της έκδοσης |
FAQ
Πώς μπορώ να απαριθμήσω κάθε γραμματοσειρά που αναφέρει ένα έγγραφο;
Απαριθμίστε το Document.FontInfos (ένα FontInfoCollection) μέσω GetEnumerator(), ή δείξτε το με όνομα για να αναζητήσετε ένα συγκεκριμένο (π.χ. fontInfos["Arial"]).
Μπορώ να εξάγω τα ακατέργαστα byte μιας ενσωματωμένης γραμματοσειράς από ένα έγγραφο;
Ναι, εάν η γραμματοσειρά είναι ενσωματωμένη — καλέστε το FontInfo.GetEmbeddedFont(format, style) για το αρχικό ενσωματωμένο φορμά, ή το GetEmbeddedFontAsOpenType(style) για να κανονικοποιήσετε το αποτέλεσμα σε OpenType.
Πώς μπορώ να εξασφαλίσω ότι οι γραμματοσειρές ενσωματώνονται όταν αποθηκεύω ένα έγγραφο;
Ορίστε το FontInfoCollection.EmbedTrueTypeFonts σε true πριν από την αποθήκευση· προσθέστε το EmbedSystemFonts εάν χρειάζεστε επίσης γραμματοσειρές που υποτίθεται ότι υπάρχουν σε οποιοδήποτε σύστημα, και το SaveSubsetFonts για να ενσωματώσετε μόνο τα γλύφια που χρησιμοποιούνται.
Υποστηρίζει αυτή η έκδοση την επίλυση γραμματοσειρών από προσαρμοσμένο φάκελο για απόδοση;
Όχι — η επίλυση πηγής γραμματοσειρών βάσει φακέλου και συστήματος (FontSettings διαμόρφωση πηγής) δεν έχει υλοποιηθεί εδώ, καθώς υπάρχει για την εξυπηρέτηση διάταξης σελίδας και απόδοσης, που βρίσκονται εκτός του πεδίου εφαρμογής αυτής της έκδοσης FOSS.
Τι σημαίνει το FontEmbeddingLicensingRights.NoSubsetting;
Αυτή είναι μια σημαία αδειοδότησης που αναφέρεται από τα δικαιώματα ενσωμάτωσης του προμηθευτή γραμματοσειράς: όταν true, η γραμματοσειρά δεν μπορεί να υποσύνολο περιοριστεί μόνο στα γλύφια που χρησιμοποιούνται.
API Reference Περίληψη
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
FontInfoCollection | Γραμματοσειρές που αναφέρονται σε ένα έγγραφο· ευρετήριο κατά όνομα (fontInfos[name]), Contains(), Count, GetEnumerator(), συν EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Μεταδεδομένα μιας γραμματοσειράς: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Εξαγωγή ενσωματωμένων bytes γραμματοσειράς |
EmbeddedFontFormat / EmbeddedFontStyle | Enums που προσδιορίζουν τη μορφή και την παραλλαγή στυλ μιας ενσωματωμένης γραμματοσειράς |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Περιορισμοί άδειας ενσωμάτωσης που αναφέρονται ανά γραμματοσειρά |
FontSettings | Ελάχιστο σημείο εισόδου ρυθμίσεων γραμματοσειράς (Document.FontSettings, LoadOptions.FontSettings); χωρίς επίλυση πηγής γραμματοσειράς σε αυτή την έκδοση |