Project Info: Sourceforge project site
Software Download: Sourceforge download site
well nafe is no consolefont editor, but a toolset to translate psf format consolefonts into text files and text files into psf files the advantage is that you can edit the font in the text file easily with any text editor (not provided by nafe) so you are independent from your actual terminal hardware and dont need stuff like svgalib nafe understands and creates psf mode 1 and mode 2 files files in this directory: txt2psf.c source of txt2psf psf2txt.c source of psf2txt Makefile gnu makefile, run "make all" to compile COPYING the GPL ChangeLog a ChangeLog readme.txt Documantation (the stuff you are reading right now) demofont.txt 6x6 pixel demo font text file demofont.map unicode map for lat01 mapping for this font demo6x6.psfu compiled demofont with 6x6 size demo8x6.psfu same font but as 8x6 psf mode 1 file nafes its functionality can easily described with an example first you might want to have a template for font editing so we create a font txt file usually the consolke font files sit gzipped in /usr/share/consolefonts so we extract one of those > cat /usr/share/consolefonts/default8x9.psfu.gz |gunzip >default8x9.psfu then we save the unicode map stored in the .psfu file > psfgettable default8x9.psfu unicode.map then we extract the font data into a text file > psf2txt default8x9.psfu fontfile.txt >NAFE v 0.1 -- not another font editor! >Copyleft 2004 by Corvus Corax >Distributed under GPL -- NO WARRANTY! >parsing psf mode 1 font file >writing 256 characters with 8 x 9 >.................................................................... >.................................................................... >.................................................................... >.................................................... >success :-) after editing the font you can safe it under newfont.psf > txt2psf fontfile.txt newfont.psf >NAFE v 0.1 -- not another font editor! >Copyleft 2004 by Corvus Corax >Distributed under GPL -- NO WARRANTY! >reading 256 characters with 8 x 9 >writing psf mode 1 font file > 0+---000-0x00-''- > 1+---001-0x01-''- > 2+---002-0x02-''- ... ... >253+---253-0xfd-'ý'- >254+---254-0xfe-'þ'- >255+---255-0xff-'ÿ'- > >success :-) and add an optional unicode mapping table to it if you want > psfaddtable newfont.psf unicode.map newfont.psfu you can load and display that newly created font with "setfont" > setfont newfont.psfu so to edit the font lets have a look at those text files fontfile.txt: line content 001 identification string |++font-text-file 002 ID (required) |++chars 003 characters in fontfile |256 004 ID (required) |++width 005 width of 1 char in pixel |8 006 ID (required) |++height 007 height of 1 char in pixels |9 008 character separator |++---000-0x00-''- 009 character data | ... ... 668 character separator |++---066-0x42-'B'- 669 character data |XXXXXX 670 each non-blank | XX XX 671 indicates | XX XX 672 a pixel which is set | XXXXX 673 | XX XX 674 valid chars are | XX XX 675 everything except '+' |XXXXXX 676 which indicates | 677 the | 678 character separator |++---067-0x43-'C'- 679 of the next character | XXXX 680 | XX XX 681 |XX 682 |XX 683 |XX 684 | XX XX 685 | XXXX 686 | 687 | 688 |++---068-0x44-'D'- ... to make creation of new fonts easier and alterations in character height and width less problematic, the parser fills missing colums and rows with blanks and ignores extra characters or lines within a char every line starting with "++" is a separator and starts the next char you need as many of those separator lines as the character count value in the "header" specifies -- otherwise txt2psf will create an error the following expressions are treated the same > "++---000-0x00-''-" > " " > " " > " " > " " > " " > " " > " " > " " > " " > "++---001-0x01-''-" is equivalent to > "++char0" > "" > "" > "" > "" > "" > "" > "" > "" > "" > "++char1" or even "++" "++" and instead of > "++---039-0x27-'''-" > " XX " > " XX " > "XX " > " " > " " > " " > " " > " " > " " > "++---040-0x28-'('-" you can have > "++---high-commata" > " XX" > " XX" > "XX" > "++---openbracket" or even > "++ " > " XX " > " XX " > "XX " > "" > "" > "" > "" > "" > "" > " " > "" > " " > "" > "" > "" > "" > "" > "++" (as long as you use only blanks for blanks and not tabs, a tab would be considered as a single SET pixel, not as 8 (or whatever) UNSET pixels as you might expect) this behaviour can be used to skip unused chars fast in your own file or to alter the height and width of a font without changing the characters for example changing only > ++font-text-file > ++chars > 256 > ++width > 8 > ++height > 9 > ++---000-0x00-''- into > ++font-text-file > ++chars > 256 > ++width > 8 > ++height > 12 > ++---000-0x00-''- would produce a font with relatively big spacers between lines ;) ok while at this point even the slowest DAU might have checked how it works while the more intelligent readers got confused by to much irrelevant information, let me add a note about psf font files: there are 2 types of psf files, which each can have an optional unicode mapping table at their end (which is ignored by nafe) mode 1 has always 8 pixel character width and either 256 or 512 characters in total its the "standard" since these font files can be loaded into the ordinary VGA graphic adaptor text mode mode 2 can have any character width and count, and may or may not be able to load depending on graphic hardware and driver. under linux you need the framebuffer device to load any font with anything else than 8 pixel character width, but depending on the used video modes still not all combination might work see the manpages of setfont psfgettable psfaddtable and the kernel documantation on framebufer devices for details psf2txt can read both mode 1 and mode 2 font files txt2psf will create a mode 1 font if the width is 8 and the font has 256 or 512 characters in total and a mode 2 font if not. Have fun creating some fonts Corvus Corax