Εισαγωγή

Το Compact Font Format (CFF) είναι το μορφότυπο περιγραφής μπινάρου που χρησιμοποιείται στο OpenType. γραμματοσειρές με ένα κινητήρα εξόδου συμβατό με το PostScript. Aspose.Font FOSS για Python εκθέτει Μια σειρά από μαθήματα κάτω από το aspose_font.cff Το όνομα για ανάγνωση και Ελέγχοντας τις δομές δεδομένων του CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex,και Type2Interpreter.Αυτό το άρθρο περνά μέσα από τον τρόπο φόρτωσης γραμματοσειρών CFF, να πλοηγηθείτε στα εσωτερικά τους πίνακα και να ερμηνεύσετε τα προγράμματα charstring χρησιμοποιώντας τη βιβλιοθήκη.

Το πακέτο είναι MIT άδεια. εγκαταστήστε το με pip install aspose-font>=1.0.0.


Βασικά Χαρακτηριστικά

Κατεβάστε ένα CFF Font

FontLoader.open() ανιχνεύει αυτόματα τη μορφή CFF — περάσει είτε μια μόνιμη .cff αρχείο ή αρχείου OTF που ενσωματώνει έναν πίνακα εκκίνησης CFF. Το επιστρεφόμενο αντικείμενο είναι ένα CffFont (Διαθέσιμη μέσω της cff_font Ιδιοκτησία στο TtfFont για τα αρχεία του OTF).

from aspose_font.loader import FontLoader

# Load a standalone CFF file
font = FontLoader.open("OpenSans.cff")

# Load a standalone CFF file (auto-detected from format)
font = FontLoader.open("OpenSans.cff")
print(font.font_name, font.num_glyphs)

CFF Charset — Χάρτης Glyph IDs σε ονόματα

CffCharset Χάρτες GIF IDs (GIDs) σε PostScript ονόματα Gif. standard() Για να να έχετε το πρότυπο ISO Adobe Charse ή from_reader() Να ξεφορτωθείτε ένα φορτηγό από το δυαδικό Πληροφορίες του CFF: Η name_for() η μέθοδος επιστρέφει το όνομα PostScript για ένα GID, και gid_for() Εξέχει την αντίστροφη αναζήτηση.

from aspose_font.cff.charset import CffCharset

charset = CffCharset.standard()
print(charset.name_for(1))    # ".notdef" or similar
print(charset.gid_for("A"))   # GID for the PostScript name "A"

CFF Κωδικοποίηση - Unicode-to-GID Χάρτης

CffEncoding χειρίζεται τον πίνακα κωδικοποίησης CFF, ο οποίος χάρτης χαρακτήρων σε Glyph IDs. standard() επιστρέφει την τυποποιημένη κρυπτογράφηση, expert() επιστρέφει τον κώδικα του εμπειρογνώμονα, και from_reader() διαχωρίζει μια προσαρμοσμένη κωδικοποίηση από τα δυαδική δεδομένα CFF. unicode_to_gid() Για να να ανακαλύψετε ένα GID με σημείο κωδικού Unicode και get_all_codepoints() Να καταγράψουμε όλα τα χαρτιά Κωδικά σημεία .

from aspose_font.cff.encoding import CffEncoding

encoding = CffEncoding.standard()
gid = encoding.unicode_to_gid(0x41)  # Unicode for 'A'
all_codepoints = encoding.get_all_codepoints()
print(f"Standard encoding covers {len(all_codepoints)} code points")

Γράμμα του CFF Parsing

Οι γραμματοσειρές CFF αποθηκεύουν κορυφαία και ιδιωτικά μεταδεδομένα σε λεξικά. CffDict.from_bytes() Πάρσε ένα ξηρό CFF DICT μπλοκ και σας δίνει get() και set() Η πρόσβαση από το κλειδί του χειριστή. TopDict.from_dict() εξειδικεύεται σε αυτό για τα κορυφαία λεξικά του CFF, και PrivateDict.from_dict() Το ίδιο ισχύει και για τα ιδιωτικά δίκαια.

from aspose_font.cff.dict_ import CffDict

# Parse a raw CFF DICT from bytes
raw_dict_bytes = b"..."  # CFF-encoded DICT bytes
d = CffDict.from_bytes(raw_dict_bytes)
vals = d.get(21)  # retrieve values for operator 21 (PostScript CharstringType)

Δείκτης του CFF

CffIndex αντιπροσωπεύει μια δομή δεδομένων CFF INDEX — ένα προεπιλεγμένο φάσμα μεταβλητών- μήκος byte γραμμές που χρησιμοποιούνται για τα χαρτίνια, subrs και τους πίνακες ονόματος. from_reader() Πάρσα ένα INDEX από έναν δυαδικό αναγνώστη και το αποτέλεσμα είναι συνδρομητικό με ολόκληρο δείκτη.

from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader  # internal API — may change between releases
import io

raw_index = b"..."  # raw CFF INDEX bytes
reader = BinaryReader(io.BytesIO(raw_index))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Τύπος 2 Ερμηνεία

Type2Interpreter εκτελεί ένα πρόγραμμα τύπου 2 (το συμπαγές PostScript-like) χρησιμοποιείται σε μορφή γραμματοσειρών CFF) και παράγει ένα GlyphPath Ηλεκτρονική κάρτα - Call interpret() με τα μύθια και το σχετικό ιδιωτικό λεξικό. σας επιτρέπει να εξάγετε πρώτες εκχύλισμα γλυφίου από τα CFF χαρστρέμματα χωρίς πλήρη Ερμηνεία του PostScript.

from aspose_font.cff.type2 import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)
for cmd in glyph_path.commands:
    print(type(cmd).__name__, cmd)

Γρήγορη έναρξη

pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader

# Load an OTF with embedded CFF outlines
font = FontLoader.open("OpenSans-Regular.otf")

glyph_id = font.encoding.unicode_to_gid(0x41)
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")

Υποστηριζόμενες μορφές

ΤΕΧΝΗΕΠΙΤΡΟΦΗΔιαβάστεΓράψε
CFF.ΚΦΑΛΕ
OTF.ΟΤΦ
TTF.ΤΤΦ
WOFF.Γουόφ
WOFF2.Γουόφ2
EOT.ΕΟΤ
TYPE1.ΠΡΟΣΦΥΛΗ / .pfa

Ανοικτή Πηγή & Άδεια Χρήσης

Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Σημειώνεται ότι το «Font-FOSS-for-Python». Εισάγετε από το PyP ως aspose-font.


Ξεκινώντας

Σχετικοί Πόροι