معرفی
قالب OpenType جاسازیشده (EOT) یک قالب قلم فشرده است که اصلاً برای جاسازی قلمهای TrueType در صفحات وب توسعه یافته بود. یک فایل EOT یک قلم TTF یا OTF را با سرآیند با اندازه ثابت که شامل فیلدهای متادیتا برای توصیف ابعاد قلم، نسخه، مجموعه کاراکترها و مجوزهای جاسازی است، میپیچد. اگرچه توسعه وب مدرن بهطور عمده به WOFF/WOFF2 مهاجرت کرده است، فایلهای EOT همچنان در اسناد قدیمی و برنامههای سازمانی در گردش هستند.
Aspose.Font FOSS برای Python دسترسی مستقیم به جزئیات داخلی فونت EOT را از طریق کلاس EotFont و همراه آن EotHeader فراهم میکند. میتوانید یک فایل EOT را با FontLoader.open بارگذاری کنید، فیلدهای هدر را بخوانید، TtfFont داخلی را پیمایش کنید، و نتیجه را با استفاده از Font.save به بایتها یا به یک فایل سریالسازی کنید. این کتابخانه بر روی PyPI به عنوان aspose-font منتشر شده و تحت مجوز MIT License عرضه میشود. هیچ وابستگی تجاری اجباری ندارد و با زمان اجرای استاندارد Python 3 کار میکند.
ویژگیهای کلیدی
بارگذاری قلمهای EOT
از FontLoader.open برای بارگذاری یک فایل EOT از مسیر یا یک شیء بایت استفاده کنید. این متد یک نمونه EotFont را برمیگرداند هنگامی که امضای EOT را تشخیص میدهد:
from aspose_font import FontLoader, EotFont
font = FontLoader.open("fonts/sample.eot")
assert isinstance(font, EotFont)
print(font.font_name) # e.g. "Roboto"
print(font.font_family) # e.g. "Roboto"
print(font.num_glyphs) # number of glyphs in the inner font
FontLoader.open پسوند فایل و جادوی سرآیند را میخواند تا قالب را بهصورت خودکار تشخیص دهد. برای قلمهای رایج نیازی به آرگومان font_type نیست.
خواندن متادیتای EotHeader
EotFont فیلدهای هدر را بهصورت مستقیم بهعنوان ویژگیها در کلاس در دسترس میگذارد. اینها متناظر با فیلدهای تعریفشده در مشخصات باینری EOT هستند:
from aspose_font import FontLoader, EotFont, EotSerializer
# Load EOT — FontLoader returns an EotFont instance for .eot files
loaded = FontLoader.open("fonts/sample.eot")
# Serialize back to bytes to confirm the font loaded correctly
eot_bytes = EotSerializer.serialize(loaded)
print(f"EOT data loaded: {len(eot_bytes)} bytes")
# Base Font properties work on any loaded font
print("Font name:", loaded.font_name)
print("Glyphs :", loaded.num_glyphs)
کلاس EotFont متادیتاهای هدر زیر را بهعنوان ویژگیها در دسترس میگذارد:
eot_version(int) — نسخهٔ فرمت EOT (مثلاً0x00020002)flags(int) — پرچمهای مجوز جاسازیcharset(int) — شناسهٔ مجموعهٔ کاراکتر (0 = ANSI، 1 = DEFAULT)italic(int) — پرچم ایتالیک (0 یا 1)weight(int) — وزن قلم (مثلاً 400 برای Regular، 700 برای Bold)fs_type(int) — بیتهای جاسازی fsType OS/2
از flags و fs_type برای تعیین اینکه آیا قلم اجازهٔ زیرمجموعهسازی یا تعبیه را میدهد، استفاده کنید، که هنگام پردازش قلمها برای خطوط توزیع مجدد مرتبط است.
دسترسی به TtfFont داخلی
هر EotFont یک قلم استاندارد TrueType را میپیچد. ویژگی inner_font نمونهٔ TtfFont را برمیگرداند و دسترسی به مجموعهٔ کامل جدولهای TrueType را برای شما فراهم میکند:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/sample.eot")
# Metrics are accessible directly from the loaded font
metrics = loaded.metrics
print("Units per em :", metrics.units_per_em)
print("Ascender :", metrics.ascender)
print("Descender :", metrics.descender)
print("Line gap :", metrics.line_gap)
ویژگی inner_font در EotFont نمونهٔ TtfFont بستهبندیشده را برمیگرداند و دسترسی به مجموعهٔ کامل جدولهای TrueType، جفتهای کرن و جدولهای کدگذاری را فراهم میکند.
سریالسازی EOT به بایتها
EotSerializer.serialize هر شیء Font را به یک رشته بایت خام EOT تبدیل میکند:
from aspose_font import FontLoader, EotFont, EotSerializer
font = FontLoader.open("fonts/sample.eot")
assert isinstance(font, EotFont)
eot_bytes = EotSerializer.serialize(font)
with open("output/sample_copy.eot", "wb") as fh:
fh.write(eot_bytes)
print(f"Serialized {len(eot_bytes)} bytes")
تبدیل TTF به EOT
EotSerializer.serialize هر نمونهٔ Font را میپذیرد، بنابراین میتوانید یک TTF را بارگذاری کنید و بهصورت مستقیم به بایتهای EOT سریالسازی کنید:
from aspose_font import FontLoader, EotFont, EotSerializer
ttf = FontLoader.open("fonts/Roboto-Regular.ttf")
eot_bytes = EotSerializer.serialize(ttf)
with open("output/Roboto-Regular.eot", "wb") as fh:
fh.write(eot_bytes)
reloaded = FontLoader.open("output/Roboto-Regular.eot")
assert isinstance(reloaded, EotFont)
print("Converted and verified:", reloaded.font_name)
معیارهای قلم و جفتهای کرن
EotFont رابط کامل Font را به ارث میبرد، بنابراین معیارها و رمزگذاری بهصورت مستقیم در دسترس هستند بدون اینکه از طریق inner_font عبور کنند:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/sample.eot")
metrics = loaded.metrics
print(f"Ascender : {metrics.ascender}")
print(f"Descender: {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline: {metrics.underline_position}")
for pair in loaded.get_kern_pairs():
print(f" Kern: {pair}")
شروع سریع
نصب کتابخانه:
.venv/bin/pip install aspose-font
بارگذاری و بررسی یک قلم EOT:
from aspose_font import FontLoader, EotFont, EotSerializer
loaded = FontLoader.open("sample.eot")
# Base font info
print(f"Font name : {loaded.font_name}")
print(f"Glyphs : {loaded.num_glyphs}")
# Metrics
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
# Serialize the loaded font back to EOT bytes
eot_bytes = EotSerializer.serialize(loaded)
print(f"Serialized: {len(eot_bytes)} bytes")
فرمتهای پشتیبانیشده
| قالب | پسوند | خواندن | نوشتن |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
تمام فرمتهای فهرستشده در بالا برای بارگذاری از طریق FontLoader.open پشتیبانی میشوند. برای نوشتن به یک فرمت خاص، از Font.save یا EotSerializer.serialize برای EOT استفاده میشود.
منبع باز و مجوزدهی
Aspose.Font FOSS برای Python تحت مجوز MIT منتشر شده است. میتوانید آن را بهصورت شخصی، تجاری و پروژههای منبع باز بدون هزینه استفاده کنید. کد منبع در GitHub در دسترس است و بسته از طریق PyPI به عنوان aspose-font توزیع میشود.