Introduction

فایل های فونت در اطراف جدول ها ساختار یافته اند – هر جدول یک دسته خاص از داده ها مانند گلیف، نقشه برداری شخصیت، نامگذاری متادیت یا اندازه گیری افقی را ذخیره می کند. درک و دسترسی به این جدول برای وظایف مانند تجزیه و تحلیل فونتا، ویرایش متدیت، تضمین کیفیت و تبدیل فرمت ضروری است.

Aspose.Font FOSS for Python (aspose-font) به شما دسترسی مستقیم به مجموعه کامل از جدول های OpenType و TrueTYpe را از طریق یک API Python خالص ارائه می دهد.کتابخانه تحت مجوز MIT با وابستگی های خارجی صفر منتشر می شود، بنابراین شما می توانید آن را در هر پروژه بدون نگرانی های مجمعی ادغام کنید.

این پست از طریق کلاس های جدول کلیدی در دسترس در کتابخانه – از خواندن عنوان متادیت ها به بررسی داده های گلیف و تغییر سوابق نام – همه پشتیبانی شده توسط TtfTableSet کانتینر در TtfFont.


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

بارگذاری یک فونت و دسترسی به جدول ها

هر بار که با FontLoader در این صورت، میزهای خود را از طریق ttf_tables املاک در TtfFont.برای TtfTableSet موضوع دسترسی به هر جدول استاندارد را تایپ می کند، علاوه بر بایت های خام از طریق get_raw() برای جدول های سفارشی یا غیر قابل شناسایی.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap

# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")

خواندن میز سر

و این HeadTable ذخیره سازی پارامترهای اساسی متن: واحدها در هر ام، ویرایش، جعبه محدود، تاریخ ایجاد و پرچم سبک. این ارزش ها برای رندر موتورها و تایید کننده های فونت حیاتی است.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head

print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")

کار با میز نام

و این NameTable همه متادان قابل خواندن انسان را در اختیار دارد: نام خانوادگی فونت، سبک، کپی رایت، مجوز، طراح و توصیف.شما می توانید سوابق با نام شناسه جستجو کنید، نام های محلی را دریافت کنید یا ورودی ها را برای بازنویسی تغییر دهید.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name

# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")

# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
    print(f"  {lang}: {value}")

# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")

بررسی میز CMAP

و این CmapTable نقشه ها Unicode کدها به Glyph ID ها. این می تواند شامل چند زیر جدول برای پلتفرم های مختلف و ترکیبات رمزگذاری. best_subtable() برای به دست آوردن مناسب ترین نقشه برداری برای مورد استفاده شما.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap

# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")

# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")

OS/2 و Metrics افقی

و این Os2Table ارائه می دهد OS/2 و ویندوز مشخصات از جمله تایپوگرافی صعود / پایین، پرچم های ادغام، و طبقه بندی Panose. HheaTable و HmtxTable ارائه اندازه گیری های طرح افقی مورد استفاده برای شکل دادن متن.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea

print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")

print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")

Kerning و Glyph Data

و این KernTable در این بخش از کتاب، به نقل از آکاایران، می توان گفت: «مردم برای تغییر سطح زمین، یکدیگر را با هم می سازند. GlyfTable حاوی داده های واقعی گلیف برای فونت های TrueType است.شما همچنین می توانید از PostTable برای حل نام های گلیف.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")

# Kerning lookup
kern = font.ttf_tables.kern
if kern:
    pairs = kern.pairs
    print(f"Total kern pairs: {len(pairs)}")
    # Look up a specific pair by glyph IDs
    adjustment = kern.get(36, 57)
    print(f"Kern adjustment: {adjustment}")

# Glyph name from post table
post = font.ttf_tables.post
if post:
    glyph_name = post.glyph_name(0)
    print(f"Glyph 0 name: {glyph_name}")

سریع شروع

pip install aspose-font>=1.0.0
import aspose_font

# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")

# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
    value = name_table.best_name(name_id, ["en"])
    if value:
        print(f"  Name ID {name_id}: {value}")

# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
    gid = subtable.get_gid(ord(char))
    print(f"  '{char}' -> glyph {gid}")

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

FormatExtensionReadWrite
TTF.tf
OTF.ODF
CFF.cff
WOFF.ووف
WOFF2.واف2
EOT.EOT
TYPE1.pfb / pfa

منبع باز و مجوز

Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.شما آزاد هستید که از آن استفاده کنید، اصلاح و توزیع کنید در هر دو پروژه شخصی و تجاری بدون محدودیت.


شروع می شود

منابع مرتبط