@nina_kali_nina finishing off my research for 2025, to publish in one place:
- these were the only scalable fonts before TrueType in Windows 3.1 and free unlike ATM (Adobe Type Manager) using PostScript
- these #fonts were known as:
#outline
#scalable
#plotter
#vector or Vector Font File Format
#CONTINUOUSSCALING
"(All res)" in Windows registry
- came as
MODERN.FON
ROMAN.FON
SCRIPT.FON
- shared the .FON extension with bitmapped fonts, but not the .FNT extension, and #FNT can contain multiple #FON … which apparently had executable code … and were renamed .EXE files … ?? … holy attack surface, Batman!
- FNT follows KB65123
- apparently a utility called FNT2FON could create new ones … and here are all the ones from a "Hershey" collection in 1997: https://github.com/fontforge/fontforge/files/3450898/Hershey_FONs.zip
- great information here: https://github.com/fontforge/fontforge/issues/3841
- the Windows 1.03 SDK Programmer's Reference explains:
C.2.2 Vector Font File Format
The header information for a vector font file is as described in Section C.2, "Font File Formats."This section describes some additional information for vector font files.
The CharOffset field is used to specify the location and usage of the character strokes in the bitmap area. For fixed-pitch fonts, each two-byte entry is an offset from the start of the bitmap to the beginning of the strokes for the character. For variable-pitch fonts, each four-byte entry consists of two bytes giving the offset (as for fixed-pitch) and two bytes giving the width of the character.
For both fixed- and variable- pitch fonts, the bitmap area is the same. Each character is composed of a series of vectors consisting of a pair of signed relative coordinate pairs starting from the character cell origin. Each pair may be preceded by a special value indicating that the next coordinate is to be a pen-up move. The special pen-up value depends on how the coordinates are stored. For one-byte quantities, it is -128 (080H) and for two-byte quantities, it is -32768 (08000H). The character cell origin must be at the upper left corner of the cell so that the character hangs down and to the right of where it is placed.
The storage format for the coordinates depends on the size of the font. If either dfPixHeight or dfMax Width is greater than 128, the coordinates are stored as 2-byte quantities; otherwise, they are stored as 1-byte quantities.