Polices
@textjs/font : polices FIGlet en modules ES, disposées exactement comme avec le programme figlet.
@textjs/font analyse les fichiers FIGfont 2 (.flf) et les met en page exactement comme le programme figlet. Chaque police est un module ES, seules les polices que vous importez sont donc livré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>;}Installation
bun add @textjs/fontUtilisation
<FigletText> prend une police et une chaîne de caractères. Les lignes sont mesurées en cellules, le lettrage s’intègre donc aux layouts flexbox comme tout autre <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> accepte les mêmes polices, tout en conservant ses lettrages intégrés block et compact :
<AsciiFont text="Text.js" font={slant} color="accent" />En dehors de React, renderFiglet renvoie une chaîne par ligne :
import { renderFiglet } from "@textjs/font";import { standard } from "@textjs/font/standard";renderFiglet(standard, "Hello", { layout: "full" });// [" _ _ _ _ ", " | | | | ___ | | | | ___ ", …]Layout
Le layout horizontal suit les options de FIGlet.
layout | figlet | Effet |
|---|---|---|
"default" | -s | Layout de la police, généralement avec fusion |
"full" | -W | Pleine largeur ; caractères sans contact |
"fitted" | -k | Crénage ; rapprochement des caractères jusqu’au contact |
"smushed" | -S | Fusion selon les règles de la police, même pour les polices à crénage |
"universal" | -o | Superposition des caractères suivants sur les précédents |
0–63 | -m | Mode de fusion explicite |
Les six règles de fusion horizontale sont implémentées : caractère identique, trait de soulignement, hiérarchie, paire opposée, grand X et espace insécable de fusion (hardblank).
verticalLayout s’applique au texte multiligne. FIGlet 2.2.5 ne rapproche jamais les lignes, la valeur par défaut est donc "full" ; "fitted", "smushed" et "universal" implémentent les cinq règles verticales, y compris la super-fusion des traits verticaux, et "default" utilise celles de la police.
Retour à la ligne et alignement
columns (ou width dans renderFiglet) coupe le texte entre les mots, puis au milieu des mots, exactement là où figlet -w le ferait. align vaut "left", "center" ou "right" ; sans largeur définie, les lignes s’alignent sur la largeur de la ligne la plus longue. Les polices de droite à gauche comme ivrit s’affichent de droite à gauche et s’alignent à droite ; modifiez ce comportement avec direction.
Polices incluses
| Import | Lignes | Remarques |
|---|---|---|
@textjs/font/standard | 6 | Police par défaut de FIGlet |
@textjs/font/slant, smslant | 6, 5 | Italique |
@textjs/font/small | 5 | Compacte |
@textjs/font/big | 8 | Caractères grecs inclus |
@textjs/font/banner | 8 | Lettrage en #, katakana et cyrillique |
@textjs/font/block, lean | 8 | Contours, droits et inclinés |
@textjs/font/shadow, smshadow | 5, 4 | Ombre portée |
@textjs/font/script, smscript | 7, 5 | Cursive |
@textjs/font/mini | 4 | Minuscule |
@textjs/font/bubble, digital | 4, 3 | Lettres dans des cercles et des cases |
@textjs/font/ivrit | 6 | Hébreu, de droite à gauche |
@textjs/font/term | 1 | Entrée telle quelle |
Chaque glyphe utilise des caractères ASCII imprimables ou Latin-1, chaque sous-caractère occupe donc exactement une cellule dans la police Menlo de DevTools. @textjs/font/all les exporte toutes, ainsi que BUNDLED_FONTS pour les galeries. Les polices sont analysées au premier rendu, pas à l’import.
Polices personnalisées
Toute police FIGfont fonctionne. Récupérez-la, puis analysez-la :
import { parseFont } from "@textjs/font";const doom = parseFont(await (await fetch("/fonts/doom.flf")).text(), "Doom");L’analyseur lit l’en-tête, les lignes de commentaire, les espaces insécables de fusion (hardblanks), les marqueurs de fin, les 102 caractères requis et les caractères étiquetés par leur code en décimal, octal ou hexadécimal. Les polices TOIlet .tlf sont rendues en texte brut. Privilégiez les polices dessinées avec des caractères ASCII ou de tracé de cadres ; le braille et les emoji n’occupent pas une seule cellule en largeur dans Menlo.
Licences
Les polices incluses sont celles de la distribution FIGlet 2.2.5, identiques octet pour octet, sous la licence BSD à 3 clauses de FIGlet. Chacune conserve ses crédits dans ses lignes de commentaire, accessibles à l’exécution via font.comment. Les polices populaires sans autorisation de redistribution, comme Doom, Larry 3D, ANSI Shadow et Calvin S, ne sont pas incluses.
Vérification par rapport à figlet
La suite de tests reproduit 273 sorties enregistrées à partir du véritable binaire figlet 2.2.5 : chaque police incluse dans chaque mode de layout, le retour à la ligne, la justification, le texte de droite à gauche, le mode paragraphe et les données d’entrée des tests de régression de FIGlet. Toutes correspondent exactement.