Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

159 lines
5.8 KiB

/******************************** MODULE HEADER *****************************
* fontinst.h
* Structures used to determine the file layout of files generated
* by any font installers, and then read by us.
*
* HISTORY:
* 15:53 on Mon 02 Mar 1992 -by- Lindsay Harris [lindsayh]
* First version.
*
* Copyright (C) 1992 Microsoft Corporation.
*
****************************************************************************/
/*
* Define the structure that heads each record in the font installer
* files. Basically it contains selection information and offsets
* to the remaining data in this record.
* This structure is actually written to the file. It is also the header
* employed in the font resources in minidrivers - each font has one of these
* at the beginning.
*/
//Reduced from 4 to three as WFontType is added.
//Reducde from three to two when dwETM was added
#define EXP_SIZE 2 /* DWORDS allowed for future expansion */
typedef struct
{
WORD cjThis; /* Our size, for consistency checking */
WORD wFlags; /* Miscellaneous information */
DWORD dwSelBits; /* Font availability information */
DWORD dwIFIMet; /* Offset to the IFIMETRICS for this font */
DWORD dwCDSelect; /* How to select/deselect this font */
DWORD dwCDDeselect;
DWORD dwWidthTab; /* Width vector (proportional font) else 0 */
DWORD dwIdentStr; /* Identification string */
union
{
short sCTTid; /* Index into CTT data */
DWORD dwCTT; /* Offset here to mapping data of some sort */
} u;
WORD wXRes; /* Resolution used for font metrics numbers */
WORD wYRes; /* Ditto for the y coordinates */
short sYAdjust; /* Adjust Y position before output - for */
/* double height characters on dot matrix */
short sYMoved; /* Cursor has shifted after printing font */
short fCaps; /* Capabilities flags */
WORD wPrivateData; /* Special purpose: e.g. DeskJet permutations */
WORD wFontType; /* Type of Device font */
WORD wReserved; /* reserved for future use */
DWORD dwETM; /* offset to ETM for this font 0 if there are none*/
DWORD dwMBZ[ EXP_SIZE ]; /* Must Be Zero: in case we need space */
} FI_DATA_HEADER;
/*
* The version ID.
*/
#define FDH_VER 0x100 /* 1.00 in BCD */
/*
* Flags bits.
*/
#define FDH_SOFT 0x0001 /* Softfont, thus needs downloading */
#define FDH_CART 0x0002 /* This is a cartridge font */
#define FDH_CART_MAIN 0x0004 /* Main (first) entry for this cartridge */
/*
* Selection criteria bits: dwSelBits. These bits are used as
* follows. During font installation, the installer set the following
* values as appropriate. During initialisation, the driver sets
* up a mask of these bits, depending upon the printer's abilities.
* For example, the FDH_SCALABLE bit is set only if the printer can
* handle scalable fonts. When the fonts are examined to see if
* they are usable, the following test is applied:
*
* (font.dwSelBits & printer.dwSelBits) == font.dwSelBits
*
* If true, the font is usable.
*/
#define FDH_LANDSCAPE 0x00000001 /* Font is landscape orientation */
#define FDH_PORTRAIT 0x00000002 /* Font is portrait */
#define FDH_OR_REVERSE 0x00000004 /* 180 degree rotation of above */
#define FDH_BITMAP 0x00000008 /* Bitmap font */
#define FDH_COMPRESSED 0x00000010 /* Data is compressed bitmap */
#define FDH_SCALABLE 0x00000020 /* Font is scalable */
#define FDH_CONTOUR 0x00000040 /* Intellifont contour */
#define FDH_ERROR 0x80000000 /* Set if some error condition */
/*
* The following structure should be returned from the specific
* minidriver to the common font installer code. It is used by
* the common font installer code to generate the above structure
* which is then placed in the font file.
*/
typedef struct
{
void *pvData; /* Address of data of importance */
int cBytes; /* Number of bytes in the above */
} DATA_SUM;
typedef struct
{
DATA_SUM dsIFIMet; /* IFIMETRICS */
DATA_SUM dsSel; /* Selection string/whatever */
DATA_SUM dsDesel; /* Deselection string */
DATA_SUM dsWidthTab; /* Width tables (proportional font) */
DATA_SUM dsCTT; /* Translation data */
DATA_SUM dsIdentStr; /* Identification string (Dialog box etc) */
DATA_SUM dsETM; /* EXTENDED TEXT METRICS */
DWORD dwSelBits; /* Font availability information */
WORD wVersion; /* Version ID */
WORD wFlags; /* Miscellaneous information */
WORD wXRes; /* X resolution of font */
WORD wYRes; /* Y resolution */
short sYAdjust; /* Adjust Y position before output - for */
/* double height characters on dot matrix */
short sYMoved; /* Cursor has shifted after printing font */
WORD fCaps; /* Font/device caps */
WORD wFontType; /* Type of Device font */
WORD wPrivateData; /* Pad to DWORD multiple */
} FI_DATA;
/*
* RELATED FUNCTION PROTOTYPES.
*/
/*
* The function used to take an FI_DATA structure and write its contents
* to the file whose handle is passed in. The data is written out as
* an FI_DATA_HEADER structure.
*/
int iWriteFDH( HANDLE, FI_DATA * );