•  Back 
  •  Native File Formats 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  %About 
  •  Show info about hypertext 
  •  View a new file 
Topic       : The ATARI Compendium
Author      : Scott Sanders / JAY Software
Version     : 1.25 (20/6/2003)
Subject     : Documentation
Nodes       : 1117
Index Size  : 32614
HCP-Version : 6
Compiled on : Atari
@charset    : UTF-8
@lang       : en
@default    : 
@help       : %About
@options    : +g -i -t4 +y +z
@width      : 100
View Ref-File
                            The .FNT File Format


Filenames ending with the extension '.FNT' represent bitmap font files.
These files may be utilized by loading them through any version of GDOS.
FNT files are composed of a file header, font data, a character offset
table, and (optionally) a horizontal offset table.
The FNT Header

Font files begin with a header 88 BYTEs long. WORD and LONG format
entries in the header must be byte-swapped as they appear in Intel
('Little Endian') format (see FONT_HDR structure).
The font header is formatted as follows:

BYTE(s)    Contents                                       Related VDI Call

 0 -  1    Face ID (must be unique).                      vqt_name()

 2 -  3    Face size (in points).                         vst_point()

 4 - 35    Face name.                                     vqt_name()

36 - 37    Lowest character index in face (usually 32     vqt_fontinfo()
           for disk-loaded fonts).

38 - 39    Highest character index in face.               vqt_fontinfo()

40 - 41    Top line distance expressed as a positive      vqt_fontinfo()
           offset from baseline.

42 - 43    Ascent line distance expressed as a positive   vqt_fontinfo()
           offset from baseline.

44 - 45    Half line distance expressed as a positive     vqt_fontinfo()
           offset from baseline.

46 - 47    Descent line distance expressed as a positive  vqt_fontinfo()
           offset from baseline.

48 - 49    Bottom line distance expressed as a positive   vqt_fontinfo()
           offset from baseline.

50 - 51    Width of the widest character.                 N/A

52 - 53    Width of the widest character cell.            vqt_fontinfo()

54 - 55    Left offset.                                   vqt_fontinfo()

56 - 57    Right offset.                                  vqt_fontinfo()

58 - 59    Thickening size (in pixels).                   vqt_fontinfo()

60 - 61    Underline size (in pixels).                    vqt_fontinfo()

62 - 63    Lightening mask (used to eliminate pixels,     N/A
           usually 0x5555).

64 - 65    Skewing mask (rotated to determine when to     N/A
           perform additional rotation on a character
           when skewing, usually 0x5555).

66 - 67    Font flags as follows:                         N/A

             Bit  Meaning (if Set)
              0   Contains System Font
              1   Horizontal Offset Tables
                  should be used.
              2   Font data need not be byte-swapped.
              3   Font is mono-spaced.

68 - 71    Offset from start of file to horizontal        vqt_width()
           offset table.

72 - 75    Offset from start of file to character offset  vqt_width()
           table.

76 - 79    Offset from start of file to font data.        N/A

80 - 81    Form width (in bytes).                         N/A

82 - 83    Form height (in scanlines).                    N/A

84 - 87    Pointer to the next font (set by GDOS after    N/A
           loading).

Font Data

The binary font data is arranged on a single raster form. The raster's
height is the same as the font's height. The raster's width is the sum of
the character width's padded to end on a WORD boundary.

There is no padding between characters. Each character may overlap BYTE
boundaries. Only the last character in a font is padded to make the width
of the form end on an even WORD boundary.

If bit #2 of the font flags header item is cleared, each WORD in the font
data must be byte-swapped.

Character Offset Table

The Character Offset Table is an array of WORDs which specifies the
distance (in pixels) from the previous character to the next. The first
entry is the distance from the start of the raster form to the left side
of the first character. One succeeding entry follows for each character in
the font yielding (number of characters + 1) entries in the table. Each
entry must be byte-swapped as it appears in Intel ('Little Endian')
format.

Horizontal Offset Table

The Horizontal Offset Table is an optional array of positive or negative
WORD values which when added to the values in the character offset table
yield the true spacing information for each character. One entry appears
in the table for each character. This table is not often used.