سوالات متداول
مجوزها و متن باز
مدل مجوز چیست؟
Aspose.Font FOSS برای Python تحت مجوز MIT. شما میتوانید این نرمافزار را بدون محدودیت استفاده کنید، کپی کنید، تغییر دهید، ادغام کنید، منتشر کنید، توزیع کنید، مجوز فرعی بدهید یا نسخههای آن را بفروشید. تنها شرط این است که اطلاعیه حق کپیرایت و متن مجوز در تمام نسخهها یا بخشهای قابل توجه نرمافزار گنجانده شود.
آیا میتوانم از آن در محصولات تجاری استفاده کنم؟
بله. مجوز MIT اجازه استفاده در محصولات بستهمنبع و تجاری را میدهد. هیچ تعهدی برای حقالامتیاز یا ذکر منبع فراتر از حفظ هدر حق کپیرایت در نسخههای خودتان از کتابخانه وجود ندارد. نکته: CffFont کلاس بهروزرسانی شده است (API_MODIFIED)؛ ممکن است کدهای موجود به تنظیمات جزئی نیاز داشته باشند.
آیا نسخهٔ پرداختی با ویژگیهای بیشتر وجود دارد؟Aspose.Font FOSS نسخهٔ متن باز است. نسخهٔ FOSS شامل TTF، OTF، CFF,
Type 1، WOFF، WOFF2 و EOT — که اکثر کارهای واقعی فونت را پوشش میدهد.
نصب و پیشنیازها
چگونه Aspose.Font FOSS را برای Python نصب کنم؟
پکیج بهروز شده را نصب کنید (نیاز به Python 3.10+ دارد):
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .فونت API اصلاح شده است (API_MODIFIED). هیچ وابستگی بومی در سطح سیستم لازم نیست.
کدام نسخههای Python پشتیبانی میشوند؟
Python 3.10 و بالاتر. کتابخانه فقط از ویژگیهای کتابخانه استاندارد استفاده میکند، بنابراین بر روی CPython و پیادهسازیهای PyPy که Python 3.10+ را پشتیبانی میکنند، کار میکند.
آیا وابستگیهای بومی یا پلتفرمی وجود دارد؟
نه. Aspose.Font FOSS برای Python هیچ افزونه C ندارد، هیچ قلم سیستمی ندارد و هیچ API پلتفرمی ندارد. بهطور یکسان بر روی Windows، macOS و Linux کار میکند.
پشتیبانی از فرمتها
کدام فرمتهای قلم میتوانند خوانده شوند؟
FontLoader.open() میتواند TTF، OTF، CFF (بهصورت مستقل)، Type 1، WOFF، WOFF2 و EOT را بارگذاری کند.
from aspose_font import FontLoader
font = FontLoader.open("MyFont.ttf")کدام فرمتها میتوانند نوشته شوند؟
FontConverter.convert() از تبدیل به TTF، CFF، WOFF و WOFF2 پشتیبانی میکند. قلم خروجی میتواند به صورت بایت یا یک جریان فایل ذخیره شود.
آیا بازگشایی WOFF2 بهصورت داخلی است؟
بله. فشردهسازی و بازگشایی Brotli برای WOFF2 بهصورت کامل درون کتابخانه پیادهسازی شدهاند. هیچ بستهٔ خارجی brotli نیازی نیست.
API Usage
چگونه یک قلم را بارگذاری کنم و متادیتای آن را بررسی کنم؟
از FontLoader.open() استفاده کنید که یک نمونهٔ Font برمیگرداند. برای قلمهای TTF/OTF به TtfFont تبدیل کنید تا به ویژگیهای خاص TTF دسترسی داشته باشید:
from aspose_font import FontLoader
from aspose_font import TtfFont
ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.num_glyphs)چگونه یک TTF را به WOFF2 تبدیل کنم؟
قلم را با FontLoader.open() بارگذاری کنید، سپس آن را به FontConverter.convert() پاس دهید و FontType.WOFF2 را به عنوان هدف مشخص کنید. شیء بازگشتی یک نمونهٔ Woff2Font است که آمادهٔ سریالسازی است:
from aspose_font import FontLoader
from aspose_font.converter import FontConverter # internal API — may change between releases
from aspose_font import FontType
font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)چگونه یک قلم را برای تحویل وب زیرمجموعه کنم؟
از FontSubsetter.subset_by_text() استفاده کنید تا یک قلم جدید تولید شود که فقط گلیفهای لازم برای رندر رشتهٔ متنی ارائهشده را شامل میشود و اندازهٔ فایل را برای جاسازی در صفحه وب کاهش میدهد:
from aspose_font import FontLoader
from aspose_font import FontSubsetter
font = FontLoader.open("Roboto-Regular.ttf")
subset = FontSubsetter.subset_by_text(font, "Hello World")چگونه به گلیفهای جداگانه دسترسی پیدا کنم؟
از Font.glyph_accessor استفاده کنید که GlyphAccessor را پیادهسازی میکند. get_glyph_by_unicode() را با یک نقطه کد یونیکد صدا بزنید تا شیء گلیف مربوطه را بازیابی کنید و معیارها یا طرحخط آن را بررسی کنید:
from aspose_font import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
glyph = font.glyph_accessor.get_glyph_by_unicode(0x0041) # 'A'
print(glyph.glyph_id)محدودیتهای شناختهشده
آیا Font.to_bytes() پیادهسازی شده است؟
کلاس پایهٔ انتزاعی Font.to_bytes(font_type) در صورت فراخوانی مستقیم NotImplementedError را برمیانگیزد. با این حال، تمام کلاسهای فونت ملموس — TtfFont، CffFont، WoffFont، Woff2Font، EotFont و Type1Font — to_bytes() را بهطور کامل پیادهسازی میکنند. یک فونت را با FontLoader.open() بارگذاری کنید و to_bytes() را بر روی نمونهٔ ملموس بازگرداندهشده صدا بزنید. FontConverter.convert() همچنین میتواند یک فونت جدید در هر قالب هدف پشتیبانیشده تولید کند.
آیا تمام انواع جدول در TtfTableSet پر شدهاند؟
فقط جداول رایج (head, hhea, maxp, os2, name, post, cmap, loca, hmtx, kern) بهعنوان ویژگیهای نامدار روی TtfTableSet در دسترس هستند. جداول دیگر میتوانند بهصورت بایتهای خام از طریق TtfFont.get_table_bytes(tag) خوانده شوند.
آیا کتابخانه از ایجاد نمونهٔ فونت متغیر پشتیبانی میکند؟
بله. TtfFont.instantiate(coordinates) یک TtfFont ثابت در مختصات محورهای مشخص تولید میکند. ابتدا از TtfFont.is_variable و TtfFont.axes برای شناسایی محورهایتغییر استفاده کنید.