Man Linux: Main Page and Category List


       bdf2psf - convert a BDF font to PSF format for the Linux console


       bdf2psf  [--fb]  [--log  logfile]  bdf{+bdf}  equivalence{+equivalence}
       symbols{+[:]symbols} size psf [sfm]


       The program bdf2psf translates BDF fonts  to  PSF  format.  It  accepts
       fonts with arbitrary size of the font matrix. If the width of the glyph
       matrix of the source font is 7 or 9 pixels then it generates fonts with
       width of 8 pixels.


       --fb   Generate  font  for  the  framebuffer.  There  are two important
              differences between the framebuffer and the  text  mode.  First,
              all  fonts in text mode have to have matrix 8 pixels width. They
              also have to have either 256 or 512 glyphs. Second, in most text
              modes  the  hardware  does  some  magic in order to use 8 pixels
              width fonts as if they were 9 pixels width. In order to  achieve
              this the video hardware copyes the 8th column in the 9th columnt
              of the glyphs with codes from 0xC0 to 0xDF  and  from  0x1C0  to
              0x1DF.   Bdf2psf  is very careful when deciding where to place a
              particular glyph and as a result the encoding of  the  generated
              font is more or less arbitrary.

       --log logfile
              Record in the file logfile any problems during the conversion.

              The  "+"-separated  list  of  the  source  BDF  font(s).  When a
              particular symbol is defined in more than one of  the  specified
              fonts then fonts listed first take precedence.

              A  "+"-separated  list of files defining an equivalence relation
              between the glyphs. See the section EQUIVALENCE FILES below.

              A "+"-separated list of files describing  character  sets.   The
              generated  font will support all specified character sets.  When
              there is no space in the PSF font for all symbols, the character
              sets  listed  first  take  precedence.   When  a  colon before a
              character set is  specified  no  warnings  will  be  issued  for
              symbols  that  could  not be placed in the font. See the section
              CHARACTER SETS below.

       size   The size of the PSF font. Usually 256 or 512 glyphs.

       psf    The name of the generated  font.   If  a  file  with  this  name
              already exists it will be overwritten.

       sfm    Save  in  the  file  sfm  the  SFM  of  the generated font. This
              parameter is optional.


       The encodings of  the  traditional  console  fonts  a  similar  to  the
       standard  encodings  of the different languages.  For example there are
       fonts for all variants of ISO 8859.  This is redundand, for example ISO
       8859-1,  ISO  8859-9  and ISO 8859-15 differ only by few characters and
       can be easyly covered by only one font.

       In order to determine the minimal set of character  sets  a  clustering
       algorithm  has  been used. The source code of fontconfig contains lists
       of the characters that most languages require - one list per  language.
       We  started with one character set per language and used the clustering
       algorithm in order to join the character sets to bigger.  The character
       sets  described  in  files installed in the directory fontsets were the
       result of the algorithm.  These files list the unicodes of the  symbols
       of the character set, one per line. Comments starting with a sharp sign
       are also allowed.

       There two more special character sets in  the  files  required.set  and
       useful.set.   The  first  of  them lists the symbols that every console
       font is obligated to support. There two classes of obligatory symbols -
       the  ASCII  symbols  and  the  symbols  from  the  so  called alternate
       character set (see section "Line  Graphics"  of  terminfo(5)).   Notice
       that  in  order  to  limit itself to the cp437 character set, the Linux
       console driver  does  some  approximations  of  the  symbols  from  the
       alternate  character  set.  For  example it prints U+256A (BOX DRAWINGS
       VERTICAL SINGLE AND HORIZONTAL DOUBLE) instead of the  not-equal  sign.
       The  file  required.set  lists  the  symbols  used by the Linux console
       driver (i.e. U+256A instead of the not-equal sign).

       In most  cases  there  is  more  available  space  in  the  fonts  than
       necessary.  The  spare  codes  can  be filled with the symbols from the
       useful.set special character set.  It is  convenient  to  use  a  colon
       before  the  name  of  useful.set  on the command line of bdf2psf so no
       warnings are issued when there is no space in  the  font  for  some  of
       these symbols.


       The  equivalence files define an equivalence relation between unicodes.
       The sharp sign is used for comments, the empty lines are  ignored.  All
       other  lines  should list two or more unicodes.  Only one glyph will be
       allocated in the PSF font for these unicodes.


            U+2126 U+03A9
            # U+2126:   OHM SIGN
            # U+03A9:   GREEK CAPITAL LETTER OMEGA
            U+041D U+0048
            # U+041D:   CYRILLIC CAPITAL LETTER EN
            # U+0048:   LATIN CAPITAL LETTER H

       This equivalence file says  that  U+2126  (the  Ohm  sign)  and  U+03A9
       (Omega)  have  the  same look so only one glyph is enough for them. And
       also U+041D (Cyrillic En) and U+0048 (Latin H) look the same.

       Two  equivalence  files  are  provided   -   standard.equivalents   and
       arabic.equivalents.   The  first  one  can  be used for all fonts.  The
       purpose of the second is to reduce the number of the  necessary  glyphs
       for  the  Arabic letters at the cost of the font quality.  It should be
       used only for fonts that have to support Arabic but there is not enough
       space  in  the  PSF font for all Arabic characters.  The Uni1 character
       set is a character set that requires arabic.equivalents.


       All  mentioned  files  and  directories  are   usually   installed   in
       /usr/share/bdf2psf or /usr/local/share/bdf2psf.


       Anton Zinoviev <>