Using a Stock Font to Draw Text
Windows provides six stock fonts. A stock font is a logical font that an application can obtain by calling the GetStockObject function and passing a value that identifies the requested font. The following list contains the six values that you can specify to obtain a stock font.
Value | Meaning |
ANSI_FIXED_FONT | Specifies a monospace font based on the Windows character set. A Courier font is typically used. |
ANSI_VAR_FONT | Specifies a proportional font based on the Windows character set. MS Sans Serif is typically used. |
DEVICE_DEFAULT_FONT | Specifies the preferred font for the given device. This is typically the System font for display devices; however, for some dot-matrix printers this is a font that is resident on the device. (Printing with this font is usually faster than printing with a downloaded, bitmapped font). |
OEM_FIXED_FONT | Specifies a monospace font based on an OEM character set. For IBM® computers and compatibles, the OEM font is based on the IBM PC character set. |
SYSTEM_FONT | Specifies the System font. This is a proportional font based on the Windows character set, and is used by the operating system to display window titles, menu names, and text in dialog boxes. The System font is always available. Other fonts are available only if they have been installed. |
SYSTEM_FIXED_FONT | Specifies a monospace font compatible with the System font in Windows versions earlier than 3.0. |
The following example retrieves a handle of the Windows variable stock font, selects it into a device context, and then writes a string using that font:
HFONT hfnt, hOldFont;
hfnt = GetStockObject(ANSI_VAR_FONT);
if (hOldFont = SelectObject(hdc, hfnt)) {
TextOut(hdc, 10, 50, "Sample ANSI_VAR_FONT text.", 26);
SelectObject(hdc, hOldFont);
}
If other stock fonts are not available, GetStockObject returns a handle to the System font (SYSTEM_FONT). You should use stock fonts only if the mapping mode for your application's device context is MM_TEXT.