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-FileThe .FNT File FormatFilenames 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 DataThe 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 TableThe 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 TableThe 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.