مقدمه

Aspose.Font FOSS برای Python مجموعه‌ای منسجم از کلاس‌ها را برای هر کار معمول مدیریت فونت فراهم می‌کند: بارگذاری فایل‌های فونت در قالب‌های متعدد، خواندن متادیتا و داده‌های گلیف، تبدیل بین قالب‌ها، زیرمجموعه‌سازی برای تحویل وب، و پاک‌سازی جداول باینری برای بهینه‌سازی حجم فایل. این راهنما هر قابلیت اصلی را با مثال‌های کد عملی که از API تأیید شده کتابخانه استخراج شده‌اند، مرور می‌کند.

پکیج (aspose-font) تحت مجوز MIT است، به Python نسخه 3.10+ نیاز دارد و هیچ وابستگی کتابخانه فونت سطح‌سیستم‌عامل ندارد. آن را با pip install aspose-font>=1.0.0 نصب کنید.


ویژگی‌های کلیدی

بارگذاری فونت‌ها با FontLoader

FontLoader نقطه ورود واحد برای تمام عملیات بارگذاری فونت است. متد استاتیک open() مسیر فایل (str یا Path) را می‌پذیرد و به‌صورت خودکار قالب را تشخیص می‌دهد. متد load() بایت‌های خام را برای جریان‌های کاری در حافظه می‌پذیرد. هر دو یک شیء از نوع Font برمی‌گردانند که می‌توانید بلافاصله آن را بررسی کنید.

from aspose_font.loader import FontLoader

# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")

# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
    font_bytes = f.read()
font = FontLoader.load(font_bytes)

خواندن متادیتای فونت از طریق Font Base Class

پس از بارگذاری، کلاس پایه Font ویژگی‌های متادیتای استاندارد را بدون نیاز به تجزیه جداول باینری فونت در اختیار شما می‌گذارد. ویژگی‌های font_name، font_family، font_style و num_glyphs نیازهای متادیتای رایج را پوشش می‌دهند.

from aspose_font.loader import FontLoader

font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name:   {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style:  {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")

کدگذاری گلیف و دسترسی

FontEncoding نقاط کد یونیکد را به شناسه‌های گلیف نگاشت می‌کند. برای نقاط کد تک‌تک از unicode_to_gid() استفاده کنید یا برای فهرست کردن پوشش کامل فونت از get_all_codepoints() بهره ببرید. سپس GlyphAccessor اشیای گلیف را بر اساس شناسه از طریق get_glyph_by_id()، بر اساس یونیکد از طریق get_glyph_by_unicode()، یا برای یک رشته متنی از طریق get_glyphs_for_text() بازیابی می‌کند.

from aspose_font.loader import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41)  # 'A'
print(f"Glyph ID for 'A': {glyph_id}")

# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

# Inspect path commands
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

تبدیل فونت با FontConverter

FontConverter.convert() یک فونت بارگذاری‌شده را بین قالب‌های پشتیبانی‌شده تبدیل می‌کند. فونت منبع و شناسه قالب هدف را عبور دهید تا یک شیء فونت جدید در قالب هدف دریافت کنید. این روش CFF، TTF، WOFF، WOFF2، EOT و Type 1 را هم به عنوان منبع و هم به عنوان هدف پشتیبانی می‌کند.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter

source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")

بهینه‌سازی وب با FontCleaner

FontCleaner.clean_for_web() جدول‌های باینری که برای تحویل فونت وب ضروری نیستند را حذف می‌کند — به‌طور خاص DSIG، FFTM و meta — و رکوردهای نام پلتفرم مک (platform_id=1) را از جدول name پاک می‌سازد. نتیجه یک باینری سبک‌تر است که بار شبکه را کاهش می‌دهد بدون اینکه خطوط یا متریک‌ها را تغییر دهد. آرگومان‌های کلیدی اختیاری به شما اجازه می‌دهند در صورت نیاز انواع خاصی از جدول‌ها را حفظ کنید.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

font = FontLoader.open("Roboto-Regular.ttf")

# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)

# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
    font,
    drop_metadata_tables=False,
    drop_legacy_tables=True,
    drop_mac_names=True,
)

بازرسی مسیر گلیف

هر شیء Glyph نمایهٔ خود را به‌صورت GlyphPath ارائه می‌دهد که دنبالهٔ commands آن شامل نمونه‌های تایپ‌شدهٔ MoveTo، LineTo، QuadraticTo، CurveTo و ClosePath است. هر فرمان ویژگی‌های مختصاتی مربوطه را حمل می‌کند — برای مثال، CurveTo دارای x1، y1، x2، y2، x و y است — که به شما امکان استخراج داده‌های خام Bézier برای رندرینگ، تولید SVG یا هندسهٔ برخورد را می‌دهد.

from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo

font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")

شروع سریع

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")

فرمت‌های پشتیبانی‌شده

قالبپسوندخواندننوشتن
TTF.ttf✓✓
OTF.otf✓✓
CFF.cff✓✓
TYPE1.pfb / .pfa✓✓
WOFF.woff✓✓
WOFF2.woff2✓✓
EOT.eot✓✓

منبع باز و مجوزدهی

Aspose.Font FOSS برای Python تحت مجوز MIT است. منبع در GitHub در aspose-font-foss/Aspose.Font-FOSS-for-Python قرار دارد و بسته در PyPI به عنوان aspose-font موجود است.


شروع کار

منابع مرتبط