الخطوط
@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> خطًا وسلسلة نصية. تُقاس الصفوف بالخلايا، لذا تستقر الحروف في تخطيطات flexbox مثل أي مكوّن <Text> آخر.
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 | وضع دمج محدد صراحةً |
تُطبّق قواعد الدمج الأفقي الست كلها: الحروف المتساوية، والشرطة السفلية، والتسلسل الهرمي، والزوج المتقابل، وحرف 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 والمحارف الموسومة برموز بالنظام العشري أو الثماني أو السادس عشري. تُعرض خطوط TOIlet بصيغة .tlf كنص عادي. فضّل الخطوط المرسومة بمحارف ASCII أو محارف رسم الإطارات؛ لا يساوي عرض محارف برايل والرموز التعبيرية خلية واحدة في Menlo.
الترخيص
الخطوط المضمّنة هي خطوط توزيعة FIGlet 2.2.5، مطابقة لها بايتًا ببايت، بموجب رخصة BSD ذات البنود الثلاثة الخاصة بـ FIGlet. يحتفظ كل خط ببيانات نسبه في أسطر تعليقاته، المتاحة وقت التشغيل عبر font.comment. لا تُضمّن الخطوط الشائعة التي لا تملك إذنًا بإعادة التوزيع، مثل Doom و Larry 3D و ANSI Shadow و Calvin S.
التحقق بالمقارنة مع figlet
تعيد مجموعة الاختبارات تشغيل 273 ناتجًا مسجلًا من الملف الثنائي الفعلي لبرنامج figlet بالإصدار 2.2.5: كل خط مضمّن في كل وضع تخطيط، والالتفاف، وضبط المحاذاة، والنص من اليمين إلى اليسار، ووضع الفقرات، ومدخل اختبار الانحدار الخاص بـ FIGlet. تتطابق جميعها تمامًا.