Depending on how a driver is implemented and on the features of the underlying adapter, other DDI functions can be required. For example, if a driver manages its own surface (using EngCreateDeviceSurface to get a handle to the surface), that driver must also, at a minimum, support the following drawing functions:
Drivers that write to standard format DIBs usually allow GDI to manage most or all of these operations. Displays that support settable palettes must support the DrvSetPalette function. The list of conditionally required functions for all graphics drivers is in Conditionally Required Graphics Driver Functions.
Some display drivers manage fonts, although it is more common for a printer driver to do so. A display driver is not required to handle fonts unless it must draw its own fonts or those of the video hardware on a device-managed surface. If the hardware has a resident font, the display driver must supply information to GDI about this font. This information includes font metrics, mappings from Unicode to individual glyph identities, individual glyph attributes, and kerning tables. Therefore, if your display driver supplies fonts, it must support the DDI entry points in Conditionally Required Graphics Driver Functions that support fonts.