Πώς να εργαστείτε με τα γραμματοσειρά στο Python
Αυτό το εγχειρίδιο δείχνει πώς να διαβάσετε τα ονομαζόμενα πίνακα TTF, να ανακτήσετε πρώτες δυαδικές μίτρες του τραπέδου και να γράψετε τροποποιημένα δεδομένα του πίεσης χρησιμοποιώντας TtfFont σε Aspose.Font FOSS για Python. TrueType γραμματοσειρά αποθηκεύουν όλα τα δεδομένα σε δυαδικά δίσκους που εντοπίζονται από ετικέτες 4- χαρακτήρων. Aspose.Font TtfTableSet για την πρόσβαση στο όνομα πίνακα και TtfFont.get_table_bytes() / TtfFont.set_table_bytes() Για την πρώτη διπλή πρόσβαση.
Βήμα προς βήμα οδηγός
Βήμα 1: Εγκατάσταση του πακέτου
Εγκαταστήστε το πακέτο Aspose.Font FOSS από την PyPI χρησιμοποιώντας τη διαταγή pip παρακάτω:
pip install "aspose-font>=1.0.0"Βήμα 2: Εισαγωγή απαιτούμενων τάξεων
εισαγωγών FontLoader και TtfFont να φορτώσετε ένα αρχείο γραμματοσειράς και να έχετε πρόσβαση στο σύνολο του πίνακα:
from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFontΒήμα 3: Πρόσβαση σε ονομαζόμενες πίνακες
Κατεβάστε ένα αρχείο TTF με FontLoader.open() και πρόσβαση σε ονομαστικές πίνακες μέσω της ttf_tables Ιδιοκτησία :
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)Βήμα 4: Διαβάστε το Raw Table Bytes
Διαβάστε τα πρώτα δυαδικά δεδομένα για ένα συγκεκριμένο τραπέζι, μεταφέροντας την ετικέτα 4 χαρακτήρων στο get_table_bytes():
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")Βήμα 5: Γράψτε τροποποιημένα γραμμάρια πίνακα
Γράψτε τροποποιημένα δυαδικά δεδομένα πίσω σε ένα ονομαστικό πίνακα χρησιμοποιώντας set_table_bytes() Με το tag και το byte payload:
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..." # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)Κοινά προβλήματα και τακτοποιήσεις
AttributeError: Font has no attribute ttf_tables — ttf_tables Είναι στο TtfFont, Όχι η βάση Font Χρησιμοποιήστε την κλάση ttf_font: TtfFont = FontLoader.open(...) Για να πάρει ένα Τύπος αναφοράς .
get_table_bytes Επιστρέφει άδειο byte - Η ετικέτα πρέπει να είναι ακριβώς 4 χαρακτήρες. (Παρακαλώ με το χώρο, αν χρειαστεί, για παράδειγμα. "kern" Όχι "KRN").
Συχνές ερωτήσεις
Ποια ονομαζόμενα πίνακα εκθέτονται στο TtfTableSet;?
κεφάλι, hhea, maxp, os2, όνομα, post, cmap, loca, Hmtx και kern.
Μπορώ να προσθέσω ένα νέο τραπέζι σε μια γραφή;?
Ναι. Μεταφέρετε οποιαδήποτε έγκυρη ετικέτα 4 byte και δεδομένα byt σε TtfFont.set_table_bytes(tag, data).