SoundFont is a brand name that collectively refers to a file format and associated technology that uses sample-based synthesis to play MIDI files. It was first used on the Sound Blaster AWE32 sound card for its General MIDI support.
The newest version of the SoundFont file format is 2.04 (often incorrectly called 2.4). It is based on the RIFF format. A detailed description can be found in the specification, which is currently only available as a copy on various company sites, e.g. at http://www.synthfont.com/sfspec24.pdf (PDF; 518 kB; The document incorrectly claims to be for version 2.01 in the page footer.).
The original SoundFont file format was developed in the early 1990s by E-mu Systems and Creative Labs. A specification for this version was never released to the public. The first and only major device to utilize this version was Creative's Sound Blaster AWE32 in 1994. Files in this format conventionally have the file extension of .SBK or .SB2.
SoundFont 2.0 was developed in 1996. This file format generalized the data representation using perceptually additive real world units, redefined some of the instrument layering features within the format, added true stereo sample support and removed some obscure features of the first version whose behavior was difficult to specify. This version was fully disclosed as a public specification, with the goal of making the SoundFont format an industry standard. All SoundFont 1.0 compatible devices were updated to support the SoundFont 2.0 format shortly after it was released to the public, and consequently the 1.0 version became obsolete. Files in this and all other 2.x formats (see below) conventionally have the file extension of SF2.
Version 2.01 (usually, but incorrectly called 2.1) of the SoundFont file format was introduced in 1998 with an E-mu sound card product called the Audio Production Studio. The 2.01 version added features allowing sound designers to configure the way MIDI controllers influence synthesizer parameters. The 2.01 format is bidirectionally compatible with 2.0, which means that synthesizers capable of rendering 2.01 format will also by definition render 2.0 format, and synthesizers that are only capable of rendering 2.0 format will also read and render 2.01 format, but just not apply the new features.