How Windows 3.11 Stored Fonts in the System Directory
In Microsoft Windows 3.11, font management relied on a combination of
16-bit executable resource files stored primarily in the
C:\WINDOWS\SYSTEM directory and text-based configuration
entries inside WIN.INI. Unlike modern operating systems
that deploy unified OpenType font stores and centralized system
registries, Windows 3.11 differentiated between raster, vector, and
TrueType fonts using dedicated file formats—specifically
.FON, .FOT, and .TTF
files—packaged as New Executable (NE) structures to interface directly
with the Graphics Device Interface (GDI).
Raster and Vector Fonts (.FON Files)
Screen fonts, system dialog typography, and legacy vector fonts were
compiled directly into .FON files located within the
SYSTEM directory. Common examples included
VGASYS.FON, SSERIFE.FON, and
MODERN.FON.
Architecturally, a .FON file was not a raw font data
stream; it was an empty Windows 16-bit Dynamic Link Library (DLL)
adhering to the New Executable (NE) format. It contained no executable
machine code, but instead housed font data within its read-only resource
table:
RT_FONTDIR(Resource Type 0x2007): A directory structure listing the metrics, font type, character pitch, and face names of all font variations bundled within the file.RT_FONT(Resource Type 0x2008): The raw character bitmap tables or stroke vectors containing the glyph descriptions.
Because these resources were standard Windows DLL payloads, the GDI module could page individual glyph resources in and out of 16-bit memory via standard Windows resource-loading functions without reading the entire font file at once.
TrueType Implementation (.FOT and .TTF Files)
Windows 3.1 introduced native support for scalable TrueType outlines,
handled through a two-file architecture within the SYSTEM
folder:
.TTFFiles: The raw TrueType outline data file containing standard TrueType tables such ascmap(character-to-glyph mapping),glyf(glyph outlines), andhead(font header)..FOTFiles: TrueType Font resource headers.
Windows 3.11 did not load .TTF files directly into the
GDI font table. When a user installed a TrueType font through the
Control Panel, Windows generated a small (typically 1 to 2 KB)
.FOT file inside the SYSTEM directory. The
.FOT file was structured as an NE format resource
containing metadata, the font family name, licensing flags, and an
internal hardcoded file pointer indicating the exact physical path to
the corresponding .TTF file. This architecture allowed the
heavy outline files (.TTF) to remain either in the
SYSTEM directory or on remote network shares and external
media, while the operating system loaded the lightweight
.FOT stub into memory.
Mapping Font Files via WIN.INI
The cataloging of font files stored in SYSTEM was
governed by the initialization file WIN.INI rather than the
Windows Registration Database (REG.DAT).
During startup, GDI.EXE parsed the [fonts]
section of C:\WINDOWS\WIN.INI. This section created a
direct 1-to-1 link between the user-facing descriptive name and the file
residing in the SYSTEM directory:
[fonts]
Arial (TrueType)=ARIAL.FOT
Courier 10,12,15 (VGA res)=COURF.FON
MS Sans Serif 8,10,12,14,18,24 (VGA res)=SSERIFE.FON
Times New Roman (TrueType)=TIMES.FOTIf a path was omitted from the right-hand side of the declaration,
Windows defaulted to searching the C:\WINDOWS\SYSTEM
directory. For raster fonts, GDI loaded the metrics directly from the
referenced .FON file. For TrueType fonts, GDI read the
referenced .FOT file, extracted the pointer to the
.TTF file, and initialized the TrueType rasterizer engine
to generate dynamic bitmaps at runtime.