کتابخانهٔ پایتون برای خواندن فونتها
API پایتون منبع باز که به توسعهدهندگان نرمافزار و طراحان امکان میدهد به راحتی فونتها را دستکاری، ویرایش و تجزیه و تحلیل کنند.
FontTools نقش حیاتی در طراحی، برندینگ و ارتباطات ایفا میکند و قلمها بلوکهای سازنده زیباییشناسی بصری هستند. در عصر دیجیتال، مدیریت و دستکاری قلمها بهطور فزایندهای مهم شدهاند. یکی از ابزارهای قدرتمندی که بین توسعهدهندگان و طراحان محبوبیت یافته است، کتابخانه FontTools است. FontTools یک کتابخانه متنباز پایتون است که مجموعهای جامع از ابزارها را برای کار با قلمها فراهم میکند و بهعنوان ابزاری قدرتمند برای علاقهمندان به قلم، طراحان، توسعهدهندگان و حروفنگاران تبدیل شده است. مجموعه ویژگیهای گسترده آن، همراه با رابط مبتنی بر پایتون، آن را به گزینهای عالی برای وظایف و پروژههای مرتبط با قلم تبدیل میکند.
FontTools یک کتابخانه منبع باز است که به توسعهدهندگان نرمافزار امکان تعامل برنامهنویسی با فایلهای قلم را میدهد. این کتابخانه طیف گستردهای از عملکردها را برای دستکاری، ویرایش و تجزیه و تحلیل قلمها ارائه میکند. ویژگیهای آن شامل دستکاری قلمها به روشهای مختلف، عملیات پایه ویرایش گلیف، ادغام پیشرفته قلمها، حذف گلیفهای منفرد، پشتیبانی از جدول SFNT، شناسایی و پیادهسازی مقادیر مختلف SFNT، تغییر کانتورهای گلیف، تنظیم معیارهای قلم، تغییر رمزگذاری قلم، افزودن یا حذف جداول، تبدیل تعاریف چیدمان بین سیستمهای چیدمان مختلف، یافتن و ویرایش رشتههای نام و غیره میباشد.
کتابخانه FontTools به برنامهنویسان نرمافزار امکان دسترسی، ویرایش و تجزیه و تحلیل برنامهنویسیشده به انواع مختلف فایلهای قلم را میدهد. این کتابخانه از چندین فرمت قلم پشتیبانی میکند، از جمله TrueType (TTF)، OpenType (OTF)، AFM، تا حدی Type 1، و برخی فرمتهای مخصوص مک، که آن را به گزینهای چندمنظوره برای کار با انواع قلمها تبدیل میکند. FontTools از جامعهای پویا و حامی بهره میبرد. این پروژه منبع باز است و بهطور فعال نگهداری میشود، با بهروزرسانیها و رفع اشکال منظم. چه در حال خودکارسازی دستکاری قلمها، تنظیم دقیق نوعخطها، یا انجام تجزیه و تحلیل دقیق قلم باشید، FontTools ابزارها و انعطافپذیری لازم برای دستیابی به اهداف شما را بهصورت کارآمد فراهم میکند.
شروع کار با FontTools
FontTools به Python 3.8 یا بالاتر نیاز دارد. روش پیشنهادی برای نصب FontTools استفاده از PyPI است. لطفاً برای نصب روان، دستور زیر را استفاده کنید.
نصب FontTools از طریق NuGet
pip install fonttools همچنین میتوانید بهصورت دستی نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از مخزن GitHub دانلود کنید.
ویرایش و دستکاری قلمها از طریق API پایتون
کتابخانه متنباز FontTools بسیار آسان برای استفاده است و شامل چندین ویژگی مهم میشود که به توسعهدهندگان نرمافزار امکان میدهد فونتها را به روشهای مختلف در برنامههای پایتون خود دستکاری کنند. این کتابخانه به آنها اجازه میدهد اطلاعات را از فایلهای فونت استخراج کنند، خطوط گلیف را تغییر دهند، معیارها (متریکها) را دستکاری کنند و حتی از صفر فونتهای جدید ایجاد کنند، کارهای تکراری مرتبط با فونت را خودکار کنند و غیره. با استفاده از کتابخانه FontTools، توسعهدهندگان نرمافزار میتوانند خطوط گلیف را اصلاح کنند، معیارها را تنظیم کنند، رمزگذاری را تغییر دهند و جداول را اضافه یا حذف کنند. این انعطافپذیری به طراحان اجازه میدهد فونتها را بر اساس نیازهای خاص تنظیم دقیق کنند یا نسخههای سفارشی برای پروژههای خود ایجاد نمایند.
چگونه مسیرهای خطوط بیرونی را با API پایتون اصلاح کنیم؟
path_orig = get_outline(font, "a")
startdraw(200,200)
paths = []
for i in path_orig:
if i[0] == 'moveTo':
path = draw.BezierPath()
path.moveTo((i[1][0]))
if i[0] == 'lineTo':
path.lineTo((i[1][0]))
if i[0] == 'qCurveTo':
path.qCurveTo(*(i[1]))
if i[0] == 'closePath':
path.closePath()
paths.append(path)
finalpath = paths[0].difference(paths[1])
finalpath.scale(0.3) #let's scale it down!
draw.fill(0.5)
draw.stroke(0)
draw.drawPath(finalpath)
show()
دستکاری گلیفها از طریق API پایتون
کتابخانه منبع باز FontTools کار را برای توسعهدهندگان نرمافزار آسان میکند تا بهصورت برنامهنویسی گلیفهای فردی را دستکاری کنند. این کتابخانه روشهایی برای دسترسی و تغییر خطوط بیرونی گلیفها، معیارها و ویژگیها فراهم میکند و به کاربران انعطافپذیری میدهد تا فونتها را بر اساس نیازهای خاص خود سفارشی کنند. چه تنظیم جفتهای کرنینگ، تغییر شکل گلیفها، افزودن لیگچرها، یا مقایسه خطوط بیرونی گلیفها باشد، FontTools فرآیند دستکاری گلیفها را ساده میکند. مثال زیر نشان میدهد چگونه خطوط بیرونی دو گلیف را مقایسه کرده و نتایج را با استفاده از کد پایتون نمایش دهیم.
چگونه خطوط بیرونی دو گلیف را با استفاده از API پایتون مقایسه کنیم؟
from fontTools.ttLib import TTFont
from fontTools.pens.recordingPen import RecordingPen
font = TTFont(filename)
cmap = font.getBestCmap()
gs = font.getGlyphSet()
g1 = gs[cmap[ord("A")]]
g2 = gs[cmap[ord("B")]]
p1 = RecordingPen()
p2 = RecordingPen()
g1.draw(p1)
g2.draw(p2)
print(p1.value == p2.value)
تولید و تبدیل قلمها از طریق API پایتون
کتابخانه منبع باز FontTools قابلیتهای تولید فایلهای فونت جدید یا تبدیل فایلهای موجود به فرمتهای مختلف را ارائه میدهد. این ویژگی بهویژه برای طراحان و توسعهدهندگانی که نیاز به ایجاد فونتهای سفارشی یا سازگار کردن فونتها برای پلتفرمهای خاص دارند، مفید است. با FontTools، کاربران میتوانند نمونههای فونت با وزنها، سبکها و تغییرات مختلف تولید کنند یا فونتها را بهصورت یکپارچه بین فرمتهای TrueType و OpenType تبدیل نمایند. مثال زیر نشان میدهد چگونه فرمت CFF را به فرمت CFF2 با استفاده از دستورات پایتون تبدیل کنیم.