הכניסה
WOFF (Web Open Font Format) הוא המכולת הסטנדרטית עבור משלוח טקסטים ברשת.WOF F 1 מעניקה טופס TrueType או CFF עם דחיסה Zlib; Wof 2 מיישם דחוס Brotli במקום, בדרך כלל להשיג 20-30% שיעורי הדחיפה טובים יותר.שני הטפסים נתמכים על ידי כל דפדפן מודרני והם פורמט ההלוואה המומלץ עבור טייפוגרפיה באינטרנט.
Aspose.Font FOSS for Python exposes WOFF and WOFF2 through the WoffFont ו Woff2Font שני הכיתות חולקות את אותו API: הם מציגים תכונות של טופס (font_name, font_family, num_glyphs• אפשרות אופציונלית metadata_xml בלוק , A inner_font תוספת שמחזירה את התחתון TtfFont, ו A to_bytes() שיטת ההפוך של פורמט.
הספרייה פורסמה ב-PIPI כ aspose-font והורש על פי MIT רישיון ללא תלויות מסחריות חובה.
תכונות מרכזיות
תגיות: WOFF ו-WOFf2 Fonts
שימוש FontLoader.open כדי להעלות קובץ WOFF או WofF2.המחשב מגלה את הפורמט מתוך הקובץ קסם באטים באופן אוטומטי:
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 קבצים ו- A Woff2Font עבור .woff2 שני הכיתות: השניים משתמשים באותה מידה. Font הקוד של ה-Code, כך ש תכונות קריאה זהות עבור שני פורמטים.
בדיקת נתונים 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")
The metadata_xml רכוש חוזר א str מכיל את XML הירוק, או None אם האות אינה כוללת בלוק נתונים.שניהם WoffFont ו Woff2Font להציג את הרכוש הזה.
גישה לתוכניות TTF פנימיות
WOFF ו-WOF F2 להדביק טופס TrueType. inner_font הנכס נותן לך את תחתון TtfFont עם גישה מלאה למערכת השולחן OpenType שלה:
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) כדי לקבל את ה-Byte על ידי OpenType tag.
זוגות גרעין מתוך חותם WOFF
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 תופעות לוואי במקום A kern שולחן החזיר רשימה ריקה מתוך שיטה זו .
פורמט המרה
FontConverter.convert משתמשים בפורמט הפורטוגזית - השתמשו FontType ENUM כדי לציין את פורמט היעד, ולאחר מכן להתקשר 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 ב-WOF F2, Woff ב - WIFF 2, WF2 ב ה-WOFF) תומך באותה מידה. FontConverter.convert API.
בניית חבילת Web Font
WebFontBuilder.build יוצר חבילת טקסט אינטרנט מלאה מתוך 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.svg.• The font_display מפת הפרומטר ישירות ל CSS font-display תיאור ומסכים "auto", "block", "swap", "fallback",או "optional".
מהיר התחלה
הקמת הספרייה:
pip install "aspose-font>=1.0.0"
להעלות טופס WOFF ולהמיר אותו ל-WOF F2:
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 | .WOW2 | כן | כן | — |
| EOT | .EOT | כן | כן | כן |
| CFF | .קפ | כן | כן | כן |
| TYPE1 | .pf / 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.