قلمها
@textjs/font: قلمهای FIGlet بهصورت ماژولهای ES، با چیدمانی دقیقاً مانند برنامهٔ figlet.
@textjs/font فایلهای FIGfont 2 با پسوند (.flf) را تجزیه میکند و دقیقاً مانند برنامهٔ figlet میچیند. هر فونت یک ماژول ES است، بنابراین فقط فونتهایی که وارد میکنید در خروجی قرار میگیرند.
import { FigletText } from "@textjs/font/react";import { slant } from "@textjs/font/slant";export default function Page() { return <FigletText font={slant} color="accent">Text.js</FigletText>;}نصب
bun add @textjs/fontکاربرد
کامپوننت <FigletText> یک فونت و یک رشته میگیرد. ردیفها برحسب سلول اندازهگیری میشوند، بنابراین حروف مانند هر کامپوننت <Text> دیگری در چیدمانهای flexbox قرار میگیرند.
import { FigletText } from "@textjs/font/react";import { big } from "@textjs/font/big";<FigletText font={big} layout="fitted" columns={60} align="center" color="muted"> Deployed</FigletText>کامپوننت <AsciiFont> همان فونتها را میپذیرد و سبکهای حروفچینی داخلی block و compact را حفظ میکند:
<AsciiFont text="Text.js" font={slant} color="accent" />خارج از React، تابع renderFiglet برای هر ردیف یک رشته برمیگرداند:
import { renderFiglet } from "@textjs/font";import { standard } from "@textjs/font/standard";renderFiglet(standard, "Hello", { layout: "full" });// [" _ _ _ _ ", " | | | | ___ | | | | ___ ", …]چیدمان
چیدمان افقی از پرچمهای FIGlet پیروی میکند.
layout | figlet | اثر |
|---|---|---|
"default" | -s | چیدمان فونت، معمولاً ادغامشده |
"full" | -W | عرض کامل؛ نویسهها هرگز به هم نمیرسند |
"fitted" | -k | تنظیم فاصله؛ نویسهها تا رسیدن به یکدیگر نزدیک میشوند |
"smushed" | -S | ادغام طبق قواعد فونت، حتی برای فونتهای با فاصلهٔ تنظیمشده |
"universal" | -o | همپوشانی نویسههای بعدی با نویسههای قبلی |
0–63 | -m | حالت ادغام صریح |
هر 6 قاعدهٔ ادغام افقی پیادهسازی شدهاند: نویسهٔ یکسان، زیرخط، سلسلهمراتب، جفت متقابل، X بزرگ و فاصلهٔ سخت.
گزینهٔ verticalLayout بر متن چندخطی اعمال میشود. FIGlet 2.2.5 هرگز خطها را نزدیکتر روی هم نمیچیند، بنابراین مقدار پیشفرض "full" است؛ حالتهای "fitted"، "smushed" و "universal" پنج قاعدهٔ عمودی، از جمله ادغام فوقفشردهٔ خط عمودی، را پیادهسازی میکنند و حالت "default" از قواعد فونت استفاده میکند.
شکستن خط و تراز
گزینهٔ columns (یا width در renderFiglet) خط را ابتدا در مرز واژهها و سپس در میان واژه میشکند، دقیقاً همانجایی که دستور figlet -w میشکند. مقدار align برابر با "left"، "center" یا "right" است؛ بدون تعیین عرض، ردیفها در محدودهٔ عریضترین ردیف تراز میشوند. فونتهای راستبهچپ مانند ivrit از راست به چپ چاپ و راستچین میشوند؛ برای تغییر این رفتار از گزینهٔ direction استفاده کنید.
فونتهای همراه
| وارد کردن | ردیفها | توضیحات |
|---|---|---|
@textjs/font/standard | 6 | پیشفرض FIGlet |
@textjs/font/slant، smslant | 6، 5 | ایتالیک |
@textjs/font/small | 5 | فشرده |
@textjs/font/big | 8 | شامل حروف یونانی |
@textjs/font/banner | 8 | حروفچینی با #، کاتاکانا و سیریلیک |
@textjs/font/block، lean | 8 | توخالی، ایستاده و مایل |
@textjs/font/shadow، smshadow | 5، 4 | سایهدار |
@textjs/font/script، smscript | 7، 5 | دستنویس پیوسته |
@textjs/font/mini | 4 | بسیار کوچک |
@textjs/font/bubble، digital | 4، 3 | حروف در دایرهها و کادرها |
@textjs/font/ivrit | 6 | عبری، راستبهچپ |
@textjs/font/term | 1 | ورودی بدون تغییر |
هر گلیف از نویسههای قابلچاپ ASCII یا Latin-1 تشکیل شده است، بنابراین هر زیرنویسه در فونت Menlo در DevTools دقیقاً یک سلول است. ماژول @textjs/font/all همهٔ آنها را بههمراه BUNDLED_FONTS برای گالریها صادر میکند. فونتها در نخستین رندر تجزیه میشوند، نه هنگام وارد کردن.
فونتهای سفارشی
هر فونت FIGfont قابلاستفاده است. آن را دریافت و سپس تجزیه کنید:
import { parseFont } from "@textjs/font";const doom = parseFont(await (await fetch("/fonts/doom.flf")).text(), "Doom");تجزیهگر سرآیند، خطهای توضیح، فاصلههای سخت، نشانگرهای پایان، 102 نویسهٔ الزامی و نویسههای دارای برچسب کد در مبنای ده، هشت یا شانزده را میخواند. فونتهای .tlf متعلق به TOIlet بهصورت متن ساده رندر میشوند. فونتهایی را ترجیح دهید که با نویسههای ASCII یا رسم کادر ساخته شدهاند؛ عرض بریل و ایموجی در Menlo یک سلول نیست.
مجوزها
فونتهای همراه، بایتبهبایت همان فونتهای توزیع FIGlet 2.2.5 هستند و تحت مجوز BSD 3-Clause متعلق به FIGlet عرضه میشوند. هر فونت اطلاعات پدیدآورندگان خود را در خطهای توضیح نگه میدارد که هنگام اجرا از طریق font.comment در دسترس است. فونتهای محبوب فاقد اجازهٔ بازتوزیع، مانند Doom، Larry 3D، ANSI Shadow و Calvin S، همراه بسته عرضه نمیشوند.
راستیآزمایی در برابر figlet
مجموعهآزمون، 273 خروجی ثبتشده از فایل باینری واقعی figlet نسخهٔ 2.2.5 را بازپخش میکند: هر فونت همراه در هر حالت چیدمان، شکستن خط، تراز دوطرفه، متن راستبهچپ، حالت پاراگراف و ورودی آزمون بازگشت خود FIGlet. همهٔ آنها دقیقاً مطابقت دارند.