This is an old revision of the document!
This call downloads a display font. The font being set must be compatible with the current mode.
Syntax
VioSetFont (RequestBlock, VioHandle)
Parameters
;RequestBlock (PVIOFONTINFO) - input: Address of the font structure containing the request. ;VioHandle (HVIO) - input: Reserved word of 0s.
Return Code
;rc (USHORT) - return:Return code descriptions are: *0 NO_ERROR *355 ERROR_VIO_MODE *421 ERROR_VIO_INVALID_PARMS *436 ERROR_VIO_INVALID_HANDLE *438 ERROR_VIO_INVALID_LENGTH *465 ERROR_VIO_DETACHED *467 ERROR_VIO_FONT *468 ERROR_VIO_USER_FONT *494 ERROR_VIO_EXTENDED_SG
Remarks
VioSetFont is applicable only for the enhanced graphics adapter, VGA or IBM Personal System/2 Display Adapter.
;Note: Although graphics mode support is provided in VioSetFont, this support is not provided by the Base Video Handlers provided with OS/2.
When VioSetFont is issued, the current code page is reset. If VioGetCp is subsequently issued, the error code ERROR_VIO_USER_FONT is returned. Return code, ERROR_VIO_USER_FONT represents a warning. It indicates that although the font could not be loaded into the adapter using the current mode, the font was saved as part of a special user font code page for use with a later VioSetMode. Successfully setting a user font sets the special user font code page, just as if a code page of -1 was specified using VioSetCp.
The user font code page consists of the most recent user font of each size that was set by VioSetFont. For example, if two 8×12 fonts and three 8×16 fonts had been set, only two fonts, the most recent of the 8×12 and 8×16 fonts, would be saved.
The special code page is used in the same way as those code pages specified on the CODEPAGE = statement in CONFIG.SYS.
Bindings
C
<PRE> typedef struct _VIOFONTINFO{ /* viofi */
USHORT cb; /* length of this structure */ USHORT type; /* request type */ USHORT cxCell; /* pel columns in character cell */ USHORT cyCell; /* pel rows in character cell */ PVOID pbData; /* requested font table (returned) */ USHORT cbData; /* length of caller supplied data area (in bytes) */
} VIOFONTINFO;
#define INCL_VIO
USHORT rc = VioSetFont(RequestBlock, VioHandle);
PVIOFONTINFO RequestBlock; /* Request block */ HVIO VioHandle; /* Video handle */
USHORT rc; /* return code */ </PRE>
MASM
<PRE> VIOFONTINFO struc
viofi_cb dw ? ;length of this structure viofi_type dw ? ;request type viofi_cxCell dw ? ;pel columns in character cell viofi_cyCell dw ? ;pel rows in character cell viofi_pbData dd ? ;requested font table (returned) viofi_cbData dw ? ;length of caller supplied data area (in bytes)
VIOFONTINFO ends
EXTRN VioSetFont:FAR INCL_VIO EQU 1
PUSH@ OTHER RequestBlock ;Request block PUSH WORD VioHandle ;Video handle CALL VioSetFont
Returns WORD </PRE>