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.

En direct100×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>;}

Installation

bun add @textjs/font

Utilisation

<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.

layoutfigletEffet
"default"-sLayout de la police, généralement avec fusion
"full"-WPleine largeur ; caractères sans contact
"fitted"-kCrénage ; rapprochement des caractères jusqu’au contact
"smushed"-SFusion selon les règles de la police, même pour les polices à crénage
"universal"-oSuperposition des caractères suivants sur les précédents
0–63-mMode 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

ImportLignesRemarques
@textjs/font/standard6Police par défaut de FIGlet
@textjs/font/slant, smslant6, 5Italique
@textjs/font/small5Compacte
@textjs/font/big8Caractères grecs inclus
@textjs/font/banner8Lettrage en #, katakana et cyrillique
@textjs/font/block, lean8Contours, droits et inclinés
@textjs/font/shadow, smshadow5, 4Ombre portée
@textjs/font/script, smscript7, 5Cursive
@textjs/font/mini4Minuscule
@textjs/font/bubble, digital4, 3Lettres dans des cercles et des cases
@textjs/font/ivrit6Hébreu, de droite à gauche
@textjs/font/term1Entré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.

Modifier cette page sur GitHub