opentype.js: پارسر و رایتر فونت برای مرورگر و Node.js
خلاصهٔ کاملتر
opentype.js یه کتابخونه جاوااسکریپتیه که کارش پارس کردن و نوشتن فونتهای OpenType و TrueType هست. چه توی مرورگر باشی چه توی محیط Node.js، این ابزار بهت دسترسی مستقیم به شکل هندسی حروف (گلیفها) میده تا بتونی اونها رو بخونی، رندر کنی یا تغییرشون بدی.
مشکلی که opentype.js حل میکنه اینه که معمولاً توی وب، فونتها فقط «نمایش داده میشن» و دسترسی به ساختار داخلیشون کار سختیه. این کتابخونه اون دیوار رو برمیداره و بهت اجازه میده با مسیرها (path) و نقاط فونت مثل دادههای واقعی کار کنی.
یکی از قابلیتهای جالبش اینه که میتونی شکل حروف رو بعد از پارس کردن تغییر بدی. مثلاً یه قابلیت Snap وجود داره که نقاط گلیف رو به یه شبکه مجازی میچسبونه. این کار با تابعی انجام میشه که هر مختصات رو با یه فرمول ترکیبی بین مقدار اصلی و نزدیکترین مضرب فاصله گرد میکنه:
const snap = (v, distance, strength) =>
(v * (1.0 - strength)) + (strength * Math.round(v / distance) * distance);این تابع روی تمام نقاط یه path (شامل نقاط کنترل bezier از نوع Q و C) اعمال میشه تا خروجی نهایی به شبکه snap بشه.
برای رندر متن هم API سادهای داری. میتونی متن رو روی canvas بکشی، نقاط هندسیاش رو نمایش بدی، یا متریکهایی مثل baseline و ascender رو ببینی:
font.draw(previewCtx, textToRender, 0, 200, fontSize, options);
font.drawPoints(previewCtx, textToRender, 0, 200, fontSize, options);
font.drawMetrics(previewCtx, textToRender, 0, 200, fontSize, options);علاوه بر این، opentype.js از کرنینگ (فاصلهگذاری هوشمند بین حروف)، لیگاچر (ترکیب حروف) و هینتینگ (بهینهسازی رندر در سایزهای کوچک) پشتیبانی میکنه. این گزینهها رو میشه موقع رندر تنظیم کرد.
یه ویژگی دیگه هم پشتیبانی از high-DPI (Retina) هست که canvas رو با توجه به pixel ratio دستگاه اسکیل میکنه تا روی صفحهنمایشهای تیز هم خوب به نظر برسه.
این ابزار برای طراحان فونت، توسعهدهندههای گرافیکی و هر کسی که میخواد با شکل واقعی حروف توی وب کار کنه خیلی مفیده. مثلاً میشه باهاش ابزارهای ویرایش فونت آنلاین، تصویرسازی تایپوگرافی یا افکتهای متنی پیچیده ساخت.
opentype.js تحت لایسنس MIT منتشر شده و کاملاً رایگانه. میشه به صورت ماژول ES وارد کرد:
import * as opentype from "/dist/opentype.mjs";نکات کلیدی:
- پارس و رایت فونتهای OpenType و TrueType در مرورگر و Node.js
- دسترسی مستقیم به گلیفها و مسیرهای هندسی حروف
- امکان تغییر شکل حروف پس از پارس، مثل snap به شبکه مجازی
- پشتیبانی از کرنینگ، لیگاچر و هینتینگ
- رندر متن روی canvas با نمایش نقاط و متریکها
- سازگار با صفحهنمایشهای high-DPI
- لایسنس MIT، متنباز و رایگان




