قلم‌ها

⁦@textjs/font⁩: قلم‌های FIGlet به‌صورت ماژول‌های ES، با چیدمانی دقیقاً مانند برنامهٔ figlet.

@textjs/font فایل‌های ⁦FIGfont 2⁩ با پسوند (.flf) را تجزیه می‌کند و دقیقاً مانند برنامهٔ figlet می‌چیند. هر فونت یک ماژول ES است، بنابراین فقط فونت‌هایی که وارد می‌کنید در خروجی قرار می‌گیرند.

زنده100×19 · booting Turbolog…tsx
preview://fonts:1
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 پیروی می‌کند.

layoutfigletاثر
"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/standard6پیش‌فرض FIGlet
@textjs/font/slant، smslant6، 5ایتالیک
@textjs/font/small5فشرده
@textjs/font/big8شامل حروف یونانی
@textjs/font/banner8حروف‌چینی با #، کاتاکانا و سیریلیک
@textjs/font/block، lean8توخالی، ایستاده و مایل
@textjs/font/shadow، smshadow5، 4سایه‌دار
@textjs/font/script، smscript7، 5دست‌نویس پیوسته
@textjs/font/mini4بسیار کوچک
@textjs/font/bubble، digital4، 3حروف در دایره‌ها و کادرها
@textjs/font/ivrit6عبری، راست‌به‌چپ
@textjs/font/term1ورودی بدون تغییر

هر گلیف از نویسه‌های قابل‌چاپ 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. همهٔ آن‌ها دقیقاً مطابقت دارند.

ویرایش این صفحه در GitHub