Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
Warning: Cannot modify header information - headers already sent by (output started at /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code:102) in /var/www/iplanru/data/www/intesco.ru/d59ed/index.php(1) : eval()'d code(2) : eval()'d code on line 4
The PSF file-format
(C) 1997 Yann Dirson
This file documents the PSF font-file-format, as understood by version 0.94
and above of the Linux console utilities ('kbd'). This file makes obsolete
the old `psffile.doc'.
This file has revision number 1.1, and is dated 1998/04/20.
Any useful additionnal information on PSF files would be great.
0. Changes:
1998/08/20: updated author's e-mail.
1998/08/20: History of the format from hpa himself.
1998/08/20: Fixed `filemode' description from hpa's input.
1. Summary
PSF stands for PC Screen Font.
A PSF file basically contains one character-font, whose width is 8 pixels,
ie. each scanline in a character occupies 1 byte.
It may contain characters of any height between 0 and 255, though character
heights lower than 8 or greater than 32 are not attested to exist or even be
useful [more info needed on this].
Fonts can contain either 256 or 512 characters.
The file can optionnally contain a unicode mapping-table, telling, for each
character in the font, which UCS2 characters it can be used to display.
The "file mode" byte controls font size (256/512) and whether file contains
a unicode mapping table.
2. History
The PSF file format was designed by H. Peter Anvin
in 1989 or so for his DOS screen font editor,
FONTEDIT.EXE. When he became involved with Linux, he used it for the
Linux font stuff he worked with, released a binary of FONTEDIT.EXE for
free distribution, and added the Unicode table to the spec.
3. Known programs understanding this file-format.
The following program in the Linux console utilities can read and/or write
PSF files:
setfont (R/W)
psfaddtable (R/W)
psfstriptable (R/W)
psfgettable (R)
4. Technical data
The file format is described here in sort-of EBNF notation. Upper-case
WORDS represent terminal symbols, ie. C types; lower-case words represent
non-terminal symbols, ie. symbols defined in terms of other symbols.
[sym] is an optional symbol
{sym} is a symbol that can be repeated 0 or more times
{sym}*N is a symbol that must be repeated N times
Comments are introduced with a # sign.
# The data (U_SHORT's) are stored in LITTLE_ENDIAN byte order.
psf_file = psf_header
raw_fontdata
[unicode_data]
psf_header = CHAR = 0x36 CHAR = 0x04 # magic number
filemode
fontheight
fontheight = CHAR # measured in scan lines
filemode = CHAR # 0 : 256 characters, no unicode_data
# 1 : 512 characters, no unicode_data
# 2 : 256 characters, with unicode_data
# 3 : 512 characters, with unicode_data
#
raw_fontdata = {char_data}*
char_data = {BYTE}*
#
unicode_data = { unicode_array psf_separator }*
unicode_array = { unicode } # any necessary number of times
unicode = U_SHORT # UCS2 code
psf_separator = unicode = 0xFFFF