Python में WOFF फ़ॉन्ट्स के साथ कैसे काम करें
इस गाइड में दिखाया गया है कि कैसे लोड, निरीक्षण और WOFF और WEB फ़ॉन्ट्स को परिवर्तित करने के लिए Aspose.Font FOSS के साथ Python. Wof (Web Open Font Format) वेब पर फ़ोन्टों की आपूर्ति के मानक है. WEB 1 zlib संपीड़न का उपयोग करता है और WWF 2 Brotli संपाड़ना का इस्तेमाल करता, दोनों एक बुनियादी TrueType या CFF फ़ोटो को लपेटते हैं. Aspose.Font दोनों प्रारूपों को अपलोड करता और एक साफ एपीआई के माध्यम से आंतरिक फ़ोन डेटा को प्रदर्शित करता।.
कदम-दर-चरण गाइड
चरण 1: पैकेज स्थापित करें
नीचे दिए गए पाइप कमांड का उपयोग करके PyPI से Aspose.Font FOSS पैकेज स्थापित करें:
pip install "aspose-font>=1.0.0"चरण 2: आवश्यक कक्षाओं का आयात
Import FontLoader, FontConverter,और FontType WOFF फ़ॉन्ट्स को लोड और परिवर्तित करने के लिए:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontTypeचरण 3: एक WOFF फ़ॉन्ट लोड करें और जांचें
एक WOFF फ़ाइल डाउनलोड करें FontLoader.open() और मूल गुणों जैसे नाम, परिवार, और ग्लिफ गिनती पढ़ें:
from aspose_font.loader import FontLoader
woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")चरण 4: WOFF मेटाडेटा पढ़ें
WOFF फ़ाइलों में लाइसेंस, क्रेडिट और XML मेटाडेटा ब्लॉक शामिल हो सकते हैं। अनुच्छेद यहाँ जारी है. इसे संदर्भ के माध्यम से प्राप्त करें metadata_xml संपत्ति है।.
font = FontLoader.open(“MyFont.woff”)
WOFF fonts may include an XML metadata block
xml = getattr(font, “metadata_xml”, None) if xml: print(xml) else: print(“No metadata in this WOFF file”)
### चरण 5: TTF तालिकाओं के अंदर पहुंच
Both `WoffFont` और `Woff2Font` एक को दिखाएं `inner_font` संपत्ति जो देती है आप के नीचे की `TtfFont`.इसके माध्यम से आप सभी मानक तक पहुंच सकते हैं। खुले टेबल के लिए।.
font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”
<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>
चरण 6: TTF को WOFF में परिवर्तित करें
एक TTF फ़ॉन्ट लोड करें और इसे WOFF प्रारूप में परिवर्तित करें। FontType.WOFF के लिए FontConverter.convert():
ttf_font = FontLoader.open(“MyFont.ttf”) woff_font = FontConverter.convert(ttf_font, FontType.WOFF) woff_bytes = woff_font.to_bytes()
from pathlib import Path Path(“MyFont.woff”).write_bytes(woff_bytes)
### चरण 7: TTF को WOFF2 में परिवर्तित करें
एक TTF फ़ॉन्ट लोड करें और इसे WOFF2 प्रारूप में परिवर्तित करें। `FontType.WOFF2` के लिए `FontConverter.convert()`:
ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()
from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”
<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>
चरण 8: WOFF और WofF2 के बीच परिवर्तित करें
एक लोड WOFF फ़ाइल को WofF2 में परिवर्तित करें (या इसके विपरीत) लक्ष्य पार करके FontType के लिए FontConverter.convert():
WOFF -> WOFF2
woff_font = FontLoader.open(“MyFont.woff”) woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)
WOFF2 -> WOFF
woff2_font = FontLoader.open(“MyFont.woff2”) woff_font = FontConverter.convert(woff2_font, FontType.WOFF)
<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”
<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>
सामान्य समस्याएं और सुधार
FontParseException: Invalid WOFF signature - फ़ाइल एक वैध WOFF नहीं है फ़ाइल को खराब नहीं किया गया है और WOFF जादुई बूट के साथ शुरू होता है।.
FontParseException: WOFF table decompression failed एक संपीड़ित टेबल WOFF फ़ाइल के अंदर भ्रष्ट है. फ़ॉन्ट फ़ील्ड को फिर से डाउनलोड करने का प्रयास करें.
WOFF2 का बड़ा उत्पादन WOFF2 Brotli संपीड़न का उपयोग करता है जो छोटे उत्पादों को कम करता हैं। फ़ाइलों की तुलना में WOFF 1 (Zlib) यदि आपका WofF2 आउटपुट अप्रत्याशित रूप से बड़ा है, तो सुनिश्चित करें कि आप एक अनुकूलित TTF स्रोत से शुरू कर रहे हैं।.
अक्सर पूछे जाने वाले प्रश्न
WOFF और Woff2 के बीच क्या अंतर है?
WOFF 1 zlib संपीड़न का उपयोग करता है और Woff 2 Brotli संपाड़ित का इस्तेमाल करता हैं. WIFF2 आमतौर पर WFF की तुलना में 20-30% बेहतर संप्रदाय प्राप्त करता था 1. दोनों उसी मूल TrueType या CFF फ़ॉन्ट डेटा को लपेटते हैं।.
क्या मैं WOFF फ़ाइल से फ़ॉन्ट तालिकाओं तक पहुंच सकता हूं?
हाँ, इसका उपयोग करें inner_font संपत्ति के आधार पर प्राप्त करने के लिए TtfFont,फिर टेबल के माध्यम से inner_font.ttf_tables.
क्या पुस्तकालय WOFF मेटाडेटा का समर्थन करता है?
दोनों ही हैं। WoffFont और Woff2Font A को दिखाएं metadata_xml संपत्ति वैकल्पिक XML मेटाडेटा ब्लॉक को शामिल करें।.