Text.js’te FIGlet yazı tipleri
@textjs/font, FIGlet .flf yazı tiplerini ayrıştırır ve figlet programı gibi yerleştirir. Testleri, figlet 2.2.5 ile kaydedilmiş 273 çıktıyı yeniden üretir ve hepsi eşleşir.
Text.js 0.3, FIGlet yazı tipleri için bir ayrıştırıcı ve render aracı olan @textjs/font paketini ekledi. FIGlet 2.2.5 dağıtımındaki 17 yazı tipini, her biri ayrı bir ES modülü olarak içerir ve çıktısı figlet 2.2.5 ikili dosyasının çıktısıyla birebir eşleşir.
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>;} ______ __ _ /_ __/__ _ __/ /_ (_)____ / / / _ \| |/_/ __/ / / ___/ / / / __/> </ /__ / (__ )/_/ \___/_/|_|\__(_)_/ /____/ /___/FIGlet’in tercih edilme nedeni
<AsciiFont>, 0.1 sürümünden beri block ve compact adlı iki yerleşik yazı stiline sahiptir. FIGlet, 1991’den beri bu tür yazıların standardıdır ve yüzlerce .flf yazı tipi vardır. Bu biçimin desteklenmesi, bunlardan herhangi birinin bir konsol uygulamasına eklenebilmesi demektir.
Bir FIGlet yazı tipi, düz metin dosyasıdır. Bir başlık satırı yüksekliği, hardblank karakterini ve layout kurallarını belirler; ardından her karakter, her satırın sonunda bir bitiş işareti bulunan bir satır bloğu olarak çizilir. FIGlet, varsayılan layout’larında her karakteri bir öncekiyle temas edene kadar sola kaydırır, ardından temas eden iki alt karakterin tek bir karakterde birleşip birleşmeyeceğine karar vermek için yazı tipinin birleştirme kurallarını kullanır.
Layout modları
figlet beş yatay layout sunar ve renderFiglet, aynı beş layout’u layout üzerinden alır:
layout | figlet | Etki |
|---|---|---|
"default" | -s | Yazı tipinin kendi layout’u, genellikle birleştirilmiş |
"full" | -W | Tam genişlik; karakterler asla temas etmez |
"fitted" | -k | Karakterler temas edene kadar birbirine yaklaşır |
"smushed" | -S | Yazı tipinin kurallarıyla birleştirme |
"universal" | -o | Sonraki karakterler öncekilerin üzerine biner |
-1 ile 63 arasındaki bir sayı, ham bir -m layout modudur: -1 tam genişliktir, 0 sığdırılmıştır ve 1 ile 63 arası birleştirme kurallarını seçer. Altı yatay birleştirme kuralının tamamı uygulanmıştır: eşit karakter, alt çizgi, hiyerarşi, karşıt çift, büyük X ve hardblank. Ayrıştırıcı, biçimin geri kalanını da işler: yorum satırları, onluk, sekizlik ve onaltılık tabanda kodla etiketlenmiş karakterler, eksik karakter glifi ve ivrit gibi sağdan sola yazı tipleri.
Satır kaydırma da FIGlet’i izler. width, figlet -w komutunun yaptığı gibi sözcük sınırlarında, bir sözcük satırdan geniş olduğunda ise sözcük içinde satırı böler. figlet -w 80 en fazla 79 sütun yazdırır, dolayısıyla -w N, width: N - 1 değerine karşılık gelir.
İkili dosyayla eşleşme
packages/font/test/fixtures/references.json, gerçek figlet 2.2.5 çalıştırılarak üretilmiş 273 çıktı içerir; birlikte gelen her yazı tipi her layout modunda, satır kaydırma, hizalama, sağdan sola metin, paragraf modu ve FIGlet’in kendi regresyon girdisiyle, run-tests.sh dosyasındaki bayraklar kullanılarak çalıştırılır. Her durum argümanları, girdiyi ve tam çıktıyı saklar; test de komut satırını tekrar seçeneklere dönüştürür:
for (const f of flags) { if (f === "W") opts.layout = "full"; else if (f === "k") opts.layout = "fitted"; else if (f === "S") opts.layout = "smushed"; else if (f === "o") opts.layout = "universal"; else if (f === "s") opts.layout = "default"; else if (f === "c") opts.align = "center"; else if (f === "r") opts.align = "right"; else if (f === "l") opts.align = "left"; else if (f === "R") opts.direction = "rtl"; else if (f === "L") opts.direction = "ltr"; else if (f === "p") opts.paragraph = true; else throw new Error(`unsupported flag -${f}`);}273 çıktının tamamı eşleşir. Test verilerini yeniden üretmek için figlet 2.2.5 sürümünü PATH ortam değişkeninize ekleyin ve bun run --cwd packages/font references komutunu çalıştırın.
Hücre ızgarasında yazı tipleri
Birlikte gelen her yazı tipi yazdırılabilir ASCII veya Latin-1 ile çizim yapar; dolayısıyla her alt karakter Menlo’da tam olarak bir hücre kaplar ve ızgaraya hizalanır. <FigletText>, satırlarını hücre cinsinden ölçer; böylece yazılar diğer tüm <Text> bileşenleri gibi bir flexbox layout’una yerleşir, columns ve align ise yazıları kutuları içinde kaydırır ve hizalar.
Her yazı tipi ayrı bir modüldür; bu nedenle bir uygulama yalnızca içe aktardığı yazı tiplerini içerir ve yazı tipi içe aktarılırken değil, ilk render sırasında ayrıştırılır. @textjs/font/all, galeriler için tüm yazı tiplerini dışa aktarır.
Diğer tüm FIGfont yazı tipleri çalışma zamanında alınıp ayrıştırılabilir:
import { parseFont } from "@textjs/font";const doom = parseFont(await (await fetch("/fonts/doom.flf")).text(), "Doom");Lisanslama
Birlikte gelen yazı tipleri, figlet-2.2.5.tar.gz dosyasındakilerle bayt düzeyinde aynıdır ve FIGlet’in BSD 3-Clause lisansı kapsamında dağıtılır. Her biri, katkıda bulunanlara ilişkin bilgileri font.comment üzerinden erişilebilen yorum satırlarında saklar. Doom, Larry 3D, ANSI Shadow ve Calvin S gibi yeniden dağıtım izni olmayan popüler yazı tipleri pakete dahil değildir.
Başvuru belgelerinin tamamı Yazı tipleri sayfasındadır.