Εισαγωγή

WOFF (Web Open Font Format) είναι το τυποποιημένο δοχείο για την παράδοση γραμματοσειρών στο web. Το Woff 1 χτυπά ένα TrueType ή CFF γραμμάριο με συμπίεση zlib. το WIFF 2 εφαρμόζει τη συμπιέρωση Brotli αντί, συνήθως επιτυγχάνοντας 20-30% καλύτερες αναλογίες συμπύκνωσης. Και οι δύο μορφές υποστηρίζονται από κάθε σύγχρονο πρόγραμμα περιήγησης και αποτελούν το συνιστώμενο μορφή παραδόσεως για τη τυπωρογραφία του web .

Aspose.Font FOSS for Python exposes WOFF and WOFF2 through the WoffFont και Woff2Font Και οι δύο τάξεις μοιράζονται το ίδιο API: εκθέτουν ιδιότητες γραμματοσειράς (font_name, font_family, num_glyphs• Μια επιλεκτική metadata_xml μπλοκ, ένα inner_font Ο παραλήπτης που επιστρέφει το υποκείμενο TtfFont, και η to_bytes() Μέθοδος μετατροπής μορφών.

Η βιβλιοθήκη δημοσιεύεται στο PyPI ως aspose-font και εγκρίθηκε από το ΜΙΤ Αδειοδότηση χωρίς υποχρεωτική εμπορική εξάρτηση.


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

Εισαγωγή WOFF και Woff2 Fonts

Χρησιμοποιήστε FontLoader.open να φορτώσει ένα αρχείο WOFF ή WofF2. ο φόρτωσης ανιχνεύει τη μορφή Από το αρχείο μαγικά bytes αυτόματα:

from aspose_font.loader import FontLoader

# Load WOFF 1
woff = FontLoader.open("MyFont.woff")
print(f"Name   : {woff.font_name}")
print(f"Family : {woff.font_family}")
print(f"Style  : {woff.font_style}")
print(f"Glyphs : {woff.num_glyphs}")
print(f"Type   : {woff.font_type}")

# Load WOFF 2
woff2 = FontLoader.open("MyFont.woff2")
print(f"Name   : {woff2.font_name}")
print(f"Glyphs : {woff2.num_glyphs}")

FontLoader.open Επιστρέφει ο Α WoffFont Για .woff Τα αρχεία και η Woff2Font Για .woff2 Ετικέτες: Και οι δύο κατηγορίες εφαρμόζουν το ίδιο Font Η βάση του κώδικα είναι η οποία Οι ιδιότητες ανάγνωσης είναι ίδιες και για τις δύο μορφές.


Ελέγχοντας τα μεταδεδομένα WOFF

Τα αρχεία WOFF μπορεί να περιλαμβάνουν ένα προαιρετικό μπλοκ μεταδεδομένων XML που περιέχει άδεια χρήσης. πληροφορίες, πιστώσεις και περιγραφή γραμματοσειράς. πρόσβαση μέσω της metadata_xml Ιδιοκτησία :

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# metadata_xml is a WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
if xml:
    print("WOFF metadata XML:")
    print(xml[:500])
else:
    print("No metadata block in this WOFF file")

Η metadata_xml Η ιδιοκτησία επιστρέφει σε str περιέχει το πρωτότυπο XML, ή None Αν Η γραμματοσειρά δεν περιλαμβάνει ένα μπλοκ μεταδεδομένων. WoffFont και Woff2Font ΕΚΔΗΛΩΣΕΙΣ Αυτή η ιδιοκτησία.


Εσωτερική πρόσβαση σε πίνακες TTF

WOFF και WofF2 βάζουν ένα TrueType γραμματοσειρά. inner_font Η ιδιοκτησία σας δίνει την Υποκείμενο TtfFont Με πλήρη πρόσβαση στο OpenType tableset του:

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# inner_font is a WoffFont-specific property returning the TtfFont
inner = getattr(font, "inner_font")
tables = inner.ttf_tables        # TtfTableSet

print(f"Units/em    : {tables.head.units_per_em}")
print(f"Ascender    : {tables.hhea.ascender}")
print(f"Num glyphs  : {tables.maxp.num_glyphs}")
print(f"Family name : {tables.name.best_name(1)}")

Μέσα από inner_font.ttf_tables Μπορείτε να έχετε πρόσβαση σε όλους τους τυποποιημένους πίνακες OpenType: head, hhea, maxp, os2, name,και post.Για πίνακες χωρίς όνομα Εξαρτήματα, χρήση inner_font.get_blob(tag) Για να ανακτήσετε τα ρυζάκια με το tag OpenType.


Κύρια ζεύγη από ένα WOFF Font

get_kern_pairs() επιστρέφει όλα τα ζεύγη πυρήνα που ενσωματώνονται στο γράμμα. KernPair Παρουσιάζει left (Το κλίμα του Γκίλιπ), right (Γλυφίνης) και value (Στο πλαίσιο των μονάδων γραμματισμού):

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
pairs = font.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  {pair.left} + {pair.right} = {pair.value}")

Τα ζεύγη πυρήνων αποθηκεύονται στο εσωτερικό TTF kern Ετικέτες: OpenType GPOS Η κεντρική λειτουργία αντί για ένα kern Το τραπέζι θα επιστρέψει μια κενή λίστα από Αυτή η μέθοδος.


Μετατροπή μορφής

FontConverter.convert μετατρέπεται μεταξύ μορφών γραμματοσειράς. χρησιμοποιήστε το FontType ΕΝΟΜ να καθορίσει το στόχο μορφή, στη συνέχεια καλέστε to_bytes() Για να σαρώνει:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path

# TTF -> WOFF
ttf = FontLoader.open("MyFont.ttf")
woff = FontConverter.convert(ttf, FontType.WOFF)
Path("MyFont.woff").write_bytes(woff.to_bytes(FontType.WOFF))

# TTF -> WOFF2 (Brotli-compressed)
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))

# WOFF -> WOFF2
existing_woff = FontLoader.open("MyFont.woff")
converted = FontConverter.convert(existing_woff, FontType.WOFF2)
Path("MyFont-from-woff.woff2").write_bytes(converted.to_bytes(FontType.WOFF2))

# WOFF2 -> WOFF (decompress back to WOFF 1)
existing_woff2 = FontLoader.open("MyFont.woff2")
woff1 = FontConverter.convert(existing_woff2, FontType.WOFF)
Path("MyFont-from-woff2.woff").write_bytes(woff1.to_bytes(FontType.WOFF))

Οι τέσσερις διαδρομές μετατροπής (TTF προς WOFF, TTF έως WofF2, WIFF μέχρι WUF2, wIF2 προς Η WOFF υποστηρίζεται από το ίδιο FontConverter.convert API.


Δημιουργία Web Font Package

WebFontBuilder.build δημιουργεί ένα πλήρες πακέτο γραμματοσειρών Web από μία TTF Παρέχει WOFF, Woff2, και μια προεπιλεγμένη προβολή SVG σε μία κλήση:

from aspose_font.web import WebFontBuilder
from aspose_font.loader import FontLoader
from pathlib import Path

# Load a TTF source font
font = FontLoader.open("MyFont.ttf")

# Build WOFF + WOFF2 output files
WebFontBuilder.build(
    font=font,
    file_stem="MyFont",
    include_woff=True,
    font_display="swap",
    preview_text="The quick brown fox",
    instance_coordinates=None,
    output_dir=Path("web-output"),
)

Μετά την κλήση, web-output/ Περιέχει MyFont.woff, MyFont.woff2,και Εναλλακτικά η MyFont-preview.svgfont_display Τα χάρτη παραμέτρων απευθείας σε Το CSS font-display Ο συγγραφέας και αποδέχεται "auto", "block", "swap", "fallback""optional".


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

Εγκατάσταση της βιβλιοθήκης:

pip install "aspose-font>=1.0.0"

Κατεβάστε ένα WOFF και μετατρέψτε το σε Woff2:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path

# Load WOFF
font = FontLoader.open("MyFont.woff")
print(f"Font   : {font.font_name}")
print(f"Glyphs : {font.num_glyphs}")
print(f"Type   : {font.font_type}")

# Inspect metadata (if present) — WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
print(f"Has metadata: {xml is not None}")

# Access inner OpenType tables — WoffFont-specific property
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")

# Convert to WOFF2
woff2 = FontConverter.convert(font, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Converted to WOFF2")

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

ΤΕΧΝΗΕΠΙΤΡΟΦΗφορτίοΜετατροπή σε WOFFΜετατροπή σε WOFF2
TTF.ΤΤΦΝΑΙΝΑΙΝΑΙ
OTF.ΟΤΦΝΑΙΝΑΙΝΑΙ
WOFF.ΓουόφΝΑΙΝΑΙ
WOFF2.Γουόφ2ΝΑΙΝΑΙ
EOT.ΕΟΤΝΑΙΝΑΙΝΑΙ
CFF.ΚΦΑΛΕΝΑΙΝΑΙΝΑΙ
TYPE1.ΠΡΕΠ / PFAΝΑΙΝΑΙΝΑΙ

Όλα τα μορφότυπα πηγής υποστηρίζουν τη μετατροπή σε WOFF και WofF2 μέσω FontConverter.convert.


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

Aspose.Font FOSS for Python is released under the MIT License. You can use it in προσωπικά, εμπορικά και ανοικτά έργα χωρίς κόστος. ο κώδικας πηγής είναι Διατίθεται στο GitHub και το πακέτο διανέμεται μέσω του PyPI ως: aspose-font.


Ξεκινώντας

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