next up previous index
Következő: 13.3.9 Mit tud ez Fel: 13.3 Egy kis Linux Előző: 13.3.7 Console font formátumok:   Index


13.3.8 Hogyan csinálok/hackelek fontot?

Ezt a részt kicsit tapasztaltabb medvevadászoknak ajánlom. A shell parancsokat nem teszteltem, és bár ilyesmiket használtam, nem kizárt az elgépelés... Általában a paraméterek a 16 pixel magas fontokra ,,ülnek'', 14/8 pixelre ,,portolni kell''. :)

Állítólag van DOS-os font editor, de egy igazi harcos sosem nyúlna ehhez. Az SVGATextMode csomag /contrib/changefont alkönyvtárában lévő ,,dump.c'' és ,,undump.c'' programokkal szövegfájlt készítünk a fontból. Valahogy így:

$ mkdir work/font
$ cp work/font
$ dump <../azenyém.fnt | sed 's/ /./g' | split -16
A font ne legyen a work/font alkönyvtárban, csak probléma van vele. Ha nincs ,,sed'' (micsoda ?!), akkor ,, tr ' ' '.' '' is megteszi.
$ set *; for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f; do
for j in 0 1 2 3 4 5 6 7 8 9 0 a b c d e f; do
mv $1 $i$j; shift
done; done

És már kész is vannak kicsi fájlocskák, a fájl neve a betű hexakódja, a fájl tartalma maga a betű. Szövegszerkeszthető, másolható, miegymás. A nagy munka közben érdemes néha leellenőrizni a fájlok számát:

$ echo * | wc -w

Meg azt is, hogy valamelyik fájl mérete nem változott-e meg:

$ ls -al | grep -v 144

Jó szolgálatot tehet a Midnight Commander. (pl. %s helyettesítés, stb.) A font összetákolása:

$ cat * | sed 's/\./ /g' | undump >../azenyém.version0.1.fnt
illetve:
$ cat * | tr '.' ' ' | undump >../azenyém.version0.1.fnt

Ebből .psf így készíthető:

$ dd if=../egy.bármilyen.16.pixel.magas.psf bs=1 count=4 >../psfheader
$ cat ../psfheader ../azenyém.fnt >../azenyém.psf

Érdemes csinálni egy fájlt, amiben az összes nyomtatható karakter benne van, szépen hexa táblázatban (13.1. kép):

Kép: Nyomtatható karakterek hexában

Ilyesmi gyártható a:

$ hexdump -e '"%02.2_ax  " 4/1 "%c" " " 4/1 "%c" " " 4/1 "%c" " " 4/1
"%c" " " "\n"' 256 >256.x
paranccsal, persze csak akkor, ha már van egy fájlunk, ami szépen sorban tartalmazza a 0..255 karaktereket. Hogy honnan legyen ilyen? Nem kell C programot írni, MÉG MIELŐTT HOZZÁKEZDENÉNK AZ EGÉSZ FONTPISZKÁLÁSHOZ:
$ echo -e '\033(U'
$ mapscrn -o 256

És a biztonság kedvéért ezt is írassuk ki hexdumppal...

Bocs a szómenésért, de ez volt a legérdekesebb rész. :) A többit a fantáziátokra bízom. Jó szórakozást!


next up previous index
Következő: 13.3.9 Mit tud ez Fel: 13.3 Egy kis Linux Előző: 13.3.7 Console font formátumok:   Index

1999-09-17