How Windows 95 Managed Print Jobs with EMF

Windows 95 transformed personal computing by introducing Enhanced Metafile (EMF) spooling, a system designed to drastically reduce the time users spent waiting for print jobs to finish. By capturing graphical print commands in a compact, device-independent format instead of rendering final printer-specific data immediately, Windows 95 allowed applications to quickly relinquish control back to the user. This article explains how the 32-bit print subsystem handled EMF files, separated application processing from printer rendering, and streamlined document output in the background.

The Shift from Windows 3.1 RAW Spooling

In Windows 3.1, printing typically relied on RAW spooling. When a user printed a document, the application and the Graphics Device Interface (GDI) had to translate every font, line, and image into the printer’s native language (such as PCL or PostScript) or a fully rendered bitmap before spooling. Because printer drivers processed this heavy data synchronously within the application's process space, the user interface remained frozen until the driver finished processing every page.

Windows 95 solved this bottleneck by introducing EMF spooling as the default print architecture for non-PostScript printers.

How the EMF Spooling Process Worked

The EMF spooling workflow operated in distinct stages, separating the application's document creation from the physical printing process:

  1. Recording GDI Commands: When an application initiated a print command, GDI did not immediately call the printer driver to rasterize the output. Instead, GDI intercepted the drawing commands—such as text strings, vector lines, and shapes—and recorded them directly into an Enhanced Metafile (.emf) on disk.
  2. Immediate Return of Control: Because recording high-level drawing calls requires far less processing power and storage than rendering full-page bitmaps, the spool file was generated in a fraction of the time required by RAW printing. Once the metafile was written, the application closed the print job, freeing the user to continue working.
  3. Background Playback via the 32-Bit Spooler: The Windows 95 32-bit print spooler (SPOOL32.EXE) took over the job in a dedicated background thread. It read the EMF file and "played back" the stored GDI calls to the specific printer driver.
  4. Rendering to RAW Data: During playback, the printer driver translated the device-independent EMF instructions into the printer's native page-description language or bitmap format.
  5. Port Transmission: The rendered data was sent to the designated local port (typically LPT1) or network queue via a background port monitor without interrupting foreground applications.

Key Benefits of EMF in Windows 95

  • True Multitasking: Running as a separate thread, the spooler leveraged the preemptive multitasking of Windows 95, preventing the print subsystem from monopolizing CPU cycles.
  • Smaller Spool Files: Storing vector-based GDI instructions created significantly smaller temporary files on disk compared to multi-megabyte uncompressed raster bitmaps.
  • Device Independence: Because the initial spool file was stored as general GDI instructions, the print subsystem maintained consistent document layout, offloading color conversion, dithering, and resolution scaling entirely to the background driver playback phase.